-1

在这里,我有在表单提交到同一页面后设置cookie的情况.....

这是代码:

<?php
require_once 'config.php';
$dbHandle = DBHandler::getInstance();
@session_start();
if($_POST['division'])
{
    $fromDiv =$_POST['division'];
    $divId =explode(',',$fromDiv);
    echo $divId[0].'~';
    echo $_COOKIE['preDiv'].'dfg'.'<br/>';
    setcookie("preDiv",$divId[0],time() + (10 * 365 * 24 * 60 * 60));
    $_SESSION['division'] = $divId[0];
}
$sql=$dbHandle->execQuery("SELECT * FROM master_division");
$division_str = '<option value="">--select--</option>';
while($fetch = $dbHandle->fetchObjectQuery($sql))
{
    $division = $fetch->division_id.','.$fetch->name;
    $division_str .= '<option value="'.$division.'">'.$fetch->name.'</option>';
}

echo $_COOKIE['preDiv'].'dfg'.'<br/>';
echo $_SESSION['division'];
?>
<!DOCTYPE html>
<html>
<body class="login" style="overflow: hidden;">

        <div class="login-box" style="position: absolute;z-index: 999;padding: 10px;width: 40%;min-height: 200px;margin-left:-20%;">
            <section class="portlet login-box-top" style="height:100%;">
                <header>
                    <h2 class="ac">CHOOSE DIVISION To MEDISMO CRM LOGIN</h2>
                </header>
                <section style="height:76%;">
                    <div id="popup_box" > <!-- OUR PopupBox DIV-->
                    <div id="group_comp" style="margin-top:15%;margin-left:20%;">
                    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" style="border:none;">
                    <label><b>Choose Division:</b></label>
                    <select id="division" name="division"><?php echo $division_str;?></select>
                    <input type="submit" id="ok" value="OK" />
                    </form>
                    </div>
                </div>
                </section>
            </section>
        </div>
</body>

</html>

任何人都建议我其中有什么问题...

4

4 回答 4

1

为了让 cookie 有一个生命周期,请阅读以下文档

http://php.net/manual/de/function.setcookie.php

在这里你可以在描述的参数列表中找到

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

$expire您需要提供 TTL的值,例如time()+60*60*24*30,这将使 cookie 从现在起在 30 天内有效!

如果您想在输出 html 内容时立即使用您想要存储的任何内容,您应该将 $_COOKIE['whatever'] 放入变量并使用它

于 2013-04-29T12:16:19.150 回答
1

无法设置永不过期的 cookie,但是..

如果您不希望 cookie 过期,那么您可能希望将其设置为 20 年。

如果您希望您的 cookie 在当前 HTTP 请求中可用(在您设置它们之后),您可以执行以下操作:

function cookieSet(array $data){
   foreach($data as $key => $value){

      $_COOKIE[$key] = $value; // <- to make them available on current HTTP request

      setcookie($key, $value, time() + strtotime('+20 years'));
   }
}
于 2013-04-29T12:35:48.760 回答
0

问题解决了伙计们......

我刚刚提交到另一个页面,现在一切正常......

这是另一个页面的代码

<?php
@session_start();
if($_POST['division'])
{
    $fromDiv =$_POST['division'];
    $divId =explode(',',$fromDiv);
    setcookie("preDiv",$divId[0],time()+60*60*24*365);
    $_SESSION['division'] = $divId[0];
}
header("Location: index.php");
?>
于 2013-04-29T12:40:13.117 回答
0

据此他们对网站的 cookie 有一些限制。
你确定你没有达到极限?

于 2013-04-29T12:41:45.090 回答