Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с кукой
 
 автор: Deed   (21.07.2011 в 18:14)   письмо автору
 
 

Простейший, вроде бы скрипт:

<?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.
Почему???
Спасибо.

  Ответить  
 
 автор: cheops   (21.07.2011 в 18:22)   письмо автору
 
   для: Deed   (21.07.2011 в 18:14)
 

А файл, где расположен скрипт как называется?

  Ответить  
 
 автор: Deed   (21.07.2011 в 18:25)   письмо автору
 
   для: cheops   (21.07.2011 в 18:22)
 

Добрый день, босс! Польщен оперативностью, спасибо!
Файл называется head.php и расположен в корне сайта на локалке: Z:\home\klim.fu\www\head.php
И, если можно, объясните пож., сто за Call Stack такой?

  Ответить  
 
 автор: cheops   (21.07.2011 в 18:40)   письмо автору
 
   для: 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 определяет в каком порядке что вызывать в вашей программе.

  Ответить  
 
 автор: Deed   (21.07.2011 в 18:48)   письмо автору
 
   для: 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

  Ответить  
 
 автор: cheops   (21.07.2011 в 19:08)   письмо автору
 
   для: 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'].

  Ответить  
 
 автор: Deed   (21.07.2011 в 19:32)   письмо автору
 
   для: cheops   (21.07.2011 в 19:08)
 

$_COOKIE['visits'] абсолютно не меняет ситуацию. Я пока пытаюсь запустить этот файл самостоятельно.
Я в первую очередь проверил отсутствие выводимой информации перед <?php
И, если раньше сервер ругался на неопределенную переменную $visits, то теперь - на неопределенный индекс массива $_COOKIE visits.
Что ж это такое происходит?..

  Ответить  
 
 автор: Deed   (21.07.2011 в 19:56)   письмо автору
 
   для: Deed   (21.07.2011 в 19:32)
 

Странно... Ни с того, ни с сего заработало.
Спасибо Вам, cheops!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования