0

喂!

我有一个想要提交的表单,但我需要添加 PHPSESSID,因为有些客户端不允许使用 cookie。

我的页面上有几个显示用户列表(搜索、排序、打开详细信息)的 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>

提前致谢!

再见,巴斯蒂

[编辑] session.use_trans_sid 设置为 true

4

2 回答 2

2

使用隐藏字段应该可以工作 - 如果没有,那么 session.use_trans_sid 可能在你的 php.ini 中关闭

您可以将其添加到隐藏字段然后说

if (!empty($_POST['PHPSESSID']))
   session_start($_POST['PHPSESSID']);
else
    session_start();
于 2008-10-13T15:21:47.653 回答
2

当您说将其放入隐藏字段不起作用时,您能详细说明什么不起作用吗?

当面临每个(或很多)表单提交都需要传递一些状态信息的情况时,输入 type=hidden 字段是执行此操作的规范方法。

只是在这里在黑暗中猜测。您是否正在使用 style="display:none" 或类似的方式进行输入?如果是这样,请将其更改为真正的 <input type="hidden"> 标记。许多浏览器不会提交通过 display:none 隐藏的表单字段。

黑暗中的另一个刺:您是否通过javascript将隐藏表单添加到页面?像 foo.innerHTML 调用一样?同样,某些浏览器无法正确处理以这种方式添加到页面的表单字段。您要么需要从一开始就有 sessionid,要么重写处理从服务器返回的数据的 ajax 方法,以通过 dom 操作而不是 innerHTML 插入输入字段。

于 2008-10-13T15:30:41.707 回答