2013-04-29 124 views
-2

这里我有情况的表单提交到同一页面后设置cookie .....在PHP表单提交中设置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

问题是? Cookie未设置?它被吃掉了吗? Cookie开始与你谈话?或者是度假的cookie?也许曲奇只是偏执狂,不想被打扰:| – dbf 2013-04-29 12:09:38

+0

我不想让饼干过期.............. – 2013-04-29 12:11:00

+1

生活是不公平的......即使饼干不得不在某个时候死亡: ..所以饼干没有设置,你在评论中说的答案..你怎么检查它没有设置?什么'setcookie'返回? ..'如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE。如果setcookie()成功运行,它将返回TRUE。这并不表示用户是否接受了cookie.' – dbf 2013-04-29 12:12:48

回答

-1

问题解决了,大家好.........

我刚刚提交到另一个页面,现在它是未来精细.......

下面是代码另一个页面

<?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"); 
?> 
1

为了让该cookie通过以下文档

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

读一生3210

在这里你所描述的paramterlist找到

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

,你需要用TTL,例如提供价值$expiretime()+60*60*24*30这将使cookie从现在开始有效30天!

如果你想拥有任何你想存储可马上在输出HTML内容,你应该只把$ _COOKIE [“什么”]到一个变量,并使用该

+0

我试过这个,但它没有给任何反应的家伙.... – 2013-04-29 12:19:30

+0

所以你在你的回复中没有看到任何“SET-COOKIE”标题,一旦调用该脚本? – MatthiasLaug 2013-04-29 12:21:38

+0

我看到你在'setcookie'调用之后立即调用'$ _COOKIE'。这是不可能的。'$ _COOKIE'只会继承客户端在请求头中发送的值。 – MatthiasLaug 2013-04-29 12:22:31

1

这是不可能设置饼干,永不过期,但..

如果你不想要一个cookie过期,那么你可能想要设置它20年。

如果你希望你的cookies可用在当前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')); 
    } 
} 
0

根据this计算,它们对网站的cookie有一些限制。
你确定你没有达到上限吗?

+0

它并不意味着极限错误是我们无法在同一页面中设置cookie .............我们必须设置它在另一个页面,然后将cookie引用到这里.......... – 2013-04-29 12:43:43

+0

哈哈.. nvm。这很好,最重要的是你找到答案:) – haudoing 2013-04-29 12:57:43