При обновлении страницы (по нажатию определенной кнопки) сиссия каждый раз обновляется, то есть старое значение, сохраненное в ней, я не могу использовать (для того, чтобы, к примеру, накопить сумму чего-либо), хотя вчера этот же код отлично работал и все накапливал, а сегодня — не работает. И еще вылетает ошибка:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at S:\home\shop.by\www\pages\Items\itemsHandler.php:1) in S:\home\shop.by\www\pages\Items\itemsHandler.php on line 1
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at S:\home\shop.by\www\pages\Items\itemsHandler.php:1) in S:\home\shop.by\www\pages\Items\itemsHandler.php on line 1
Почитал на форумах про похожие проблемы, но у меня на первый взгляд все в порядке (мне так кажется). Возможно, это из-за того, что я отправляю данные методом POST в form.
Как же решить эту проблему?
<?php session_start();
$db =fopen("../../DB/DBItems.txt", "rt");
if ($db)
while ( $itemInfo = fscanf($db, "%s%d") ){
list($name,$price) = $itemInfo;
$_ITEMS[$name] = $price;
if ($name == $_POST['Button']){
if (!isset($_SESSION['total']))
$_SESSION['total'] = 0;
else
$total =$_SESSION['total'];
if (!isset($_SESSION['countItems[]']))
$_SESSION['countItems[]'] = 0;
else
++$_SESSION['countItems[]'];
$total +=$price;
$_SESSION['total'] = $total;
}
}
else
echo "Ошибка при открытии файла";
fclose($db);?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="../../css/header.css">
<link rel="stylesheet" href="../../css/index.css">
<link rel="stylesheet" href="../../css/index_footer.css">
<link rel="stylesheet" href="../../css/tovarExample/content.css">
<title>Shop.by</title>
</head>
<body>
<div id="wrapper">
<header>
<div class="headwrapper">
<div class="BottomLine">
<div id="logo"> <h2>BIRUANG</h2></div>
<ul class="info">
<li>+375 29 145 89 88</li>
<li>karas-lost@mail.ru</li>
<div class="BorderBasketLetter">
<li>
<a href="basket/basketHandler.php">
<img src="../../image/header/basket2.png" width="23" height="23" alt="Basket">
</a>
<div class="amountOfItemsInBasket">
<?php echo $_SESSION['countItems[]'];?>
</div>
<span>
<?php
echo "$total $";
?>
</span>
</li>
<li><span>CHECKOUTS</span><img src="../../image/header/letter.png" width="23" height="23" alt=""></li>
</div>
</ul>
</div>
<nav id="menu">
<ul>
<li id="beginLi">HOME</li>
<li>MEN
<!--<ul class="submenu">
<li>Список 1</li>
<li>Список 2</li>
<li>Список 3</li>
<li>Список 4</li>
<li>Список 5</li>
</ul>-->
</li>
<li>WOMEN
<!--<ul class="submenu">
<li>Список 1</li>
<li>Список 2</li>
<li>Список 3</li>
<li>Список 4</li>
<li>Список 5</li>
</ul>-->
</li>
<li>KIDS
</li>
<li>SALE</li>
<li>ABOUT US</li>
<li>SUPPORT</li>
<li>
<input type="text"></input>
</li>
</ul>
</nav>
</div>
</header>
<!-- End Header-->
<div id="content">
<figure>
<img src="../../image/pages/tovarExample/Image.jpg" alt="">
<figcaption>
<p>Продолжение культовой книги "Тренировочная зона" Пола «Тренера» Уэйда посвящено продвинутым техникам тренировок с собственным весом для развития предельной силы и мышц. </p>
<p class="price">
Цена = <? echo $_ITEMS['Ball'].' $'?>
</p>
<form method="POST" action="itemsHandler.php">
<input type="submit" name="Ball" value="Купить">
<input type="hidden" name="Button" value="Ball">
</form>
</figcaption>
</figure>
<figure>
<img src="../../image/pages/tovarExample/Image.jpg" alt="">
<figcaption>
<p>Продолжение культовой книги "Тренировочная зона" Пола «Тренера» Уэйда посвящено продвинутым техникам тренировок с собственным весом для развития предельной силы и мышц. </p>
<p class="price">
Цена = <? echo $_ITEMS['Basket'].' $';?>
</p>
<form method="POST" action="itemsHandler.php">
<input type="submit" name="Basket" value="Купить">
<input type="hidden" name="Button" value="Basket">
</form>
</figcaption>
</figure>
<figure>
<img src="../../image/pages/tovarExample/Image.jpg" alt="">
<figcaption>
<p>Продолжение культовой книги "Тренировочная зона" Пола «Тренера» Уэйда посвящено продвинутым техникам тренировок с собственным весом для развития предельной силы и мышц. </p>
<p class="price">
Цена = <? echo $_ITEMS['Box'].' $';?>
</p>
<form method="POST" action="itemsHandler.php">
<input type="submit" name="Box" value="Купить">
<input type="hidden" name="Button" value="Box">
</form>
</figcaption>
</figure>
<figure>
<img src="../../image/pages/tovarExample/Image.jpg" alt="">
<figcaption>
<p>Продолжение культовой книги "Тренировочная зона" Пола «Тренера» Уэйда посвящено продвинутым техникам тренировок с собственным весом для развития предельной силы и мышц. </p>
<p class="price">
Цена = <? echo $_ITEMS['Phone'].' $';?>
</p>
<form method="POST" action="itemsHandler.php">
<input type="submit" name="Phone" value="Купить">
<input type="hidden" name="Button" value="Phone">
</form>
</figcaption>
</figure>
<figure>
<img src="../../image/pages/tovarExample/Image.jpg" alt="">
<figcaption>
<p>Продолжение культовой книги "Тренировочная зона" Пола «Тренера» Уэйда посвящено продвинутым техникам тренировок с собственным весом для развития предельной силы и мышц. </p>
<p class="price">
Цена = <? echo $_ITEMS['Notebook'].' $';?>
</p>
<form method="POST" action="itemsHandler.php">
<input type="submit" name="Notebook" value="Купить">
<input type="hidden" name="Button" value="Notebook">
</form>
</figcaption>
</figure>
<figure>
<img src="../../image/pages/tovarExample/Image.jpg" alt="">
<figcaption>
<p>Продолжение культовой книги "Тренировочная зона" Пола «Тренера» Уэйда посвящено продвинутым техникам тренировок с собственным весом для развития предельной силы и мышц. </p>
<p class="price">Цена =</p>
<input type="button" value="Купить"></figcaption>
</figure>
</div>
<!-- End Content-->
<!-- Footer-->
<footer>
<div id="col1">
<h2>OUR STORES</h2>
<p>Pellentesque non cursus mi, eu cursus nunc. Nullam
et odio tristique, volutpat urna vitae, dignissim orci.</p>
<p>Fusce eu nulla urna.
This template was created by Erik Paнтакты для связи с нами</p>
</div>
<div id="col2">
<h2>BLOG POSTS</h2>
<strong>Nullam et odio tristique</strong><br>
Nullam et odio tristique, volutpat urna vitae, dignissim orci.Fusce eu nulla urna.</p>
<strong>Nullam et odio tristiquedignissim orci.</strong><br>
Fusce eu nulla urna.This template was created by Erik Paнтакты для связи с нами</p>
</div>
<div id="col3">
<h2>SUPPORT</h2>
<ul>
<li>Terms & Conditions</li>
<li>FAQ</li>
<li>Payment</li>
<li>Refunds</li>
<li>Track Order</li>
<li>Services</li>
<li>Privacy & Security</li>
<li>Careers</li>
<li>Press</li>
<li>Corporate Information</li>
</ul>
</div>
<div id="col4">
<ul>
<li>Sizing</li>
<li>Ordering</li>
<li>Shipping</li>
<li>Return Policy</li>
<li>Affiliates</li>
<li>Find a Store</li>
<li>Site Map</li>
<li>Sign UP & Save</li>
</ul>
</div>
<div id="col5">
<h2>CONTACT US</h2>
<input type="text" value="Your Gmail">
<textarea name="yourtext" id="yourtext" cols="20" rows="5"></textarea>
<input type="button" value="SEND">
</div>
</footer>
</div>
</body>
</html>
Ошибки с текстом headers already sent by появляются если перед попыткой отправить HTTP-заголовок веб-сервер уже начал отправлять тело ответа. По опыту это случается в следующих случаях:
header()
он уже где-то начал формировать страницу (например echo '<html><head>';
);<?php
стоит не с самого начала, а после пробела, табуляции или не на первой строке;display_errors
в тело страницы.Иногда, когда файлов много, разобраться становится трудно. "Поймать" вывод поможет буферизация вывода. Можно в самый первый файл, в самое начало вставить строку: ob_start();
и перед строкой, отправляющей HTTP-заголовок (функции header()
, session_start()
, setcookie()
) вставить file_put_contents('content-debug.log', ob_get_contents())
и посмотреть, что будет записано в файл content-debug.log
(может быть в виде шестнадцатеричного дампа)
Полный ответ на ваш вопрос есть в самом вопросе. Другого ответа здесь быть не может.
Warning: session_start() [function.session-start]: Cannot send session >cookie - headers already sent by (output started at >S:\home\shop.by\www\pages\Items\itemsHandler.php:1) in >S:\home\shop.by\www\pages\Items\itemsHandler.php on line 1
Интерпретатор PHP сообщает вам, что вывод данных начался до вызова функции session_start, т.о. сессии не могут обеспечить корректное сохранение указанных данных.
Для работы сессий используются Cookie. Сохранение Куки происходит только в области Заголовков ответа вашего сервера. Как только вы начинаете передавать любые данные (теги, пробел, абсолютно любой символ) заголовки вы уже не сможете отправить и именно об этом вам говорит ваша ошибка. Нужно найти эти данные до функции session_start и переместить, если они нужны, либо удалить.
На вашем примере невозможно определить эти дополнительные данные. В комментариях к вопросу вам предлагали переопределить кодировку файла Unicode без BOM (Notepad++ удобный быстрый редактор, смена кодировок в один клик).
Иногда (очень редко) в конфигурации PHP или htaccess указывается auto_prepend_file который автоматически включает в любой скрипт какой-то другой файл в самое начало и этот файл может передать данные о которых вы можете забыть или не знать. Проверьте конфигурацию PHP.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
у меня такой вопросЕще около двух лет назад я пытался поставить Payeer на Laravel, но безуспешно
Нужна помощь есть html дерево где с помощью DomCrawler парсим нужные нам значения(имя товара и цена) сложность в том как из двух масивов сделать один(ключ...
Есть массив $X = [0,-5,-9,3,76,-99,-3,-4,101,-212,10,31]; Надо переставить отрицательные элементы из в начало массива, а положительные в конец, сохранив при этом...
нуждаюсь в совете либо в примере, как реализовать структуру бд, дл выполнения задачи