Ajax php登录表单不定向到另一个页面

Ajax php login form to not direct to another page

本文关键字:另一个 php 登录 表单 Ajax      更新时间:2023-09-26

我在线遵循了两个单独的 Ajax 教程,试图在出现错误消息时使我的登录表单不会重定向到另一个页面。但是,这两种方法似乎都不起作用,我的表单仍然指向另一个页面并在那里显示错误消息。我不明白问题是什么,因为我几乎直接遵循了教程,它对他们有用,但对我不起作用。以下是我的表单的代码:

<form id= "login_form" action="login.php" method="post">
          <span id="login_errors"></span>
          <label>Email Address</label>
          <input type="text" name="email" id="email" required="required"/>
         <br />
         <label>Password</label>
         <input type="password" name="password" id="password" required="required"/>
         <br />
         <div class="checkbox">
         <input id="remember" type="checkbox" />
         <label for="remember">Keep me signed in</label>
         </div>
         <div class="action_btns">
         <div class="one_half last"><input type="submit" class="btn btn-blue" id="login_button" value="Login"></div>
         <div class="one_half last"><a href="#" id="register_form" class="btn">Sign up</a></div>
         </div>
</form>

这是基于我编写的教程之一的 ajax 代码:

$("#login_button").click(function(){
$.post($("#login_form").attr("action"), $("#login_form:input").serializeArray(), function(info){$("#login_errors").html(info);});
});
$("login_form").submit(function(){
    return false;
});

这是另一个教程的代码,也不起作用:

$("#login_button").click(function(){
var action = $("#login_form").attr("action");
var form_data = {
    email: $("#email").val(),
    password: $("#password").val(),
    is_ajax: 1
};
$.ajax({
    type:"POST",
    url:"action",
    data: form_data,
    success: function(response){
        if(response == 'success'){
            $("#login_errors").html("successful!");
        }else{
            $("#login_errors").html("unsuccessful!");   
        }
    }
});
});

我已经在我的网页顶部包含了Jquery:

<script type="text/javascript" src="jquery-1.11.0.min.js"></script>

并在页面顶部也链接了我的 Ajax 文件。

<script type="text/javascript" src="login_Ajax.js"></script>

第二个 ajax 代码中有一个拼写错误:url 参数应该代替 url:"action",如下所示:

url: action,

没有引号,因为它指的是上面几行声明的变量。不确定这是否解决了您的问题,但要查看整个图片,您还应该显示您的"登录.php"。

对于第一个代码,您似乎忘记了输入#

$("#login_form").submit(function(){
    return false;
});

一秒钟,您似乎输入了无效的网址

url:"action"

它应该从你的 HTML 中处理

url:"login.php"

问题的完整解决方案:由于您遵循的是教程,因为您遵循了不同的教程和混合代码,因此让我给您一个简单而简单的教程;

不要忘记顶部的jquery库,例如

<script type="text/javascript" src="jquery-1.11.0.min.js"></script>
    <script>

因此,请将其复制到页面,例如登录.php页面

<script type="text/javascript" src="jquery-1.11.0.min.js"></script>
<script>
$(function(){

    $(document).on("click", ".ylogButton", function(e) {
    e.preventDefault();
//validate 
var email = $("#inputEmail").val();
var password = $("#inputPassword").val();
var emailp = /^'w+(['.-]?'w+)*@'w+(['.-]?'w+)*('.'w{2,3})+$/;
if (email=='')
{
    alert("Please enter your login email");
}
else if (password=='')
{
    alert("Please enter password");
}
else {  
        //Built a url to send
        var info = $("#yloginform").serialize();
        $.ajax({
            type: "POST",
            url: "authenticate.php",
            data: info,
            success: function(result){  
            $("#loginmsg").html(result);
                //$("#form")[0].reset();    
            }
        });
                e.preventDefault();
        }
    });
});
</script>
<div  id="loginmsg"></div>
<form class="form-signin"  id="yloginform">
        <h2  style="text-align:center;">  sign in </h2>
        <label for="inputEmail" class="sr-only">Login username</label>
        <input type="text" id="inputEmail" name="email" class="form-control" placeholder="login email" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required>
        <button class="ylogButton" type="submit">Sign in</button>
</form>

然后打开另一个名为 authenticate 的文件.php并复制此登录 php 代码

<?php 
//connection to db
$hostname_localhost = "localhost";
$database_localhost = "dbname"; //db name
$username_localhost = "root";
$password_localhost = ""; //db password if any
$localhost = mysql_pconnect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
?>
<?php
if (isset($_POST["email"])) {
$email = $_POST['email'];
$password = $_POST['password'];            
}
//login registered user, but we always assume session has not been started 
if (!isset($_SESSION)) {
  session_start();
}

//this is just some magic
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "userlevel";
  $MM_redirectLoginSuccess = "$return_url";
  $MM_redirectLoginFailed = "$return_url";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_localhost, $localhost);
  $LoginRS__query=sprintf("SELECT email, password, userlevel FROM users WHERE email='$loginUsername' AND password='$password'"); 
  $LoginRS = mysql_query($LoginRS__query, $localhost) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    $loginStrGroup  = mysql_result($LoginRS,0,'userlevel');
    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username_check'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;       
    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    echo "welcome, $lastname ";
    $redirectpage = "sucesspage.php";   
    echo "<script>window.location.href='$redirectpage';</script>";
    }
    else {
    echo "wrong username or password";
    }
}
    else
    {
        $text = "Error! Please try again.";
    }
?>

然后确保在您的数据库中您有

  1. 列电子邮件密码用户级别

上面的代码将生成会话变量<?php $_SESSION['MM_Username_check'] ?>该变量将是登录用户的电子邮件。

登录成功后,您将被重定向到successpage.php