形式和没有饼干 - 优雅的方式提交表格
我有一个表格希望提交,但我需要添加PHPSESSID,因为有些客户端不允许cookies。
我的页面上有几个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>
提前感谢!
再见, Basty
[编辑] session.use_trans_sid指定设置为true
使用隐藏字段应该努力 - 如果它不那么session.use_trans_sid指定可能是关闭你的php.ini中
你可以把它添加到一个隐藏字段,然后说
if (!empty($_POST['PHPSESSID']))
session_start($_POST['PHPSESSID']);
else
session_start();
当你说把它放到一个隐藏的领域是行不通的,你能详细说明一下什么对它不起作用吗?
当面对每个(或很多)表单提交需要传递一些状态信息的情况时,输入类型=隐藏字段是执行此操作的规范方法。
只是在这里黑暗中猜测。你是在做一些类似于style =“display:none”或类似的输入吗?如果是这样,请将其改为真正的< input type =“hidden”>标记。很多浏览器不会提交通过显示隐藏的表单域:无。
黑暗中的另一个刺:你是否通过JavaScript添加隐藏窗体到页面?像foo.innerHTML调用一样?同样,一些浏览器不会正确处理以这种方式添加到页面的表单字段。您需要从一开始就将sessionid放在那里,或者重写您的ajax方法,该方法处理从服务器返回的数据以通过dom操作而不是innerHTML插入输入字段。
Hoi! “隐藏领域应该工作” - 这里的关键是“应该”;)可悲的是它不。但我会尝试使用POST参数启动会话。 – bastiandoeen 2008-10-13 15:32:11