Вопрос про настройки сервера

player

Новичок
Вопрос про настройки сервера

Добрый день!

Столкнулся со странной проблемой, в одном проекте все работало, один из формуляров выглядел так:

<form action="/account.php?action=newlonglink" method="post" id="newlink"><table>
<tr><td>{$lang.longlink_name}</tr><tr><td><input type="text" name="name" size="40" maxlength="255"/><br/></td></tr>
<tr><td><br /><span class="yellow">{$lang.first_link}:</span></td></tr>
<tr><td>{$lang.link_name}</td></tr><tr><td><input type="text" name="linkname" size="40" maxlength="255"/><br/></td></tr>
<tr><td>{$lang.link_url}</td></tr><tr><td><input type="text" name="url" size="40" maxlength="255"/><br/></td></tr>
<tr><td>{$lang.link_description}</td></tr><tr><td><textarea name="description" cols="50" rows="3" onKeyUp="Count(this,300)" onChange="Count(this,300)"></textarea><br/></td></tr>
<tr><td><input type="submit" name="submitted" value="ok" /> </td></tr>
</table>
</form>

Теперь нажимаю на "отправить" и страница обновляется. но форма не отправляется. В адресной строке вместо /account.php?action=newlonglink стоит /account.php?PHPSESSID=mrnscnu49tppu1oihi7ugmq083
Хотел спросить, может быть на сервере есть какаято настройка, что sessionID переписывает query string? Или может быть я какойто простой ошибки не замечаю?
{$lang} это смарти, там все в порядке.

Еще: на моем локальном сервере все работает. Значит чтото с сервером

Надеюсь на вашу помощь
 

Xeon303

Новичок
Заголовки HTTP-запросов проверил? URL правильный в запросе? Данные и куки отсылаются в нем?
 

dimagolov

Новичок
Xeon303, ты забегаешь вперед.

player, ты выложи здесь (в нужных тегах) не то, что у тебя в файле, а то, что оказывается у браузера, то есть исходный код страницы через "view page source"
 

no_santa

Снегур
---- оффтоп ----
Давно-давно я часто сталкивался с такой проблемой, особенно когда перегоняешь много разных сайтов с нескольких разных хостингов на несколько других хостингов... Фу.

В качестве универсального решения - передавай режим (action) на типа ЧПУ урл, или в поле hidden постом. Вообще гет - это плохо. Без него живется веселей, отвечаю! :)
 

player

Новичок
dimagolov

Да, форму проверил, все в порядке, путь тоже правильный прописывается.

Xeon303
Просмотрел http хедеры, и вправду тут чтото интересное: пишет

HTTP/1.x 302 Moved Temporarily
Date: Wed, 09 Sep 2009 19:41:15 GMT
Server: Apache
X-Powered-By: PHP/5.2.8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: account.php?PHPSESSID=mrnscnu49tppu1oihi7ugmq083
Vary: User-Agent,Accept-Encoding
Content-Encoding: gzip
Content-Length: 1290
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html


Только что это значит? Файл на месте. Что значит временно перенесен (moved temporarily)?
 

player

Новичок
да, use_trans_sid стояло на 0. на моем тестовом, где все работает, она включена. Сделал ini_set ('session.use_trans_sid', 1); , phpinfo показывает что успешно включилась эта опция, но страница ведет себя так же. Перенаправляет на просто account.php

А, понимаю, значит надо это переключать до начала обработки скрипта?
 

dimagolov

Новичок
странно. должно было быть строго наоборот. похоже, что у тебя какой-то скрипт делает переадресацию для установки сессии, если ее нету, а нету ее потому что сессионная кука не работает. я бы разобрался, почему сессия не работает через куки и кто делает переадресацию.

но кроме этого, тебе вообще-то правильно сказали, не страдай ерундой с GET параметрами, особенно в POST формах, делай это hidden input-ом.
 

player

Новичок
я бы разобрался, почему сессия не работает через куки и кто делает переадресацию
Я проверил, сервер использует куки для хранения сессии. но почемуто в этом случае добавляет его в квери стринг. Вообщето при методе "пост" сервер добавляет скрытое поле с сессией в формуляр. Но тут-то происходит какойто редирект:

HTTP/1.x 302 Moved Temporarily

Откуда может еще такая реакция быть?
 

dimagolov

Новичок
смотри в mod_rewrite ну и в самом account.php может быть что-то.
самое простое, вставь запись в лог с отметкой времени в первую строку account.php и сравнивай с access-логом апача, сколько раз происходило реальное исполнение скрипта.

-~{}~ 10.09.09 19:10:

Вообщето при методе "пост" сервер добавляет скрытое поле с сессией в формуляр.
нет, просто если сессионная кука есть, то она будет включена в запрос (куки вставляются в заголовок), а передаваемые "постом" данные в тело запроса (в отличии гет-а, где все параметры идут как значение одного из заголовков).

п.с. тут еще подумалось на тему "куда девается сессия". может она неправильно ставится, e.g. на www.site.ru, а запрос формы идет на просто site.ru и из-за этого сессия идет лесом?
 

player

Новичок
Тут чтото вообще странное делается, теперь не работает контактный формуляр, хоть с сессией, хоть без. Вот репорт хедеров:

POST /kontakt.php HTTP/1.1
Host: www.site.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.site.ru/kontakt.php
Cookie: PHPSESSID=ihbe3n744afqsuqldciii2mdm4
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
name=&email=&text=&Submit.x=49&Submit.y=10&Submit=submit
HTTP/1.x 200 OK
Date: Fri, 11 Sep 2009 10:57:13 GMT
Server: Apache
X-Powered-By: PHP/5.2.8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: User-Agent,Accept-Encoding
Content-Encoding: gzip
Content-Length: 1103
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

Остальные формы работают
 
Сверху