|
|
|
| Простейший, вроде бы скрипт:
<?php
session_start();
if (isset($visits)){
$once = $visits+1;
}
else {
$once = 1;
}
setcookie ("visits",$once,time()+7*24*60*60, "/", ".klim.fu");
require("base.php");
echo $visits;
?>
ДО него не выводится ничего, как и положено для setcookie.
|
Локалка в итоге выдает следующее:
"Warning: session_start(): Cannot send session cookie - headers already sent in Z:\home\klim.fu\www\head.php on line 2 Call Stack: 0.0010 325552 1. {main}() Z:\home\klim.fu\www\head.php:0 0.0010 325584 2. session_start() Z:\home\klim.fu\www\head.php:2 Warning: session_start(): Cannot send session cache limiter - headers already sent in Z:\home\klim.fu\www\head.php on line 2 Call Stack: 0.0010 325552 1. {main}() Z:\home\klim.fu\www\head.php:0 0.0010 325584 2. session_start() Z:\home\klim.fu\www\head.php:2 Notice: Undefined variable: visits in Z:\home\klim.fu\www\head.php on line 13 Call Stack: 0.0010 325552 1. {main}() Z:\home\klim.fu\www\head.php:0 "
Причем, браузер куку ловит и сохраняет, но ее значение упорно остается равным "1", в то же время переменная $visits - Undefined.
Почему???
Спасибо. | |
|
|
|
|
|
|
|
для: Deed
(21.07.2011 в 18:14)
| | А файл, где расположен скрипт как называется? | |
|
|
|
|
|
|
|
для: cheops
(21.07.2011 в 18:22)
| | Добрый день, босс! Польщен оперативностью, спасибо!
Файл называется head.php и расположен в корне сайта на локалке: Z:\home\klim.fu\www\head.php
И, если можно, объясните пож., сто за Call Stack такой? | |
|
|
|
|
|
|
|
для: Deed
(21.07.2011 в 18:25)
| | 1) Файл в какой кодировке? Часом не UTF-8, если да, то скорее всего в начале стоит невидимый признак UTF-8-файла, который и не позволяет отправить HTTP-заголовки, которые нужны для работы механизма cookie. Если нет, давайте разбираться куда файл включается и нет ли какого вывода до того, как он подключен.
2) Такой подход обращения к cookie устарел и уже практически отменен - нужно настраивать PHP, чтобы заставить этот код работать. Сейчас, чтобы получить значение cookie вам нужно обращаться к глобальному массиву $_COOKIE
<?php
session_start();
if (isset($_COOKIE['visits']))){
$once = $_COOKIE['visits']+1;
}
else {
$once = 1;
}
setcookie ("visits",$once,time()+7*24*60*60, "/", ".klim.fu");
require("base.php");
echo $visits;
?>
ДО него не выводится ничего, как и положено для setcookie.
|
>И, если можно, объясните пож., сто за Call Stack такой?
3. Стек - это компьютерная структура, по сути очередь из элементов, но в отличие от очереди, в которой кто первым попал, тот первым её и покидает, в стеке наоборот, кто последним в неё попал, тот первым её покидает. Представьте стопку тарелок, из которой постоянно берут тарелки и докладывают новые - это стек. А Call Stack - это стопка вызовов функций и файлов, при помощи его PHP определяет в каком порядке что вызывать в вашей программе. | |
|
|
|
|
|
|
|
для: cheops
(21.07.2011 в 18:40)
| | Спасибо за разъяснения.
Вот полное содержание head.php:
<?php
session_start();
if (isset($_COOKIE['visits'])){
$once = $_COOKIE['visits']+1;
}
else {
$once = 1;
}
setcookie ("visits",$once,time()+7*24*60*60, "/", ".klim.fu");
echo $visits;
require("base.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta name='keywords' content="картина, живопись, купить, рисунок, пейзаж, портрет, холст, масло, акварель, краски" />
<meta name="description" content="Купить картину, подарить катрину, заказать картину, живопить, рисунок, холст, масло" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta name="author" content="Deed" />
<title>Картины Ирины Климовой</title>
</head>
<body>
<?php
?>
</body>
</html>
|
Все страницы у меня в Win-1251 и КУКА эта БРАУЗЕРОМ ПРИНИМАЕТСЯ, и ее значение всегда равно 1.
Мне не понятно, почему PHP ругается на session_start и куда девается $visits?!
Да! А кодировка - ANSI
PHP Version 5.3.3 | |
|
|
|
|
|
|
|
для: Deed
(21.07.2011 в 18:48)
| | 1) Нет ли перед <?php пробелов и переводов строк?
2) Правильно ли я понимаю, что head.php куда-то включается при помощи include/require, если да, то куда и как выглядит тот файл (нет ли там вывода перед вызовом head.php)?
>Мне не понятно, почему PHP ругается на session_start и куда девается $visits?!
3. А её просто нет, раньше действительно установка cookie приводила к формирования одноименной PHP-переменной. Теперь это не так, вместо $visits следует использовать $_COOKIE['visits']. | |
|
|
|
|
|
|
|
для: cheops
(21.07.2011 в 19:08)
| | $_COOKIE['visits'] абсолютно не меняет ситуацию. Я пока пытаюсь запустить этот файл самостоятельно.
Я в первую очередь проверил отсутствие выводимой информации перед <?php
И, если раньше сервер ругался на неопределенную переменную $visits, то теперь - на неопределенный индекс массива $_COOKIE visits.
Что ж это такое происходит?.. | |
|
|
|
|
|
|
|
для: Deed
(21.07.2011 в 19:32)
| | Странно... Ни с того, ни с сего заработало.
Спасибо Вам, cheops! | |
|
|
|