[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работают куки
kent666
Все привет. Помогите не работают куки
/**
* Generation of image
* Генерациия изображения
*/

if($GET['photo']=="new"&&!isset($_COOKIE['gallery']))//Если в куках пусто и номера фото не передается
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id` = (SELECT MAX(`id`) FROM `"
. SVV_DBPREFIX ."gallery`)"
);
if(mysql_num_rows($res) > 0)
{
$row = htmlChars(mysql_fetch_assoc($res));
}

setcookie('gallery', $row[`id`], time() + 3600);
$m=1;
}

elseif($GET['photo']=="new"&&isset($_COOKIE['gallery']))//Если в куках есть номер страницы и номера фото не передается
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id`="
.$_COOKIE['gallery']
);

$m=2;
}

else //Если явно задается номер фото
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id`="
.$GET['photo']
);

setcookie('gallery', $GET['photo'], time() + 3600);
$m=3;
}

if(mysql_num_rows($res) > 0)//определяется содержит запрос информацию
{
$row = htmlChars(mysql_fetch_assoc($res));
}

$photo = !empty($row['foto'])?"<img alt='' height='238' src='".SVV_HOST."setup/gallery/".$row['foto']."' />":"Нет фото";


Когда я проверяю куки то они работают через раз. Т.Е. они то пусты то не перезаписываются



Спустя 19 часов, 41 минута, 9 секунд (3.07.2011 - 19:16) golovolom написал(а):
Я хоть и новичок в этом но попробую ответить:
операторы setcookie и header сработают нормально только в том случае, когда из файла с содержанием твоей страницы до того как там встретились данные операторы, браузеру не были посланы данные на вывод в окно браузера

если данный кусок кода находится в страничке, которая не вставляется в другую(include) то проверь все строки выше вот этого:


    if($GET['photo']=="new"&&!isset($_COOKIE['gallery']))//Если в куках пусто и номера фото не передается
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id` = (SELECT MAX(`id`) FROM `"
. SVV_DBPREFIX ."gallery`)"
);
if(mysql_num_rows($res) > 0)
{
$row = htmlChars(mysql_fetch_assoc($res));
}

setcookie('gallery', $row[`id`], time() + 3600);
$m=1;
}


в ПЕРВОЙ строке должно быть <?php без пустых строк, так как даже пустые строки в HTML рассматриваются как минимум содержащие невидимый символ завершения строки(отсылаемый на вывод браузеру) а как максимум невидимые BOM символы

если же страница с этим кодом инклюдится в другую, то в другой странице до включения этой тоже должен отсутствовать вывод в окно браузера

Спустя 4 минуты, 45 секунд (3.07.2011 - 19:20) golovolom написал(а):
Сам столкнулся с этой проблемой. Потому замечу наперёд, что пустые строки за пределами <?php ... ?> являются выводом в окно браузера символов перевода строки( которые кстати им игнорируются). Может поможет ещё вот что: Если ты сохранил cookie, то считать ты их на этой же страничке в коде ниже не сможешь, только после обновления страницы.

Спустя 34 минуты, 36 секунд (3.07.2011 - 19:55) inpost написал(а):
$row[`id`] ? ты с кавычками не напутал?

Спустя 24 минуты, 44 секунды (3.07.2011 - 20:20) kent666 написал(а):
Да нет вроде бы.
Проблема в
setcookie('gallery', $row[`id`], time() + 3600);

$_COOKIE['gallery'] меняется только после второго обновления страницы!?????

Спустя 17 минут, 44 секунды (3.07.2011 - 20:37) inpost написал(а):
kent666
Ну так добавил кукисы, и сразу сделал редирект.

Спустя 2 минуты, 45 секунд (3.07.2011 - 20:40) golovolom написал(а):
Цитата
меняется только после второго обновления страницы!?????

нет не второго, утсновил куки, после первого обновления можно новое(или только что установленное) значение увидеть.

Тоесть: у тебя по ходу выполнения кода страницы(или отправки браузеру) идёт запись в куки. если в этой же странице тут же идёт проверка нового значения то, оно не будет новым. Куки обновятся только после обновления этой страницы

Так же у тебя стоит время жизни кук time() + 3600), 1 час, я думаю если куки устанавлявать для текущего посещения сайта, то ставь без времени, если надолго, то пару лет ставить например

И кавычки всё же проверь апостроф - `
одинарная кавычка - '
у тебя похоже апострофы натыканы..

Спустя 21 минута, 16 секунд (3.07.2011 - 21:01) kent666 написал(а):
Проблема не в кавычках!!!
Это все куки
Специально сделал отдельный скрипт
<?php   
$m=233;
setcookie('g', $m, time() + 3600, '/');
echo $_COOKIE['g'];

первое обновление страницы. Результат пусто
Второе обновление страницы. Результат 233

Спустя 8 минут, 52 секунды (3.07.2011 - 21:10) golovolom написал(а):
if($GET['photo']=="new"&&!isset($_COOKIE['gallery']))//Если в куках пусто и номера фото не передается

поправь на if($_GET['photo']=
так как ты проверяешь переменную $GET которая наверное не определена
а не глобальную $_GET в которую будет методом GET передаваться значение твоей страничке

потому и не ставятся куки, раз один из параметров проверки всегда ложь

т вообще логику желательно писать так(намотано на ус из любого учебника по программированию):

if( ($GET['photo']=="new") && (!isset($_COOKIE['gallery']) ) )//

чтобы было однозначно как для твоего взгляда так и для интерпретатора\компилятора

Спустя 4 минуты, 21 секунда (3.07.2011 - 21:15) kent666 написал(а):
Заменил куки не ссесии и все заработало. Не могу понять для чего надо тагда эти куки если они срабатываю не сразу
/**
* Generation of image
* Генерациия изображения
*/

session_start();
if($GET['photo']=="new"&&!isset( $_SESSION['gallery']))//Если в куках пусто и номера фото не передается
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id` = (SELECT MAX(`id`) FROM `"
. SVV_DBPREFIX ."gallery`)"
);
if(mysql_num_rows($res) > 0)
{
$row = htmlChars(mysql_fetch_assoc($res));
}

$_SESSION['gallery']= $row['id'];
}

elseif($GET['photo']=="new"&&isset( $_SESSION['gallery']))//Если в куках есть номер страницы и номера фото не передается
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id`="
. $_SESSION['gallery']
);

}

else //Если явно задается номер фото
{
$res=mysqlQuery("SELECT * FROM `". SVV_DBPREFIX ."gallery`
WHERE `id`="
.$GET['photo']
);

$_SESSION['gallery']=$GET['photo'];
}

if(mysql_num_rows($res) > 0)//определяется содержит запрос информацию
{
$row = htmlChars(mysql_fetch_assoc($res));
}

$photo = !empty($row['foto'])?"<img alt='' height='238' src='".SVV_HOST."setup/gallery/".$row['foto']."' />":"Нет фото";

//////////////////////////////////////////////////////////

/**
* Generation links
* Генерациия ссылок
*/

$number=array();
$i=0;
$now='';
$res=mysqlQuery("SELECT `id` FROM `". SVV_DBPREFIX ."gallery`
ORDER BY `id`
"
);
if(mysql_num_rows($res) > 0)
{
while ($row = mysql_fetch_assoc($res))
{
$i=$i+1;
$number[$i]=$row['id'];
if($row['id']== $_SESSION['gallery'])
{
$now=$i;
}
}
}


if($now==1&&$i==1)
{
$left_photo=$number[1];
$right_photo=$number[1];;
}
elseif($now==1&&$i==2)
{
$left_photo=$number[2];
$right_photo=$number[2];;
}
elseif($now==2&&$i==2)
{
$left_photo=$number[1];
$right_photo=$number[1];;
}
elseif($now==1)
{
$left_photo=$number[$i];
$right_photo=$number[2];;
}
elseif($now==$i)
{
$left_photo=$number[$now-1];
$right_photo=$number[1];;
}
else
{
$left_photo=$number[$now-1];
$right_photo=$number[$now+1];;
}

Рабочий скрипт

Спустя 1 минута, 41 секунда (3.07.2011 - 21:16) golovolom написал(а):
ну так посетил ты сайт, закрыл браузер - сессия закончилась, а куки сохранились..

Всё таки поменяй GET на _GET , раз ты передаёшь параметры методом GET

Спустя 2 минуты, 45 секунд (3.07.2011 - 21:19) kent666 написал(а):
golovolom я показываю не весь код а только маленькую часть.
$GET это обработанный глобальный массив $_GET))))
Если осилишь http://irbis-team.com все станет намного понятнее;)

Спустя 2 минуты, 41 секунда (3.07.2011 - 21:22) kent666 написал(а):
Неа.
Я вчера заходил на сайт под администратором. Сейчас проверил
Цитата

$_SESSION =

Array
(
    [admin] => 1
    [gallery] => 2
)

Админ = 1 это и есть вчерашняя сессия))

Спустя 29 секунд (3.07.2011 - 21:22) golovolom написал(а):
Цитата (kent666 @ 3.07.2011 - 18:19)
golovolom я показываю не весь код а только маленькую часть.
$GET это обработанный глобальный массив $_GET))))
Если осилишь http://irbis-team.com все станет намного понятнее;)

Да нет проблем) я всё таки новичёк, пытаюсь помочь чем могу)
Вот только у меня всё работает) не работает только то, что не сделал потому как нет надобности, либо ещё не прочитал как)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.