php - 简单的登录脚本

标签 php mysql login-control

我正在尝试编写一个简单的登录脚本。即,通过 POST 操作接受表单内容。检查数据库中是否有匹配的记录。从该行中提取其他信息,例如全名

我的代码是;

if ( !isset($_POST['loginsubmit']) ) {
    //Show login form
    ?>

    <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
        <p>
            Account ID:
            <input name="AccountID" type="text" />
        </p>
        <p>
            Username:
            <input name="userEmail" type="text" />
        </p>
        <p>Password:
            <input name="userPassword" type="password" />
        <p>
            <input name="loginsubmit" type="submit" value="Submit" />
        </p>
    </form>
    <?php
}
else {
    //Form has been submitted, check for logon details
    $sql = "SELECT * FROM users WHERE 'accountID'=". $_POST['AccountID']. " AND     'userEmail'=". $_POST['userEmail'] . " AND 'userPassword'=". $_POST['userPassword']. "     LIMIT 1";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);
    if ($count == 1){
        echo"Correct Username/Password";
    }
    else {
        echo "Wrong Username or Password";
    }
}

我有两个问题。首先使用上面的代码,我不断收到以下错误。

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ...

其次,如何从数据库中获取其他详细信息字段。我认为

$result=mysql_query($sql);

包含 MySQL 行的数组,所以我可以做类似的事情吗?

echo $result['fullName'];

最佳答案

首先清理字段以防止 SQL 注入(inject)。

$sanitize_fields = array('AccountID','userEmail','userPassword'); 
foreach( $sanitize_fields as $k => $v ) 
{
    if( isset( $_POST[ $v ] ) ) 
        $_POST[ $v ] = mysql_real_escape_string( $_POST[ $v ] ); 
}

然后在查询中引用字符串字段。最初您的查询有错误。这就是为什么你得到 false 的 bool 值。

$sql = "SELECT * FROM users WHERE accountID='". $_POST['AccountID']. "' AND userEmail='". $_POST['userEmail'] . "' AND userPassword='". $_POST['userPassword']. "' LIMIT 1";

我建议您在运行查询后执行以下操作,查看 MySQL 生成的错误(如果有)。

$result = mysql_query($sql) or die('Query failed: ' . mysql_error());

MySQL 扩展正在逐步淘汰,并且有更新的更好的扩展,例如 MySQLi 和 PDO,看看这些。

关于php - 简单的登录脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586943/

相关文章:

php - 如何独立使用单个 Zend Framework 组件,如 XML-RPC 或 REST?

php - Roundcube 插件砖安装

php - 未捕获的异常 'PDOException' - 主机 'xxx' 不允许连接到此 MySQL 服务器

mysql - 通过组合它们来减少结果

java - 我的登录框架无法链接到我的其他框架

asp.net - 根据角色重定向到其他页面

php - 通过php连接数据库

php - DOCTYPE 打破了第 n 个 child 的背景颜色

mysql - 时间相关查询

ASP.NET 登录控件 - 它有多受欢迎?