2013-04-29 78 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