0

我正在尝试让 php 根据此人是否使用 cookie 登录到我的网站来选择应该显示的链接。我尝试自己编写代码,但它不起作用。那么我将如何以正确的方式进行此操作这是我的代码:

<?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> &nbsp;&nbsp 
         <?php
    else {
    ?> <a href="loginpage.php"><?php echo "User Login";} ?></a> &nbsp;&nbsp;
4

3 回答 3

1

您从未从查询中读取密码。你在顶部有这个:

$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> &nbsp;&nbsp;
    <?php }else{ ?>
        <a href="loginpage.php">User Login</a>&nbsp;&nbsp;
    <?php
    }
}
?>
于 2012-10-23T02:08:10.630 回答
0
<?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 中,但我想我仍然记得要点。切记永远不要相信输入,包括保存在 cookie 中的输入,否则您将容易受到攻击。祝你好运!

于 2012-10-23T02:25:20.890 回答
0

你的代码有很多错误。首先,在检查是否存在有效用户时,需要同时使用用户名和密码。假设您的表中也保存了密码。

    $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> &nbsp;&nbsp 
        <?php
    }
    else
    {
        ?>
        <a href="loginpage.php"><?php echo "User Login"; ?></a> &nbsp;&nbsp;
        <?php
    }
}
else
{
    ?>
    <a href="loginpage.php"><?php echo "User Login"; ?></a> &nbsp;&nbsp;
    <?php
}
?>
于 2012-10-23T02:27:33.130 回答