【发布时间】:2014-03-28 21:52:29
【问题描述】:
我目前正在做一个项目,我正在尝试让用户名在他们登录时显示在页面上。 我试图在不同的地方呼应用户名,但它对我不起作用。 谁能告诉我要输入什么代码以及在哪里输入?
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("project") or die(mysql_error());
if(isset($_COOKIE['ID_my_site']))
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
{ header("Location: login.php");
}
else
{
echo "Admin Area<p>";
echo "Your Content<p>";
echo "<a href=logout.php>Logout</a>";
}
}
}
else
{
header("Location: login.php");
}
?>
【问题讨论】:
-
你的 COOKIE 得到用户名了吗
-
你可以在你的 while 循环中的任何地方给出以下内容: echo $info['username'];
-
您的 mysql 查询不安全,如果可以,请使用 PDO。 php.net/manual/en/class.pdo.php 并且不要在 cookie 中存储任何用户数据,例如存储登录令牌。此外,您通过使用已有的用户名搜索数据库来获取用户名? ID对我来说听起来像一个数字。如果您做对了所有事情,您将通过
$info['username']获取用户名。 -
您永远不应该在 cookie 中存储密码。用户名都不是(除了使下次登录更容易)。使用会话变量来存储当前用户的数据。
-
已经提到不要使用cookies存储密码。但是,如果用户在其计算机上禁用 cookie,并且如果您确实修复了代码以使其正常工作,它将失败。最好使用sessions