首页 > 解决方案 > 不使用会话使用 PHP 和 Ajax 登录另一个页面

问题描述

我正在使用PHP并使用变量Ajax登录另一个页面。session当我单击submit按钮时,没有任何反应。

HTML代码如下命名login.php为:

<?php 

require_once "dbconnection.php";
// Initialize the session
session_start();  

// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: index.php");
    exit;
}
?>

     <div id='info'>  </div>
<form  method="POST" class="form-signin" name="mylogin" id="mylogin">
                        <div class="account-logo">
                         <img src="assets/img/logo-dark.png" alt="">
                        </div>
                        <div class="form-group">
                            <label>Email</label>
                            <input type="email" id="email" name="email"  autofocus="" class="form-control">
                        </div>
                        <div class="form-group">
                            <label>Password</label>
                            <input type="password" name="password" id="password" class="form-control">
                        </div>
                        <div class="form-group text-right">
                            <a href="forgot-password.php">Forgot your password?</a>
                        </div>
                        <div class="form-group text-center">
                        <input type="button" value="login" id="login" name="login"
                        class="btn btn-primary account-btn" >
 </div>
                        <div class="text-center register-link">
                            Don’t have an account? <a href="register.php">Register Now</a>
                        </div>
                    </form>

在同一页面Ajax查询是:

<script>

$(document).ready(function (){
    $('#mylogin').validate({
rules: {
password:{
    required:true;

},
email:{
    required:true;
email:true
}
},
messages: {
    password:{
    required:"Requered"

},  
email:"Requered"
},

submitHandler : subform
    })

    function subform() {

    var email = $('#email').val();
    var password = $('#password').val();

    var data = {

        "email": email,
        "password": password

$.ajax({
    type: "POST",  
    url: "auth/logging.php", // Url to which the request is send
    data: data,

                           // Type of request to be send, called as method
beforeSend:function () {
$('#info').fadeOut();
$('#login').html('Sending ....');
},

  success: function(resp){
if(resp=="ok"){
    $('#login').html('Login');
setTimeout('window.location.href="index.php";',4000);

}else{

    $('#info').fadeIn(1000,function(){
        $('#info').html("<div class='alert alert-danger'>" +resp+ "</div>");
        $('#login').html('Login');


    })
}

     }
                })
    }
})

</script>

logging.php会是:

    <?php



session_start();  
require_once "dbconnection.php";

if (isset($_POST['email'])) {

    $email = trim($_POST["email"]);
    $pass = trim($_POST["password"]);
    $password = md5($pass);

    $query = $mysqli->prepare("SELECT * FROM users WHERE email=?");
    $query->bind_param("d",$email);
    $query->execute();
    $query->bind_result($id,$user,$myemail,$mypass);
    $query->fetch();
if($mypass==$password){
echo 'ok';
$_SESSION['id'] = $id;
$_SESSION['user']  = $user;


}else{


    echo 'emai & pass wrog';
}

    ?>

任何帮助都将不胜感激。

标签: phpmysqlajaxmysqli

解决方案


它应该s代替d. 它代表字符串。

$query->bind_param("s",$email);

此外,您永远不应该使用 MD5 作为密码。利用password_hash()


推荐阅读