Эта тема на forum.dklab.ru


mus: Сессия не передается
Господа, проблема следующего характера. Сделал форму для отправки сообщения с конфирмом. Тоесть внизу формочки ещё располагается картинка с 4 цифрами и эти цифры нужно ввести в текстовое поле. Каким образом я это сделал.

Есть файл confirm.php, который генерирует картинку и создает сессию $_SESSION['enter_confirm'] = $text;, где в переменной текст у меня хранятся эти 4 цифры.
Есть файл applform.php, в котором находится сама форма, а картинка вставлятся так
<img src="confirm.php"><input type="text" name="code">
Код обрабатывается так
if($_SESSION['enter_confirm']!=$_POST['code']) $error[] = "enter valid code, please";

Так вот, когда тестирую все это у себя на локалхсоте (Денвер, от января сего года), все работает великолепно, кабы код неверный - ошибка, если верный, то письмо посылается и все дела. Но залив все это на хост - появилась ошибка. Не передается сессия. Я сделал var_dump($_SESSION['enter_confirm']);// выдается NULL.
Из-за какого параметра хостера возможно возникает такая ошибка?
Заранее благодарю!
mus:
p.s. хостер толкового ответа не дал, мялся.
Ksnk:
поместить сие у хостера и запустить. Поискать слова session в получившемся документе и подумать...

<?php
// Show all information, defaults to INFO_ALL
if (isset($_REQUEST[session_name()])) session_start();
phpinfo();
?>
<br><u>SESSION:</u>
<pre>
<?php
if(isset($_SESSION))print_r($_SESSION);else echo "NO SESSION defined" ;
?>
</pre>

Если ответ не появился - обновить тот-самый confirm.php в окне броузера и обновить сие еще раз...
mus:
SESSION:
NO SESSION defined
Хм...
Мда...
Ksnk:
А вообще хоть какие-то сессии хоть как-то на этом хостере в твоих скриптах шли?
Я как-то тоже долго страдал, пока не посмотрел код phpfm. Там сессия начинается так
ini_set('magic_quotes_gpc', 1);
ini_set('session.use_trans_sid', 0);
//error_reporting(E_ALL);
clearstatcache();
session_start(); // start session and fill good!


Бывает, что нужно определить пару параметров ДО начала сессии
mus:
Сессию у данного хостера использую впервые.
Твой способ попробую, спасибо!
after:
Если session.use_trans_sid = 0 && session.auto_start = 0, а error_reporting != E_ALL, то скрипт не может установить cookie с идентификатором сессии, если до session_start() что-то выводится.


error_reporting(E_ALL);
session_start();


Либо в .htaccess

php_value session.auto_start On

Ivan1986:
Подниму старую тему, так как проблема обнаружилась точно такая-же
Какого в JsHttpRequest присутствует вот это?
(78 строка)

unset(
$_GET['JsHttpRequest'],
$_REQUEST['JsHttpRequest'],
$_GET[session_name()],
$_POST[session_name()],
$_REQUEST[session_name()]
);


А если быть точным, то три последнии строчки, особенно интересен сокральный смысл последней, так как после этого адекватно стартовать сессию невозможно
Юрий Насретдинов:
Ну, у меня сессии как-то работали :). А у Вас не работают?
Ivan1986:
Юрий Насретдинов
разобрался почему

в 78 строчке убивается
в 278 восстанавливается из куки

$_REQUEST =
(isset($_COOKIE)? $_COOKIE : array()) +
(isset($_POST)? $_POST : array()) +
(isset($_GET)? $_GET : array());

но почему-то в 255 строке
if ($this->LOADER == 'form') return;
и сессия не копируется из кук в реквест

вопрос, почему не переносится в случае формы :)
Юрий Насретдинов:

и сессия не копируется из кук в реквест

вопрос, почему не переносится в случае формы :)

Наверное, это просто баг. Исправьте, как считайте нужным и выложите изменения :)
Ivan1986:

--- a/JsHttpRequest.php
+++ b/JsHttpRequest.php
@@ -77,10 +77,7 @@
$_SERVER['QUERY_STRING'] = preg_replace('/^&+|&+$/s', '', preg_replace('/(^|&)'.session_name().'=[^&]*&?/s', '&', $m[1] . $m[4]));
unset(
$_GET['JsHttpRequest'],
- $_REQUEST['JsHttpRequest'],
- $_GET[session_name()],
- $_POST[session_name()],
- $_REQUEST[session_name()]
+ $_REQUEST['JsHttpRequest']
);
// Detect Unicode conversion method.
$this->_unicodeConvMethod = function_exists('mb_convert_encoding')? 'mb' : (function_exists('iconv')? 'iconv' : null);


по-моему вот такого хватит
volf:
Извините, это мое неудачное сообщение
volf:
Извините, может я опять не втему? Но ситуация похожа. После загрузки отпаженного в DENWER сайта на хост сессия не работает. Иногда сессия на странице (это видно в адресной строке Браузера) стартует, но в форме скрытых полей не появляется. И вообще, после перехода на другую страницу сайта, больше признаков сессии не наблюдается. Так происходит в IE5 на одном компьютере, а также в Opera и Mozilla на другом компьютере. Не пойму, в чем дело. Сессии в скрипте объявляются на каждой странице под одним именем. Главное, что в DENWER все прекрасно работало. Если кто-нибудь может дать какие-либо советы, буду очень признателен. Пытался менять права доступа на директориях и файлах - не помогло. Где бы это можно было почитать? Что смотреть? UNIX? Главное, техподдержка хоста с такими. как я , общается по принципу- у них все работает, а ты мол сам дурак. Может быть и так. Хочу побороть этот Хост. Спасибо заранее за внимание.

Заголовок страниц

<?php ini_set("session.use_trans_sid", true);
function nocache() {
Header("Expires: Thu, 19 Feb 1998 13:24:18 GMT");
Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Cache-Control: post-check=0,pre-check=0");
Header("Cache-Control: max-age=0");
Header("Pragma: no-cache");
}
session_name("avtor");
@session_start();
//setcookie("cookie","value");?>

Это вызов php скрипта на странице
<?php include_once('../php/hard.php')?>
<form action="" method="Post" id="frmmail">
Email: <input type="text" name="login" value="введите Ваш Email" /><br />
</form>

А это в вызываемом скрипте

session_name("avtor");
@session_start();
@error_reporting(E_ALL);
$nero=session_id();
if(@$_REQUEST['avtor'] != $nero)
{
exit ("Попытка несанкционированного входа.");
}

В DENWER под Winndows7 с IE5 все работает без проблем. Главное, что передача параметров по страницам идет примерно так $_SESSION['lit']=$str;
Если не заработает сессия, вся логика нарушится.
bæv:
volf, начните отсюда: http://phpfaq.ru/debug
volf:
Добавил вывод ошибок. На DEnwer все нормально. А на хосте выдал что-то. Сейчас буду искать перевод. Спасибо, но я пока еще в теме.
volf:
Извините за необразованность, но раньше работал с ASSEMBLER, а PHP изучал по Вашей книге. Лучшей пока не нашел.
Я хотоел бы про логику спросить. Перевел сообщение с Хоста: Процесс (Сессия) уже запущен -старт игнорируется.
Т.Е. старт сессии на вызываемом скрипте PHP со страницы HTML сайта, оформленной как PHP, уже не нужен. Но в DENWER
без старта сессии в скрипте, ничего не работало.(Сессия стартуется на каждой странице) И всегда ли в адресной строке окна
Броузера показывается идентификатор сессии?
bæv:

всегда ли в адресной строке окна
Броузера показывается идентификатор сессии?

— http://www.php.net/manual/ru/session.configuration.php#ini.session.use-trans-sid

Эта тема на forum.dklab.ru