【问题标题】:remembering checkboxes for session记住会话的复选框
【发布时间】:2012-03-27 01:56:24
【问题描述】:

我有一些这样的复选框:

<input type="checkbox" name="regions[]" value="north-east" />North East<br />
<input type="checkbox" name="regions[]" value="north-west" />North West<br />
<input type="checkbox" name="regions[]" value="east-midlands" />East Midlands<br />
<input type="checkbox" name="regions[]" value="west-midlands" />West Midlands<br />
<input type="checkbox" name="regions[]" value="south-east" />South East<br />
<input type="submit" name="selectionsSubmit" value="Submit" />

名称和值不能设置不同,因为我在这个 php 代码中使用它:

if(isset($_POST['selectionsSubmit'])) {
$regions=$_POST["regions"];
$how_many=count($regions);
if($how_many>0)
{
    $link=home_url('/') ."?tag=";
    if($how_many!=12 && $how_many!=0)
    {
        for($i=0; $i<$how_many; $i++)
        { 
            $link=$link ."+". $regions[$i]; 
        } 
    }
wp_redirect($link);
}
else 
{
    echo 'You did not select anything.';
}}

它会生成一个标签链接并重定向到该链接。这是我的第一个 php 代码,我应该提到我使用 wordpress。

现在我需要一种方法来为会话记住选中的复选框...直到用户关闭站点。我找到了很多方法来实现这一点,但我无法让它发挥作用。我认为 HTML5 sessionStorage 可能有一些用处,但我缺乏知识使我无法找到方法。

【问题讨论】:

  • $how_many 与 $how_many_regions 有什么不同吗?
  • 你到底尝试了什么?成功启动会话并为会话变量分配值后,它应该在任何顶部带有 session_start() 的页面中都可用。
  • 不,它们是一样的......忘记编辑

标签: php html session checkbox


【解决方案1】:

尝试 php 会话,如果您的值没有被跟踪,请确保声明会话开始。首先尝试不使用它,以防 wordpress 已经开始了一个会话,这很可能。 http://php.net/manual/en/features.sessions.php

$regions=$_POST["regions"];
$_SESSION["regions"] = $regions;

编辑: @Chibuzu 是对的,如果会话不起作用,只需在您尝试访问或设置会话变量的地方使用此代码

if(session_id() == '') {
    session_start();
}

【讨论】:

    【解决方案2】:

    是的,Wordpress 不支持会话。所以你必须自己开始会话。

    session_start();
    

    可能在发送标头之前的开头某处。人们通常将它添加到配置文件或函数文件中。试试看。 然后使用 session 变量来存储你的数据。

    $_SESSION['regions'] = $regions;
    

    此外,您可以在循环中使用“foreach”而不是“for”。看看'foreach'。它比“for”更有帮助。

    【讨论】:

      【解决方案3】:

      你应该放

       <?php session_start ?>
      

      在页面顶部,以便您可以使用$_SESSION,记住:如果您访问或使用会话,您需要先声明session_start

      然后

       $_SESSION['religion'] = $_POST['religion'];
      

      等等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-28
        • 2014-02-04
        • 2011-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-21
        • 2016-03-04
        相关资源
        最近更新 更多