2011-02-11 31 views
2

這是我的PHP代碼:設置會議無功

<?php 
session_start(); 

if (!isset($_SESSION['index_visited'])) 
{ 

$_SESSION['page2_visited'] = 1; 
$_SESSION['wrong_number'] = 1; 

header('Location: index.php'); 

} 
?> 

我認爲,$ _SESSION [ 'page2_visited'] = 1和$ _SESSION [ 'wrong_number'] = 1永遠不會設置。程序重定向我的index.php和多數民衆贊成它。

我所要做的設置呢?

+1

首先取消設置$ _SESSION ['index_visited']? – 2011-02-11 15:05:21

回答

1

這也許是會議沒有足夠的時間來正確保存自身重定向發生之前。

使用session_write_close();迫使會議的儲蓄頭重定向之前。

因此,這將是:

<?php 
session_start(); 
if (!isset($_SESSION['index_visited'])) { 
    $_SESSION['page2_visited'] = 1; 
    $_SESSION['wrong_number'] = 1; 

    session_write_close(); 

    header('Location: index.php'); 

} 
?> 

session_commit()工作過。這只是作爲session_write_close()的別名

1

我敢打賭$ _SESSION [ 'index_visited']設置。也許你想

如果(isset($ _ SESSION [ 'index_visited'])和$ _SESSION [ 'index_visited'] == 1){

記住,如果$ _SESSION [ 'index_visited']已被設置爲0,這個計數是按照設定的。

1

header('Location: index.php');覆蓋會話設置標題。

可選替換參數指示標頭是否應該替換先前的類似的報頭,或添加的相同類型的第二報頭。默認情況下它會被替換,但如果你傳入FALSE作爲第二個參數,你可以強制多個相同類型的頭文件。

http://php.net/manual/en/function.header.php

所以請嘗試:header('Location: index.php', false);

0

我的錯。這不是$ _SESSION ['wrong_number']的地方,現在它正在工作。無論如何,謝謝你的答案。