【问题标题】:Forms and no Cookies - elegant way to submit forms表单和无 Cookie - 提交表单的优雅方式
【发布时间】:2010-09-16 21:53:09
【问题描述】:

喂!

我有一个想要提交的表单,但我需要添加 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

【问题讨论】:

    标签: php javascript html session


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      你可以把它添加到一个隐藏字段然后说

      if (!empty($_POST['PHPSESSID']))
         session_start($_POST['PHPSESSID']);
      else
          session_start();
      

      【讨论】:

      • 喂! “隐藏字段应该工作” - 这里的关键是“应该”;)遗憾的是它没有。但我会尝试使用 POST 参数启动会话。
      猜你喜欢
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 2013-06-01
      • 1970-01-01
      相关资源
      最近更新 更多