Ajax php登录表单不定向到另一个页面
Ajax php login form to not direct to another page
我在线遵循了两个单独的 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.";
}
?>
然后确保在您的数据库中您有
- 列电子邮件、密码和用户级别
上面的代码将生成会话变量<?php $_SESSION['MM_Username_check'] ?>
该变量将是登录用户的电子邮件。
登录成功后,您将被重定向到successpage.php
相关文章:
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 如何将JavaScript变量的数据传递到另一个php页面
- 将php页面URL中的变量传递给JavaScript和另一个php
- 如何使用javascript/jquery将变量从一个PHP文件传递到另一个PHP文件
- 通过AJAX将从AJAX获取的值发送到另一个PHP文件
- 使用 Ajax 将 Javascript 变量提交到另一个 PHP 文件
- 从 PHP 表中选择值并将其传递给另一个 PHP 页面
- 如何通过选择下拉列表中的选项从另一个 php 文件中获取数据
- 将值从一个 Php 文件传递到另一个 Php 文件
- php中的mysql查询不起作用,但它在另一个php文件中起作用
- 如何在另一个php文件中从ajax获取变量
- 调用另一个php脚本生成图表时出现问题
- 如果jquery脚本's在另一个php页面的php-include语句中使用
- 如何使用wp_localize_script从另一个php文件传递参数
- 将输出从一个 JS 文件传递到另一个 PHP 文件
- 如何包含来自另一个 PHP 文件的 PHP 验证函数
- 在另一个 PHP 文件的 JavaScript 中显示 PHP 文件内容
- 从另一个 php 脚本终止一个脚本
- 如何将 JavaScript 变量传递给另一个 PHP 文件
- 使用 ajax 将文本值传递给另一个 php 文件