這裏有幾個問題:我的最終目標是密碼保護文件logged_in.php。密碼保護頁面(使用db訪問)
注意:我只是一個初學者/中級程序員,所以我想要清楚的解釋。
首先,我已經在數據庫表中設置了用戶名和密碼。
我有兩個頁面:login.php和logged_in.php(名稱僅用於示例目的)。我如何「要求」用戶首先通過login.php(登錄進程)才能訪問logged_in.php(如果輸入的用戶名/密碼正確)?
這是密碼保護頁面的最佳方式嗎?
我已經試過:
的login.php:
<?php
$db_host="host";
$db_user="user";
$db_pass="pass";
$db_name="name";
$db_table="table";
$user = mysql_real_escape_string(strip_tags($_POST['user']));
$pass = mysql_real_escape_string(strip_tags($_POST['pass']));
mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
if(isset($user) && isset($pass))
{
$sql = "SELECT * FROM $db_table WHERE username='$user' AND password='$pass'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count == 1)
{
header("location:logged_in.php");
}
else
header("location:bad_login.html");
}
?>
,此刻我的代碼的問題是,有人能的URL直接鍵入logged_in.php和訪問頁面,而不需要「必須」先通過login.php(我確定這是顯而易見的每個人..)。我的
require(login.php);
位於logged_in.php的頂部;然而,這並沒有奏效。我已經檢查谷歌一些很好的教程關於這個主題,不幸的是我找不到任何有明確的解釋。
我還在stackoverflow上看到了關於此主題的其他一些問題,但他們並沒有真正幫助我。
我也有興趣在能夠通過保護使用方法phpMyAdmin的使用我的網頁(當你在URL,然後按類型輸入它就向下從瀏覽器的要求一個頂部的菜單用戶名密碼)。我不知道那是如何工作的。如果有人能告訴我這是如何工作的,我願意完全忽略我現在嘗試使用的方法(如果phpMyAdmin方法足夠安全並且相當容易實現)。
在此先感謝!
只是一個興趣點:在連接到MySQL之前調用mysql_real_escape_string()。該功能需要連接到MySQL(請參閱doc)。你應該把你的'mysql_connect()'行增加3行。 – Ozzah
*一般建議不保證答案:*初學者或沒有,閱讀PDO代替'mysql_ *'函數;我在一段時間之前轉過身,從不回頭。此外,* Location *'header()'「需要」一個絕對URI(*,例如'http:// server/path/to/resource';它不會「要求」它,因此引號,但一些用戶代理可能無法正確重定向*) – Dan
@Ozzah謝謝你讓我知道。 – corecase