Php 如何完成此登录脚本?

Php 如何完成此登录脚本?,php,mysql,login,registration,Php,Mysql,Login,Registration,我几乎完成了我的登录脚本,但我不知道如何检查用户名和密码是否正确。 这是我的脚本文件 index.php: <html> <body> <form action="action1.php" method="post"> Username: <input type="text" name="uname"> Password: <input type="password" name="pword"> <input type="sub

我几乎完成了我的登录脚本,但我不知道如何检查用户名和密码是否正确。 这是我的脚本文件

  • index.php:

    <html>
    <body>
    
    <form action="action1.php" method="post">
    Username: <input type="text" name="uname">
    Password: <input type="password" name="pword">
    <input type="submit">
    </form>
    
    </body>
    </html>
    
    
    用户名:
    密码:
    
  • php文件就是我用来从用户那里收集信息以便注册的页面

  • action1.php:

    <?php
    $con = mysql_connect("localhost", "root", "");
    if (!$con)
    {
    die ('Could not connect: ' . mysql_error());
    }
    
    mysql_select_db("user1", $con);
    
    $sql="INSERT INTO useri1 (uname, pword)
    VALUES
    ('$_POST[uname]','$_POST[pword]')";
    
    if (!mysql_query($sql, $con))
    {
    die('Error: ' . mysql_error());
    }
    echo "1 record added";
    
    mysql_close($con);
    ?>
    

    您可以按照以下方式运行查询:

    $user_check_query = "SELECT * FROM useri1 WHERE uname=" . $_POST['uname'] . " AND pword=" . $_POST['pword'] .";";
    

    如果查询返回一个值,则可以继续。如果查询未返回任何内容,则无法通过。至于逻辑,请查看您所创建的代码,并了解如何创建
    if
    else
    语句来处理逻辑。

    您需要执行一个SELECT查询,这与

    从useri1中选择STRCMP('{$\u POST['pword']}',pword),其中uname='{$\u POST['uname']}'

    这将返回范围[-1,1]内的值-如果不是0,则密码错误。如果没有行,则用户不存在

    您还需要考虑SQL注入,但这很可能是另一天的练习。

    首先,您希望使用mysql,而不是mysql,因为mysql已经过时,不再积极开发。其次,您希望开始转义数据库查询以停止sql注入。在下面的代码中,我使用了一个会话来跟踪用户。您可以了解有关会话的更多信息


    好吧,至少有人能告诉我如何更正这个脚本&让它正常工作,而不是给我留下关于我还不懂的东西的评论。通过看到自己的错误得到纠正,我学得更好!如果可以使用准备好的语句,那么使用
    real\u escape\u string
    有什么意义@PeterSzymkowski老实说,我只是一直使用
    real\u escape\u string
    ,我不确定性能或使用差异。@Graham:小心,这里那些对“正确的”MySQL连接实践有强迫症的人难以置信。基本上,他们只是巨魔。我认为你的例子展示了一种处理原始海报问题的好方法&展示了一种处理MySQL连接的新方法,他们可以从中学习。所以请投我一票@JakeGould他的例子很好,这就是为什么我对他的答案投了更高的票并删除了我的答案,但在我看来,使用预先准备好的语句比使用real\u escape\u stringWhoops更容易——现在已经修复了:)谢谢——我的PHP似乎有点生锈了。
    $user_check_query = "SELECT * FROM useri1 WHERE uname=" . $_POST['uname'] . " AND pword=" . $_POST['pword'] .";";
    
    <?php
    
    session_start();
    
    $mysqli = new mysqli('localhost', 'root', DB_PASSWORD, 'user1');
    
    /* check connection */
    if ($mysqli->connect_error)
      die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
    
    /* escape string from sql injection */
    $userName = $mysqli->real_escape_string($_POST['uname1']);
    
    /* query database */
    $result = $mysqli->query("SELECT `pword` FROM `user1` WHERE `uname` = '".$userName."'");
    if ($result->num_rows == 1) {
      while ($col = $result->fetch_array(MYSQLI_ASSOC)) {
        // This presumes you're storing your passwords in plain text.
        // If you hashed your passwords or anything, you would have to do the same to $_POST['pword']
        if ($_POST['pword'] == $col['pword']) {
          // You could do anything here, but sessions are a way of keeping track of a user.
          $_SESSION['userName'] = $_POST['uname1'];
          $_SESSION['loggedIn'] = true;
        }
      }
    }
    $result->close();
    
    /* don't forget to close the connection */
    $mysqli->close();
    
    ?>