我送登錄狀態=失敗,回到我的登錄page.Here是我的代碼 -傳值到另一個PHP
header("location:index.php?login=fail");
但通過URL喜歡 -
http://localhost/303/index.php?login=fail
發送
有什麼方法可以在不顯示URL的情況下傳遞值?以及如何在第二頁上獲得這個值?
我送登錄狀態=失敗,回到我的登錄page.Here是我的代碼 -傳值到另一個PHP
header("location:index.php?login=fail");
但通過URL喜歡 -
http://localhost/303/index.php?login=fail
發送
有什麼方法可以在不顯示URL的情況下傳遞值?以及如何在第二頁上獲得這個值?
您通過GET請求,這就是爲什麼它會出現在URL傳遞該值。爲了傳遞一個值而不在URL中顯示它,你想通過一個POST請求來傳遞它。
爲了做到這一點,您不希望將該值「返回」到您的登錄頁面。相反,無論php表單在點擊「登錄」按鈕後處理登錄用戶的過程,都將決定顯示用戶的內容。
<form method="post" action="checkLogin.php">
Username:
<input type="text" name="username" maxlength="25" />
Password:
</td><td><input type="password" name="password" />
<input type="submit" name="submit" value="Login">
</form>
爲了:
$_POST['username'];
將獲得與您通過POST傳遞的名稱爲「用戶名」的價值 -
在PHP後的變量可以通過全局$ _ POST對象來訪問動態保存並向用戶顯示錯誤,可以將它們存儲在會話中,例如有一個名爲「errors.php」的文件。
<?php
if (isset($_SESSION['errors']))
{
echo $_SESSION['errors'];
}
unset($_SESSION['errors'])
?>
而在你的PHP檢查登錄,這樣做:
session_start();
$_SESSION['errors'] = "Invalid username or password.";
然後重定向到登錄頁面(不傳遞任何變量)和你的表格上總是有這一領域:
<?php include("errors.php"); ?>
如果您沒有任何錯誤,則不會顯示任何內容,並且登錄頁面看起來很正常。
注意:在任何使用session_start()的php表單中,它都是第一件事。
他要求重定向 – 2010-05-14 12:47:59
但是在標題( - )中我怎樣才能指定method =「Post」? – nectar 2010-05-14 12:54:32
你不會在標題中指定任何東西 - 如果你將它們重定向回登錄頁面或「索引」或其他東西 - 在該頁面上有<?php include(「errors.php」)?>。然後,無論您存儲在會話中的任何錯誤都會顯示在那裏。會話中的值存儲在服務器上,您不需要傳遞它們。 – 2010-05-14 12:55:59
其他方法是使用會話或隱藏字段但你你在做什麼是很好的目的。您可以在以後檢索這樣的值:
if ($_GET['login'] === 'fail')
{
// failed.......
}
有幾種方法來完成你的任務
不知道你是否會依賴於可變知道,如果用戶成功loged或沒有,但請記住,你永遠不應該依賴無論是$ _GET還是$ _POST變量,因爲它們都可以被用戶操縱。使用$ _SESSION來存儲那種信息 – 2010-05-14 13:06:39
@Gonçalo什麼樣的信息?簡單的錯誤信息?你在開玩笑 – 2010-05-14 13:15:46
@Shrapnel不,不是簡單的錯誤信息。您用來了解登錄是否成功的信息。我不知道Piyush是否想隱藏登錄變量,所以用戶不能將登錄名更改爲true,並繞過一些「if」...我只是建議他,讓一個var POST贏得' t使用戶難以改變它 – 2010-05-14 21:49:47