我试着让php根据这个人是否使用cookies.I登录到我的站点来选择应该显示哪个链接。我试着自己编写代码,但它不是working.So。我该怎么做呢?下面是我的代码:
<?php
if(isset($_COOKIE['maxgee_me_user'])) {
$username = $_COOKIE['maxgee_me_user'];
$password = $_COOKIE['maxgee_me_password'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
//if the cookie has the wrong password, echo's login
if ($password != $_COOKIE['maxgee_me_password'])
{ ?> <a href="logout.php"><?php echo "Logout"; ?></a>  
<?php
else {
?> <a href="loginpage.php"><?php echo "User Login";} ?></a> 发布于 2012-10-23 10:27:33
你的代码中有很多错误。首先,在检查是否存在有效用户时,需要同时使用用户名和密码。假设您的表中也保存了pwd。
$check = mysql_query("SELECT * FROM users WHERE username = '$username' AND password='$password'") or die(mysql_error());并使用mysql_num_rows($check)>0查看是否找到有效用户。以下是一个完整的代码,但请注意,这是一个糟糕的编码实践,你说你正在做它。
<?php
if(isset($_COOKIE['maxgee_me_user']))
{
$username = $_COOKIE['maxgee_me_user'];
$password = $_COOKIE['maxgee_me_password'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username' AND password='$password'") or die(mysql_error());
if (mysql_num_rows($check)>0)
{
?>
<a href="logout.php">Logout</a>  
<?php
}
else
{
?>
<a href="loginpage.php"><?php echo "User Login"; ?></a>
<?php
}
}
else
{
?>
<a href="loginpage.php"><?php echo "User Login"; ?></a>
<?php
}
?>发布于 2012-10-23 10:08:11
您从未从查询中读取过密码。你在顶端有这个:
$password = $_COOKIE['maxgee_me_password']; 你正在将它与自身进行更深层次的比较:
if ($password != $_COOKIE['maxgee_me_password']) 您可以通过将比较替换为以下内容来修复它:
if ($password != $info['password']) 你还少了一些花括号。如果这不是脚本的末尾,则需要在else之前和代码的末尾添加一个。使用格式化和上面的修复:
<?php
if(isset($_COOKIE['maxgee_me_user'])) {
$username = $_COOKIE['maxgee_me_user'];
$password = $_COOKIE['maxgee_me_password'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
$info = mysql_fetch_array( $check );
//if the cookie has the wrong password, echo's login
if ($password != $info['password']){ ?>
<a href="logout.php">Logout</a>
<?php }else{ ?>
<a href="loginpage.php">User Login</a>
<?php
}
}
?>发布于 2012-10-23 10:25:21
<?php
if(isset($_COOKIE["maxgee_user"])) {
$username = $_COOKIE["maxgee_user"];
$password = $_COOKIE["maxgee_password"];
$q = mysql_query("SELECT password FROM users WHERE username = '".$username."' AND password = '".$password."'");
if(mysql_count_rows($q) > 0){
print("<a href='/logoutpage.php'>Logout</a>");
}else{
print("<a href='/loginpage.php'>Login</a>");
}
}else{
print("<a href='/loginpage.php'>Login</a>");
}
?>又快又脏。我已经好几年没做过开发了。在PHP中,但我想我仍然记得要点。切记永远不要信任保存在cookies中的输入,否则您将容易受到攻击。祝你好运,伙计!
https://stackoverflow.com/questions/13022579
复制相似问题