首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Cookie用户系统If语句

问PHP Cookie用户系统If语句
EN

Stack Overflow用户
提问于 2012-10-23 10:03:38
回答 3查看 560关注 0票数 0

我试着让php根据这个人是否使用cookies.I登录到我的站点来选择应该显示哪个链接。我试着自己编写代码,但它不是working.So。我该怎么做呢?下面是我的代码:

代码语言:javascript
复制
<?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;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-23 10:27:33

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

代码语言:javascript
复制
    $check = mysql_query("SELECT * FROM users WHERE username = '$username' AND password='$password'") or die(mysql_error());

并使用mysql_num_rows($check)>0查看是否找到有效用户。以下是一个完整的代码,但请注意,这是一个糟糕的编码实践,你说你正在做它。

代码语言:javascript
复制
<?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
}
?>
票数 0
EN

Stack Overflow用户

发布于 2012-10-23 10:08:11

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

代码语言:javascript
复制
$password = $_COOKIE['maxgee_me_password']; 

你正在将它与自身进行更深层次的比较:

代码语言:javascript
复制
if ($password != $_COOKIE['maxgee_me_password']) 

您可以通过将比较替换为以下内容来修复它:

代码语言:javascript
复制
if ($password != $info['password']) 

你还少了一些花括号。如果这不是脚本的末尾,则需要在else之前和代码的末尾添加一个。使用格式化和上面的修复:

代码语言:javascript
复制
<?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
EN

Stack Overflow用户

发布于 2012-10-23 10:25:21

代码语言:javascript
复制
<?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中的输入,否则您将容易受到攻击。祝你好运,伙计!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13022579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档