2014-04-19 24 views
0

我是一名PHP新手。我知道這是造成安全漏洞,但它只是爲了測試和學習的理由。我發現session.use_trans_id = true和session.use_cookies = false設置迫使瀏覽器通過url傳輸會話ID。但它沒有發生。我正在使用兩個PHP文件。對於下站立好我在這裏複製的代碼 林test8.php文件 -會話ID不會通過網址傳播

ini_set("session.use_cookies",0); 
//ini_set("session.use_only_cookies",0); 
ini_set("session.use_trans_sid",1); 
session_start(); 
echo ini_get("session.use_trans_sid"); 
echo ini_get("session.use_cookies"); 
$_SESSION['name']="sovon"; 
?> 
<form action="test9.php" method="post" enctype="multipart-formn/data" > 
<input type="text" name="name"/> 
<input type="submit"/> 
</form> 
<a href="test9.php">click</a> 

在test9.php文件 -

session_start(); 
echo session_id(); 
echo "</br>"; 
echo ini_get("session.use_trans_sid"); 
echo "</br>"; 
echo ini_get("session.use_cookies"); 
echo "</br>"; 
echo $_SESSION['name']; 

是否我提交表單或點擊鏈接會話ID不通過網址傳輸。在test9.php文件中,session.use_trans_id再次變爲false。但變量的值沒有顯示。我通過在瀏覽器中停止cookie來嘗試它。但仍然沒有工作。

我理解錯了嗎?什麼是錯的? 請幫我嗎? 等待回答。

回答

0

小心弄亂$ _SESSION,例如不要用數組初始化它,如$ _SESSION = array()。無論如何,它會在窗口上感到困惑。我不得不重新啓動電腦,讓會話再次正常工作。不管...

我提供你的腳本,刪除了一些小錯誤,下面。

我已經爲PHP存儲會話密鑰的所有相關區域添加了「var_dumps」。

請注意:

的$ _SESSION [ '名']總是保留。

1)如果點擊鏈接,會話ID將返回到'$ _GET'數組中。

2)單擊窗體時,會話ID在'$ _POST'中返回。

p.s.在製作這個答案時沒有使用餅乾。

經測試的代碼:在Windows XP上的PHP 5.3.18。

Q23172926_index

<?php // Q23172926_index 

ini_set("session.use_cookies",0); 
//ini_set("session.use_only_cookies",0); 
ini_set("session.use_trans_sid",1); 
session_start(); 
echo ini_get("session.use_trans_sid"); 
echo ini_get("session.use_cookies"); 
$_SESSION['name']="sovon"; 
?> 
<form action="Q23172926_test9.php" method="post" enctype="multipart-form/data" > 
<input type="text" name="name" value="who are you?"/> 
<input type="submit" name="go" value="Go For It!"/> 
</form> 
<a href="Q23172926_test9.php">click</a> 
<?php 
var_dump(__FILE__ . ' after HTML output', 
     '$_GET ==}', $_GET, '{== $_GET', 
     '$_SESSION ==}', empty($_SESSION) ? 'no session yet' : $_SESSION, '{== $_SESSION', 
     '$_COOKIE ==}',empty($_COOKIES) ? 'no cookies' : $_COOKIES, '{== $_COOKIES', 
     '$_POST ==}', $_POST, '{== $_POST'); 

Q23172926_test9

<?php // Q23172926_test9 
var_dump(__FILE__ . ' before session_start() -- check $_GET/$_POST for session_id 
     '$_SESSION ==}', empty($_SESSION) ? 'no session yet' : $_SESSION, '{== $_SESSION', 
     '$_COOKIE ==}',empty($_COOKIES) ? 'no cookies' : $_COOKIES, '{== $_COOKIES', 
     '$_POST ==}', $_POST, '{== $_POST'); 

session_start(); 

var_dump(__FILE__ . ' After session start', 
     '$_SESSION ==}', empty($_SESSION) ? 'no session yet' : $_SESSION, '{== $_SESSION' 
     ); 

echo session_id(); 
echo "</br>"; 
echo ini_get("session.use_trans_sid"); 
echo "</br>"; 
echo ini_get("session.use_cookies"); 
echo "</br>"; 
echo 'Name should be here ==}', $_SESSION['name'] ,' {== Name should be here';