2012-03-30 46 views
1

我創建了2個不同的目錄,在我的網站如下

my_site.com/boo 

my_site.com/koo 

和我在下面的兩個測試腳本上傳( 3檔)

1.PHP //輸入形式

<?PHP 
session_start(); 
echo $_SESSION['msg']; 
unset($_SESSION['msg']); 
?> 
<form method="post" action="2.php"> 
<input name="loginid" type="text" id="loginid"> 
<input type="Submit" name="Submit" value="Login"/> 
</form> 

2.PHP //檢查是否登錄是否正確(送我去3.php)如果不是那麼回1.PHP

<?PHP 
session_start(); 
$loginid=$_POST['loginid']; 
if ($loginid="okay") { 
$_SESSION['loginid'] = "logged"; 
header("Location: 3.php "); 
exit; 
} else { 
$_SESSION['msg'] = "Wrong"; 
header("Location: 1.php "); 
exit; 
} 
?> 

3.php //它應該給你好管理員如果登錄正確的。

<?PHP 
session_start(); 
if ($_SESSION['loginid']) { 
echo "Hello To Admin"; 
} else { 
$_SESSION['msg'] = "Please Login"; 
header("Location: 1.php "); 
exit; 
} 
?> 

現在我的問題

如果我去my_site.com/boo/1.php並登錄正確 然後有一次,我去my_site.com/koo/3.php它給我留言Hello to admin,就好像我登錄,這意味着如果我2在我的網站上使用相同的PHP骨架2個不同的目錄上的不同腳本,所以我可以登錄到兩個!爲什麼不獨特。

它會傷害我,就好像我在我的網站有不同的目錄中已經相同的腳本,我不確實想給訪問所有:)

我的想法,但不知道是否正確,或不那麼請指教。

我來補充檢查文件(2.PHP)隨機碼

<?PHP 
session_start(); 
$loginid=$_POST['loginid']; 
if ($loginid="okay") { 

$random = rand(1, 1000000); 
$_SESSION['loginid'] = "".$random.""; // random 

header("Location: 3.php "); 
exit; 
} else { 
$_SESSION['msg'] = "Wrong"; 
header("Location: 1.php "); 
exit; 
} 
?> 

所以任何幫助 〜感謝

+1

會話跨越一個網站內的目錄,你剛發現。 – 2012-03-30 13:37:01

回答

2

會話不限於一個目錄或文件,它是共享數據的方式來自同一個用戶...它意味着以這種方式工作

0

使用session_name()做出獨特的會話:

/古永鏘:

session_name('koo'); 

session_start(); 

/foo:

session_name('foo'); 

session_start(); 
1

您可以使用session_name()。這將使您的$ _SESSION變量連接到會話名稱而不是全局會話上下文。

文檔: http://se.php.net/manual/en/function.session-name.php

第1頁:

session_name('first_page'); 
session_start(); 
$_SESSION['hello'] = "hi"; 

第2頁:

session_name('second_page'); 
session_start(); 
// will generate false 
var_dump(isset($_SESSION['hello'])); 
相關問題