|
|
|
| Кто-нибудь может подсказать, в чем пробелма: я делаю динамическую страничку с формой, результаты ее заполнения заносятся в одну строку (почему - долгая история), короче факт тот, что я должен с помощью сессионной переменной $_SESSION['mark'] перекинуть эту строку в скрипт, который обрабатывает ту форму и уже в нем сравнить с другой строкой. Все делаю как надо, вроде бы с сеансами в принципе все просто, на каждой страничке открываем session_start() и юзаем переменные массива $_SESSION как вздумается. Но отчего-то он не хочет переносить мою $_SESSION['mark'] в скрипт-обработчик. Провел тестинги все которые можно, и определил, что она ТУПО не переносится. Если знаете, в чем может крыться гвоздь, помогите, плз! Вряд ли из-за того, что это не просто страничка, куда переходишь по ссылке, а именно скрипт-обработчик, но...
ЗЫ: да, и вот еще, пытался даже в теге <form> прописывать action="verify.php<?=SID?>", на что он мне выдал ошибку 403 об отсутствии прав!! Что за..?
..заранее спасибо. | |
|
|
|
|
|
|
|
для: Anwor
(26.03.2006 в 00:20)
| | Приведите пример кода | |
|
|
|
|
|
|
|
для: Drago
(26.03.2006 в 00:58)
| | Скрипт, выводящий форму (там до этого куска еще выше крыши, суть начинается здесь):
control.php:
//........................
session_start();
//...........................
echo "<form action="verify.php<?=SID?> method="post">
//..................................тут еще кода немеренно
$a=mysql_fetch_array($res1, MYSQL_NUM);
$right.=$a[3];
for ($j=0; $j<3; ++$j) {
$num=$j+1;
echo ("<input name='a[$i]' type='radio' value='$num'> $a[$j]<br>");
}
echo ("<br><br>");
}
/* по окончании цикла в $right выстраивается цепочка из 10 символов. */
echo ("</p>");
$_SESSION['mark']=$right; // присваиваем... ничто не предвещает беды.
echo ('
<p align="justify">
<input name="submit" type="submit" id="submit" value="Проверить">
<input name="action" type="hidden" value="1"> //это просто флажок против ламеров
</form>
</p>
');
echo $_SESSION['mark']; //это строка необязательная, но она выводит верное значение, которое и должно быть
|
и собстно, скрипт-обработчик:
verify.php
<?php
session_start();
if (empty($action)) {
echo ("<b>Хакерствуем? Ну-ну....</b>");
session_destroy();
exit;
}
if (!isset($_SESSION['mark'])) { echo "<font color='red'><b>Query error!!</b></font>"; exit; } /* отчего-то именно эту строку он все время и выдает!! Т.е., он не хочет принимать эту переменную за установленную. */
$right=$_SESSION['mark'];
$your="";
for ($i=1; $i<11; ++$i) {
$your.=$a[$i];
}
$result=similar_text($right, $your, $percent);
$percent=substr($percent,0,4);
// делее уже не имеет исторической ценности.
?>
|
У кого какие догадки имеются? | |
|
|
|
|
|
|
|
для: Anwor
(26.03.2006 в 01:40)
| | cookie включены в браузере? | |
|
|
|
|
|
|
|
для: cheops
(26.03.2006 в 03:15)
| | Так... причем тут куки-то? Разве сессии тоже на них едут? | |
|
|
|
|
|
|
|
для: Anwor
(26.03.2006 в 03:39)
| | Да, уникальный идентификатор сессии (SID) хранится, как правило, в cookie. | |
|
|
|
|
|
|
|
для: cheops
(26.03.2006 в 15:06)
| | Не могу понять, в чем прикол... Куки включил на максимум (допустимость), облазал все конфиги для ПХП и Апаче... И не пашет, хоть ты об стену разбейся. Вот что касается запроса с параметром <?=SID?> я все правильно накатал? Или это вообще можно не включать?
Если, может, у кого имеются шаблонные варианты сессионных переходов со страницы на страницу, киньте пожалуйста, ОЧЕНЬ надо...... | |
|
|
|
|
|
|
|
для: Anwor
(26.03.2006 в 23:46)
| | >Вот что касается запроса с
>параметром <?=SID?> я все правильно накатал? Или это
>вообще можно не включать?
Вообще-то нет. И там выдает ошибку. Попробуйте это убрать, сделав строку такой
<?php
echo "<form action=\"verify.php\" method=\"post\">";
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(27.03.2006 в 00:40)
| | Не-а! Не хочет, ни в какую. А может быть в .htaccess дело? Ведь за права вроде как он отвечает, и недаром ж он мне 403 forbidden выдает в случае с <?=SID?>! | |
|
|
|
|
|
|
|
для: Anwor
(27.03.2006 в 01:15)
| | А что в .htaccess находится? | |
|
|
|
|
|
|
|
для: cheops
(27.03.2006 в 02:13)
| | Ну во первых, если ты юзаешь контсанту SID, то и юзай по правилам.
Она определена только до первого вывода в браузер. Поэтому ты должен ее получить сразу, желательно на второй строке после session_start();
session_start(); - первой строкой пиши (никаких коментариев и прочих строк, только <?php написал в начале файла и сразу пиши старт сессиии).
Ну вот, получил ты значит SID (например второй строкой, типа: $mysid=SID; это само значение, а никак не строка PHPSESSID=3k23l423l...)
Bот теперь подставляй его в код формы:
echo "<form action=\"verify.php?PHPSESSID=" . $mysid . "\" method=\"post\">"; | |
|
|
|
|
|
|
|
для: XPraptor
(27.03.2006 в 16:30)
| | Не пашет все равно! А может, можно как-то обойтись без этой долбаной SID? | |
|
|
|
|
|
|
|
для: Anwor
(27.03.2006 в 20:44)
| | Можно. Писать коды форм непосредственно в PHP вообще не желательно. Если действительно параметры формы такие разные всегда, то лучше иметь шаблон ее заголовка в отдельном файле, и инклюдить его по мере необходимости.
Например лежит файл а внем всего одна строка <form name="frm_test" action="http:/..." method="post">
Ну и в любом месте кода где надо эту форму вставить просто делаем include("файл с заголовком формы"); а дпльше печатем её код.
Такие формы будут распознаны PHP автоматически и проблемм не должно быть с сессиями. | |
|
|
|
|
|
|
|
для: XPraptor
(29.03.2006 в 10:40)
| | Хм.. это вариант.... попробую. Но вообще при вызове session_start() у нас ведь РНР сразу - либо стартит сессию, либо проверяет наличие этой самой SID, правильно? И если оная имеется, разрешает массив $_SESSION. В таком случае в чем лаг - я так и не могу понять, а уже из спортивного интереса хочу докопаться.. | |
|
|
|