【发布时间】:2011-08-29 03:13:35
【问题描述】:
这里有几个问题:我的最终目标是密码保护文件logged_in.php。
注意:我只是一个初学者/中级程序员,所以我希望得到清晰的解释。
首先,我在数据库表中设置了用户名和密码。
我有两个页面:login.php 和 logged_in.php(名称仅用于示例目的)。我如何“要求”用户首先通过 login.php(登录过程)才能访问 logged_in.php(如果输入的用户名/密码正确)?
这是密码保护页面的最佳方式吗?
我尝试过的:
登录.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");
}
?>
-
1234563对每个人都是显而易见的......)。
我把
require(login.php);放在logged_in.php的顶部;然而,这并没有成功。我在 google 上查看了一些关于这个主题的好教程,不幸的是我找不到任何有明确解释的教程。
我还在 stackoverflow 上看到了一些关于此主题的其他问题,但它们并没有真正帮助我。
我也有兴趣使用 phpMyAdmin 使用的方法来保护我的页面(当您输入 URL 并按 Enter 时,它会从浏览器顶部下拉一个菜单,要求输入用户名/密码) .我不知道那是怎么回事。如果有人能告诉我它是如何工作的,我愿意完全忽略我目前尝试使用的方法(如果 phpMyAdmin 方法足够安全并且相当容易实现)。
提前致谢!
【问题讨论】:
-
只是一个兴趣点:您在连接到 MySQL 之前调用了
mysql_real_escape_string()。该功能需要连接到 MySQL(参见 doc)。您应该将您的mysql_connect()队列移动 3 行。 -
不值得回答的一般建议: 无论是否初学者,请阅读 PDO 以代替
mysql_*函数;我前一阵子换了,再也没有回头。此外,Locationheader()“需要”一个绝对 URI(例如http://server/path/to/resource;它不“需要”它,因此是引号,但某些用户代理可能不会重定向正确没有它) -
@Ozzah 感谢您告诉我。
-
@Bracketworks 好的,谢谢。
标签: php mysql database phpmyadmin password-protection