PHP Cookie用户系统如果声明

时间:2012-10-23 02:03:38

标签: php mysql cookies session-cookies

我正在尝试让php选择应该出现哪个链接,具体取决于此人是否使用cookies登录我的网站。我试图编写这个我的自己,但它不起作用。所以我怎么去做这个这里正确的方法是我的代码:

<?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;

3 个答案:

答案 0 :(得分: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
    }
}
?>

答案 1 :(得分: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中的输入,否则您将容易受到攻击。祝你好运![/ p>

答案 2 :(得分:0)

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

    $check = mysql_query("SELECT * FROM users WHERE username = '$username' AND password='$password'") or die(mysql_error());

使用mysql_num_rows($ check)&gt; 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
}
?>