Есть переменная $check, где содержиться рандомное число (в нашем случае 1 или 2). Есть вот такой вот скрипт. Он, значит, выводит цифру 1 или 2 ввиде изображения.
Самое интерессное, что эта самая переменная $check - глючит. А именно, если дописать после <img...> переменную $check и пару раз пообновлять страницу, то увидим, что на рисунке и само проверочное число - почему то иногда разные. Вот попробуйте написать так:
и несколько раз понажимать F5 и иногда будут расхождения в результатах. Я просто дальше сделал функцию проверки введеных цифр с картинку ну и все глючить начинает (особенно если rand с 1000 до 9999). Помогите пожалуйста.
P.s. Способ с присвоением в img src=$phpself?imagewr=$check, а потом ее определять в самом ife - не прокатит, т.к. мне нужно все таки, чтобы передавалось скрытно.
И еще, мне нужно изначально, чтобы переменная $check была вне структуры if, чтобы потом я из нее извлекал md5 и отправлял скрытым полем в форме, а потом сверял.
evgenijj
Отправлено: 13 Ноября, 2007 - 10:43:09
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007 Откуда: Планета сокровищ
Помог: 0 раз(а)
[+]
evgenijj, спасибо, прмерно также сделал. Тут проблема возникла, а если пользователь запретит принятие cookie, то и сессия не сможет сохранится (по крайне мере у меня опять все сглючило, как только я поставил запрет на принятие cookie). Следовательно - как быть?
evgenijj
Отправлено: 13 Ноября, 2007 - 19:52:46
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Staind пишет:
evgenijj, спасибо, прмерно также сделал. Тут проблема возникла, а если пользователь запретит принятие cookie, то и сессия не сможет сохранится (по крайне мере у меня опять все сглючило, как только я поставил запрет на принятие cookie). Следовательно - как быть?
Сессии используют стандартные, хорошо известные способы передачи данных. Собственно, других-то просто и нет.
Идентификатор - это обычная переменная. По умолчанию ее имя - PHPSESSID.
Задача PHP отправить ее браузеру, чтобы тот вернул ее со следующим запросом. Из уже упоминавшегося раздела FAQ ясно, что переменную можно передать только двумя способами: в куках или POST/GET запросом.
PHP использует оба варианта.
За это отвечают две настройки в php.ini:
session.use_cookies - если равно 1, то PHP передает идентификатор в куках, если 0 - то нет. session.use_trans_sid если равно 1, то PHP передает его, добавляя к URL и формам, если 0 - то нет.
Менять эти и другие параметры сессий можно так же, как и другие настройки PHP - в файле php.ini, а так же с помощью команды ini_set()
Цитата:
По умолчанию в последних версиях PHP включены обе опции. Как PHP поступает в этом случае? Кука выставляется всегда. А ссылки автодополняются только если РНР не обнаружил куку с идентификатором сессии. Когда пользователь в первый раз за этот сеанс заходит на сайт, ему ставится кука, и дополняются ссылки. При следующем запросе, если куки поддерживаются, PHP видит куку и перестает дополнять ссылки. Если куки не работают, то PHP продолжает исправно добавлять ид к ссылкам, и сессия не теряется.
Пользователи, у которых работают куки, увидят длинную ссылку с PHPSESSID только один раз.
//Выводим переменную из сессии и видим, что интерпретатор ее не находит
$check2=$_SESSION['check'];
echo("$check2");
echo("</body></html>");
?>
То интерпретатор не находит переменную $_SESSION['check']. Однако, если я вытащу $checkcode = rand (1,4); и $_SESSION['check'] = md5($checkcode); из структуры if, то все получается! Вот я не могу понять - почему так?
P.s. Мне нужно, чтобы эти два присвоения были в структуре if, иначе тоже глюк будет :
valenok
Отправлено: 13 Ноября, 2007 - 23:03:14
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
На форуме есть раздел "Пользовательские функции".
Посмотрите там готовый пример
----- Truly yours, Sasha.
evgenijj
Отправлено: 14 Ноября, 2007 - 10:04:13
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Еще одна проблема может возникнуть, если вы используете перенаправление через header или навигацию с помощью JavaScript.
Дело в том, что РНР автоматически дописывает идентификатор сессии только к ссылкам вида < a href="..." >, но не делает этого для header-ов, яваскрипта, мета-тегов.
Поэтому надо добавлять идентификатор руками
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007 Откуда: Планета сокровищ
Помог: 0 раз(а)
[+]
Блин, точно не умею читать. Огромное тебе спасибо и респект
И еще, последний мелкий вопросик:
Вот есть страница с html тэгами (с инфой короче). Есть <img> тэг. Вот в данном примере я создаю изображение методом $_GET. А вообще - можно ли как -нибудь еще создать изображение. Через функцию пробовал - неполучилось. Или вот в данном примере - самый нормальный метод создания изображения?
valenok
Отправлено: 14 Ноября, 2007 - 15:44:46
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Делайте как делаете.
А вообще можно.
----- Truly yours, Sasha.
Staind
Отправлено: 14 Ноября, 2007 - 16:04:45
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007 Откуда: Планета сокровищ
Помог: 0 раз(а)
[+]
Окей, спс. Просто я такой способ в интернете откапал и думал, что есть лучше.
Staind
Отправлено: 15 Ноября, 2007 - 18:49:53
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007 Откуда: Планета сокровищ
Помог: 0 раз(а)
[+]
Чтобы не создавать новую темку, напишу здесь (это мелкий вопрос).
Есть страничка. При $_GET['param']=="archive" в адресной строке, появляется архив новостей. Однако можно сделать sql инъекцию, если не ввести дополнительные условия. Я особо не разобрался и взял и в начале всего скрипта указал:
И при этом все нормально стало, т.е. sql инъекцию теперь не ввести. Вот хотел спросить - это способ нормальный? или можно как то проще сделать?
valenok
Отправлено: 15 Ноября, 2007 - 21:38:52
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Сам запрос в студию.
А вообще если у вас парам принимает значение не только archive но и 5 других возможных
- то используйте конструкцию switch или условие с ф-цией in_array
----- Truly yours, Sasha.
Staind
Отправлено: 15 Ноября, 2007 - 22:32:02
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2007 Откуда: Планета сокровищ
Помог: 0 раз(а)
[+]
Понял. Вот после той строчки у меня идет проверка еще одна и запрос:
В конце у меня стоит "header ("Location:addnews.php");" специально для того, чтобы при нажатии на F5 не дублировалась в базу новость. Тем самым я ни как не могу вывести сообщения типа "Новость добавлена" или там "В содержании новости мало символов". Вот и встал вопрос: "А как можно тогда добавлять сообщения в нужный мне участок HTML разметки?"
И еще назрел вопрос:
"А сколько будет храниться сессия во временном каталоге, если в php скрипте не указано полное ее уничтожение?"
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.