2011-11-22 81 views
0

我試圖確保第2頁的GET方法(顯示結果)中的參數不會被URL中的其他人(問號後面的變量)所改變用戶單擊第1頁上的提交按鈕(其中包含表單)。檢查URL是否被篡改

教授要求我們使用isset()都實行這一要求

這裏的登錄頁面:(page1.php中)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional ...> <html 
xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Login 
Page</title> </head> 

<body> 

 <label>User ID:</label> 
    <input type="text" name="uid"> 
    <br /> 
    <input type="submit" value="SubmitCredentials" name="SubmitCredentials"/> 
     <br /> 
    </form> </body> </html> 

這是第二頁: (page2.php)

<?php 
    // get the data from the form 
    $uid = $_GET['uid']; 

    if(!isset($_GET['SubmitCredentials'])){ 
     include('error.html'); 
     exit(); 
     } 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional 
    ...> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>HELLO</title> 
</head> 
<body> 
     <label>Hello,</label> 
     <span><?php echo $uid; ?></span><br /> 

</body> 
</html> 

但是,if聲明似乎不起作用。當我更改URL中的變量uid(例如,當我將URL更改爲http://localhost/1/page2.php?uid=admin)時,它應該將頁面轉發到error.html,但事實並非如此。我該如何解決它?

PS:相關的教程中,我對谷歌>>> http://www.homeandlearn.co.uk/php/php4p7.html

+0

@minitech的形式通過GET –

+0

您的鏈接將發送數據:通過'http://localhost/1/page2.php的uid =管理及SubmitCredentials = SubmitCredentials' **和用戶可以更改,而無需點擊提交**'http://localhost/1/page2.php?uid = superadmin&SubmitCredentials = SubmitCredentials' –

回答

-1

頁#1發現:

<form method="GET" action="..."> 
    <input> 
    <input> 
    <input> 
</form> 

提交網址:

http://localhost/1/page2.php?SubmitCredentials=SubmitCredentials&uid=admin&i_like_php=yes&... 
+0

我不太明白你的意思:\ – user1058806

+0

沒有

開放標籤在你的HTML – Peter

1

嘗試:

 
if(!isset($_GET['SubmitCredentials'])){ 
     header('Location: error.html'); 
     } 

+0

我試過,但同樣的事情:( – user1058806

0

Isset在數組中不安全。嘗試用===操盤手比較:

if(!($_GET['SubmitCredentials'] === 'SubmitCredentials')) { 
    include('error.html'); 
    exit(); 
} 
+0

我試過,但同樣的事情:( – user1058806