Формы и не Cookies - элегантный способ отправки форм - PullRequest
0 голосов
/ 13 октября 2008

Ха!

У меня есть форма, которую я хочу отправить, но мне нужно добавить PHPSESSID, потому что некоторые клиенты не допускают куки.

На моей странице есть несколько функций javascript, которые отображают список пользователей (поиск, сортировка, открытые данные), страница генерируется PHP.

Теперь я ищу элегантный способ включить PHPSESSID в каждую отправку моей формы - это нужно сделать на нескольких страницах, поэтому я надеюсь на простое решение. Добавление PHPSESSID к действию или в скрытое поле не работает должным образом.

Или эта проблема находится в другом месте? Возможно, клиент находится за слишком ограниченным брандмауэром или что-то в этом роде. Любые идеи (особенно с решениями ;-)) в этом направлении также приветствуются!

Пример кода (очень упрощенный):

<form name="userlist" method="POST" action="./myuserlist.php">
[...some formfields and stuff..]
</form>

<script>
//one example function, there are several on my page
function next_page()
{
  //set some hidden field to get the next page
  document.forms[0].submit();
}
</script>

Заранее спасибо!

Bye, Basty

[EDIT] session.use_trans_sid имеет значение true

Ответы [ 2 ]

2 голосов
/ 13 октября 2008

Когда вы говорите, что поместить его в скрытое поле не работает, вы можете уточнить, что с ним не работает?

Когда возникает ситуация, когда каждая (или большая часть) отправляемых форм требует передачи информации о состоянии, поле ввода type = hidden является каноническим способом сделать это.

Просто гадать в темноте здесь. Вы делаете что-то вроде ввода с помощью style = "display: none" или что-то в этом роде? Если это так, измените его на добросовестный тег . Многие браузеры не будут отправлять поля формы, которые скрыты с помощью дисплея: нет.

Еще один удар в темноте: вы добавляете скрытую форму на страницу через javascript? Как и вызов foo.innerHTML? Опять же, некоторые браузеры не будут правильно обрабатывать поля формы, добавленные на страницу таким образом. Вам либо нужно иметь сессионный идентификатор с самого начала, либо переписать свой метод ajax, который обрабатывает данные, возвращаемые с сервера, для вставки поля ввода с помощью манипуляции dom, а не innerHTML.

2 голосов
/ 13 октября 2008

Использование скрытого поля должно работать - если это не так, вероятно, session.use_trans_sid отключен в вашем php.ini

Вы можете добавить его в скрытое поле, а затем сказать

if (!empty($_POST['PHPSESSID']))
   session_start($_POST['PHPSESSID']);
else
    session_start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...