PHP login with SQL


PHP login with SQL

这是我的login.php从下面的html按钮调用

$username = "root";
$password = "******";
$hostname = "localhost";
$dbname = "dbname";
// Create connection
$conn = new mysqli($hostname, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$Uname = $_POST['logId'];
$Upass = $_POST['logPass'];
$query= mysql_query("SELECT * FROM user WHERE RegId ='$Uname' AND RegPass ='$Upass'");
$numrows=mysql_num_rows($query);
if($numrows!=0) {
    while($row=mysql_fetch_assoc($query)) {
        $dbUser=$row['RegId'];
        $dbPass=$row['RegPass'];
    }
    if($Uname == $dbUser && $Upass == $dbPass) {
        include 'Home.html';
    }
    else {
        echo "invalid username or password!";
    }
}
$conn->close();

下面是HTML代码

<div class="container">
  <div class="row">
    <div class="col-md-4 col-md-offset-4">
      <div class="login-panel panel panel-green">
        <div class="panel-heading">
          <h3 class="panel-title">Please Sign In</h3>
        </div>
        <div class="panel-body">
          <form action="loginChk.php" method="post">
            <div class="form-group">
              <label>Please Enter Your Email/Username</label>
              <input class="form-control" placeholder="username/E-mail" name="logId"/ >
            </div>
            <div class="form-group">
              <label>Please Enter Your Password</label>
              <input class="form-control" placeholder="Password" name="logPass" type="password" />
            </div>  
            <div class="checkbox">
              <label>
                <input name="remember" type="checkbox" value="Remember Me" />Remember Me
              </label>
            </div>
            <!-- Change this to a button or input when using this as a form -->
            <input  type="submit" class="btn btn-default" name="logBtn" value="Login"/><br /><br />
            <div class="fb-login-button" data-max-rows="1" data-size="large" data-show-faces="false" data-auto-logout-link="false"></div><br /><br />
            <a href="Register.html" class="btn  btn-info ">Register Here!</a>
          </form>
        </div>
      </div>
    </div>
  </div>
</div>

当我尝试使用正确的凭据登录时,它给我这个.....

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:'xampp'htdocs'LifeGuru'loginChk.php on line 21

有什么建议吗?

这是一个匆忙完成的完整登录脚本。

loginChk.php:

<?php
session_start();
//Include db connection
include 'db_connect.php';
//Get inputs and encode password to md5() remove that if no md5 enc.
$Username = mysql_real_escape_string($_POST['logId']);
$Password = md5(mysql_real_escape_string($_POST['Password']));

//Username check query
$Check_if_Username = mysql_query("SELECT * FROM Users WHERE Username = '$Username' AND Password = '$Password'");
//Email check query
$Check_if_Mail = mysql_query("SELECT * FROM Users WHERE Email = '$Username' AND Password = '$Password'");

//Check if Username returns any result
if(mysql_num_rows($Check_if_Username)==1){
    //Data was found, populate variables:
    $data = mysql_fetch_array($Check_if_Username);
    $_SESSION['Username'] = $data['Username'];
    $_SESSION['LoggedIn'] = TRUE;
}
//Otherwise, check for email match
else if(mysql_num_rows($Check_if_Mail)==1){
    //Data was found, populate variables:
    $data = mysqli_fetch_array($Check_if_Mail);
    $_SESSION['Username'] = $data['Username'];
    $_SESSION['LoggedIn'] = TRUE;
}
//No data was found:
else{
    mysql_close();
    header("Location: /login.php?error=invalid data");
    die;
}

//If the user was logged in and the data was found, close mysql connection
mysql_close();
//Then redirect
header("Location: /account.php");

记住mysql_*是贬值的,试着学习解决方法。

让我知道你是怎么做的:)