首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录表单php代码

问登录表单php代码
EN

Stack Overflow用户
提问于 2017-07-28 14:25:36
回答 2查看 286关注 0票数 0

我在html中创建了一个带有用户名、密码和登录按钮的表单。我已经为php创建了代码,但是它无法检查登录成功的条件,下面是php代码。除了登录成功外,它满足所有条件。我想它有一些简单的错误,我找不到它,请帮帮我。

代码语言:javascript
复制
<?php
        include_once('db.php'); 

        $username = mysql_real_escape_string( $_POST["username"] );
        $password = mysql_real_escape_string( md5($_POST["pass"]) );

        if( empty($username) || empty($password) )
            echo "Username and Password Mandatory ";
        else
        {
        $sql = "SELECT count(*) FROM users WHERE( username='$username' AND password='$password')";


        $res = mysql_query($sql);
        $row = mysql_fetch_array($res);

        if( $row[0] > 0 )
         echo "Login Successful";
        else
         echo "Failed To Login";
        }       
?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-28 14:30:37

很可能,您必须使用以下命令而不是$row[0] > 0

mysql_num_rows($sql)

您可以这样检查用户:

代码语言:javascript
复制
if(mysql_num_rows($res)==1)
  echo "Login Successful";
} else {
  echo "Failed To Login";
}
票数 -2
EN

Stack Overflow用户

发布于 2017-07-28 14:59:27

您应该直接检查mysql_fetch_array()的输出是否不是null或false:

代码语言:javascript
复制
    $res = mysql_query($sql);
    if( $row = mysql_fetch_array($res) )
     echo "Login Successful";
    else
     echo "Failed To Login";
    } 

关于您的总体代码,有一些事情显然是错误的做法:

  • mysql_*函数自PHP5.5起就不再受欢迎,甚至在PHP7.0之后就不存在了。改用Mysqli类或PDO。
  • 不要使用MD5来破解你的用户密码,它已经坏了好几年了。加盐,以得到更好的保护。
  • 不要关闭你的php标签。它是可选的,如果您试图包含一个在末尾带有结束标记的php文件,这会让您头疼。

这一守则更好:

代码语言:javascript
复制
<?php

include_once('db.php'); 

if( empty($_POST['username']) || empty($_POST['password']) ) 
    echo "Username and Password Mandatory ";
else {
    try {
        $db = new PDO("mysql:host=$dbHostname;dbname=$basename", $dbUsername, $dbPassword);
        $stmt = $db->prepare("SELECT * FROM users WHERE username = username AND password = password");
        $stmt->bindParam(':username', $_POST['username']);
        $stmt->bindParam(':password', md5($_POST['password']));  // I still urge you to pick a valid hash function ! This one is broken for ages !
        $stmt->execute();
    } catch (PDOException $e) {
        print "Erreur !: " . $e->getMessage() . "<br/>";
        die();
    }
    if (empty($row))
        echo "Failed To Login";
    else
        echo "Login Successful";
} 
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45375948

复制
相关文章

相似问题

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