登录:电子邮件密码匹配w / PHP和MySQL

时间:2013-07-20 19:03:48

标签: php mysql login-script

**更新** 很棒的帮助,只需省略$ -sign in

即可解决这个问题
        $dbusername = $row['$username_login'];
        $dbpassword = $row['$password_login'];

到他们的列名。

        $dbusername = $row['username'];
        $dbpassword = $row['password'];

我正在玩PHP和MySQL,接下来是关于制作一个简单的社交网络的一些教程。我在尝试检查密码是否与用户名匹配时遇到了麻烦。

登录表单的代码:

<form action="login.php" method="POST">
<input type="text" size="25" name="user_login" id="user_login" placeholder="Username" />
<input type="password" size="25" name="password_login" id="password_login" placeholder="Password" /> <br />
<input type="submit" name="login" id="button" value="Login" />
</form>

用于验证数据的PHP代码片段(login.php):

$username_login = strip_tags($_POST["user_login"]);
$password_login = strip_tags($_POST["password_login"]);

if ($login) {
if ($username_login && $password_login) {
    $connect = mysql_connect("localhost", "root", "") or die("Error connecting");
    mysql_select_db("mono_social") or die("Could not find db");

    $query2 = mysql_query("SELECT * FROM users WHERE username='$username_login'");
    $numrow = mysql_num_rows($query2);

    if ($numrow != 0) {
        // LOGIN code
        while ($row = mysql_fetch_assoc($query2)) {
            $dbusername = $row['$username_login'];
            $dbpassword = $row['$password_login'];
        }

        // Check to see if username and password match
        if ($username_login==$dbusername && $password_login==$dbpassword) {
            echo "You are in";
        }
        else {
            echo "Sorry $username_login. Incorrect password!";
        }
    }

我还提供了用于检查是否有任何字段留空,或者用户名是否存在的代码。代码似乎适用于上述测试(空白字段和​​无效的用户名),但不是当我尝试使用有效的用户名和密码登录时。

对此的任何帮助都将受到高度赞赏:)

2 个答案:

答案 0 :(得分:2)

可能您的列不会被称为'$ username_login'和'$ password_login'。

$dbusername = $row['$username_login'];
$dbpassword = $row['$password_login'];

也许您只需省略$(如果您的列名称为'username_login'和'password_login')

答案 1 :(得分:0)

上面的答案解决了你的问题;但是,在使用PHP时要注意以下几点,以避免将来出现问题:

     
  • NOT 在数据库,表格和列名称周围添加单引号。您可以使用包含文字名称的文字名称或变量。 'username'='$ username'错误; username ='$ username'是对的。
  •  
  • 如果您的数据库,表格或列名称包含空格,请勾选刻度线`(该字符位于美国区域键盘的左侧部分,位于键的前面!)围绕这个名字。 用户列错误; `user column` 是对的。
  • 用单引号'换行字符串值;例如的用户名= '$用户名'。
  • 数据类型为数字的列的值不需要单引号;例如 userid = 2


安全问题

由于您刚开始使用该语言,因此最好从右开始。

     
  • 不要再使用mysql_ *函数了;它不安全而且已经deprecated。相反,请使用PDO。它使用起来更简单,更安全。
  • 永远不要使用 root 作为您的数据库用户,即使在开发过程中也是如此。
  • 在生产或开发系统上,所有数据库用户必须拥有/使用密码。防止授权访问。

最后,如果答案对您有帮助,请接受。它允许其他人在将来帮助您。

希望这会有所帮助。