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

Форум PHP

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

 

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

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

тема: Лаг с сессией
 
 автор: Anwor   (26.03.2006 в 00:20)   письмо автору
 
 

Кто-нибудь может подсказать, в чем пробелма: я делаю динамическую страничку с формой, результаты ее заполнения заносятся в одну строку (почему - долгая история), короче факт тот, что я должен с помощью сессионной переменной $_SESSION['mark'] перекинуть эту строку в скрипт, который обрабатывает ту форму и уже в нем сравнить с другой строкой. Все делаю как надо, вроде бы с сеансами в принципе все просто, на каждой страничке открываем session_start() и юзаем переменные массива $_SESSION как вздумается. Но отчего-то он не хочет переносить мою $_SESSION['mark'] в скрипт-обработчик. Провел тестинги все которые можно, и определил, что она ТУПО не переносится. Если знаете, в чем может крыться гвоздь, помогите, плз! Вряд ли из-за того, что это не просто страничка, куда переходишь по ссылке, а именно скрипт-обработчик, но...
ЗЫ: да, и вот еще, пытался даже в теге <form> прописывать action="verify.php<?=SID?>", на что он мне выдал ошибку 403 об отсутствии прав!! Что за..?
..заранее спасибо.

   
 
 автор: Drago   (26.03.2006 в 00:58)   письмо автору
 
   для: Anwor   (26.03.2006 в 00:20)
 

Приведите пример кода

   
 
 автор: Anwor   (26.03.2006 в 01:40)   письмо автору
 
   для: 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);
// делее уже не имеет исторической ценности.
?> 


У кого какие догадки имеются?

   
 
 автор: cheops   (26.03.2006 в 03:15)   письмо автору
 
   для: Anwor   (26.03.2006 в 01:40)
 

cookie включены в браузере?

   
 
 автор: Anwor   (26.03.2006 в 03:39)   письмо автору
 
   для: cheops   (26.03.2006 в 03:15)
 

Так... причем тут куки-то? Разве сессии тоже на них едут?

   
 
 автор: cheops   (26.03.2006 в 15:06)   письмо автору
 
   для: Anwor   (26.03.2006 в 03:39)
 

Да, уникальный идентификатор сессии (SID) хранится, как правило, в cookie.

   
 
 автор: Anwor   (26.03.2006 в 23:46)   письмо автору
 
   для: cheops   (26.03.2006 в 15:06)
 

Не могу понять, в чем прикол... Куки включил на максимум (допустимость), облазал все конфиги для ПХП и Апаче... И не пашет, хоть ты об стену разбейся. Вот что касается запроса с параметром <?=SID?> я все правильно накатал? Или это вообще можно не включать?
Если, может, у кого имеются шаблонные варианты сессионных переходов со страницы на страницу, киньте пожалуйста, ОЧЕНЬ надо......

   
 
 автор: Drago   (27.03.2006 в 00:40)   письмо автору
 
   для: Anwor   (26.03.2006 в 23:46)
 

>Вот что касается запроса с
>параметром &lt;?=SID?> я все правильно накатал? Или это
>вообще можно не включать?

Вообще-то нет. И там выдает ошибку. Попробуйте это убрать, сделав строку такой

<?php
echo "<form action=\"verify.php\" method=\"post\">";
?>

   
 
 автор: Anwor   (27.03.2006 в 01:15)   письмо автору
 
   для: Drago   (27.03.2006 в 00:40)
 

Не-а! Не хочет, ни в какую. А может быть в .htaccess дело? Ведь за права вроде как он отвечает, и недаром ж он мне 403 forbidden выдает в случае с <?=SID?>!

   
 
 автор: cheops   (27.03.2006 в 02:13)   письмо автору
 
   для: Anwor   (27.03.2006 в 01:15)
 

А что в .htaccess находится?

   
 
 автор: XPraptor   (27.03.2006 в 16:30)   письмо автору
 
   для: 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\">";

   
 
 автор: Anwor   (27.03.2006 в 20:44)   письмо автору
 
   для: XPraptor   (27.03.2006 в 16:30)
 

Не пашет все равно! А может, можно как-то обойтись без этой долбаной SID?

   
 
 автор: XPraptor   (29.03.2006 в 10:40)   письмо автору
 
   для: Anwor   (27.03.2006 в 20:44)
 

Можно. Писать коды форм непосредственно в PHP вообще не желательно. Если действительно параметры формы такие разные всегда, то лучше иметь шаблон ее заголовка в отдельном файле, и инклюдить его по мере необходимости.

Например лежит файл а внем всего одна строка <form name="frm_test" action="http:/..." method="post">

Ну и в любом месте кода где надо эту форму вставить просто делаем include("файл с заголовком формы"); а дпльше печатем её код.
Такие формы будут распознаны PHP автоматически и проблемм не должно быть с сессиями.

   
 
 автор: Anwor   (29.03.2006 в 21:28)   письмо автору
 
   для: XPraptor   (29.03.2006 в 10:40)
 

Хм.. это вариант.... попробую. Но вообще при вызове session_start() у нас ведь РНР сразу - либо стартит сессию, либо проверяет наличие этой самой SID, правильно? И если оная имеется, разрешает массив $_SESSION. В таком случае в чем лаг - я так и не могу понять, а уже из спортивного интереса хочу докопаться..

   
Rambler's Top100
вверх

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