/**
* 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) то проверь все строки выше вот этого:
в ПЕРВОЙ строке должно быть <?php без пустых строк, так как даже пустые строки в HTML рассматриваются как минимум содержащие невидимый символ завершения строки(отсылаемый на вывод браузеру) а как максимум невидимые BOM символы
если же страница с этим кодом инклюдится в другую, то в другой странице до включения этой тоже должен отсутствовать вывод в окно браузера
операторы 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 написал(а):
Да нет вроде бы.
Проблема в
$_COOKIE['gallery'] меняется только после второго обновления страницы!?????
Проблема в
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 написал(а):
Проблема не в кавычках!!!
Это все куки
Специально сделал отдельный скрипт
первое обновление страницы. Результат пусто
Второе обновление страницы. Результат 233
Это все куки
Специально сделал отдельный скрипт
<?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']) ) )//
чтобы было однозначно как для твоего взгляда так и для интерпретатора\компилятора
поправь на 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
Всё таки поменяй GET на _GET , раз ты передаёшь параметры методом GET
Спустя 2 минуты, 45 секунд (3.07.2011 - 21:19) kent666 написал(а):
golovolom я показываю не весь код а только маленькую часть.
$GET это обработанный глобальный массив $_GET))))
Если осилишь http://irbis-team.com все станет намного понятнее;)
$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 все станет намного понятнее;) |
Да нет проблем) я всё таки новичёк, пытаюсь помочь чем могу)
Вот только у меня всё работает) не работает только то, что не сделал потому как нет надобности, либо ещё не прочитал как)