【发布时间】:2018-02-04 00:55:06
【问题描述】:
我有一个名为“container”的 div 标签的 html 索引文档,我通过“indexScript.js”中的 ajax 语句将“login.php”加载到 div 标签中。如果“userNameBox”和“passBox”数据在数据库表中,我想在同一标记中加载“successfulLogin.php”,但如果从“loginForm”的“action”属性调用“validateLogin”方法,则在外部重新加载页面索引文档并在没有导航栏和其他所有内容的情况下显示。有什么想法吗?
index.html:
<head>
<title>English Site</title>
<meta charset="utf-8">
<link rel="stylesheet" href="styles/layout.css" type="text/css">
<script src="indexScript.js"></script>
</head>
<nav><!--Barra de navegacion...!-->
<ul>
<li><a id="loginLink">Iniciar sesión</a></li>
<li><a id="registerLink">Registro</a></li>
<li><a href="#">Estudiantes</a></li>
<li><a href="#">Docentes</a></li>
<li><a href="#">Contenido</a></li>
<li><a href="#">Diccionario</a></li>
</ul>
</nav>
<div id="container">
<!--Container content-->
</div>
登录.php:
<html>
<?php include_once("validateLogin.php"); ?>
<body>
<h3>Formulario de ingreso...!</h3>
<form action="<?php validateLogin(); ?>" onSubmit="return(validateLoginForm());" method="post" id="loginForm" name="loginForm">
<table>
<tr>
<td><p id="failedLoginLabel" style="color: #B5090B; font-style: italic; font-size: 16px; visibility: hidden;">El nombre de usuario o la contraseña son incorrectos...!</p></td>
</tr>
<tr>
<td><input type="text" id="userNameBox" name="userNameBox" value="Nombre de usuario" onFocus="this.value=(this.value=='Nombre de usuario')? '' : this.value ;" onBlur="this.value=(this.value=='')? 'Nombre de usuario' : this.value ;" style="width: 70%;"></td>
</tr>
<tr>
<td><input type="password" id="passBox" name="passBox" value="Contraseña" onFocus="this.value=(this.value=='Contraseña')? '' : this.value ;" onBlur="this.value=(this.value=='')? 'Contraseña' : this.value ;" style="width: 70%;"></td>
</tr>
<tr>
<td><input type="submit" value="Login" style="width: 71%; height: 30px;"></td>
</tr>
</table>
</form>
</body>
indexScript.js:
window.addEventListener("load", load, false);
var registerLink, loginLink, container;
function load(){
container = document.getElementById("container");
registerLink = document.getElementById("registerLink");
loginLink = document.getElementById("loginLink");
registerLink.addEventListener("click", showRegisterForm, false);
loginLink.addEventListener("click", showLoginForm, false);
}
function showLoginForm(){
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
container.innerHTML = request.responseText;
}
};
request.open("POST", "login/login.php", true);
request.send();
}
function validateLoginForm(){
var validation = true;
var userName = document.loginForm.userNameBox;
var pass = document.loginForm.passBox;
var failedLoginLabel = document.getElementById("failedLoginLabel");
if(userName.value == "Nombre de usuario" || pass.value == "Contraseña"){
failedLoginLabel.style.visibility = "visible";
validation = false;
}else{
failedLoginLabel.style.visibility = "hidden";
}
return validation;
}
validateLogin.php:
<?php
function validateLogin(){
$userName = $_POST["userNameBox"];
$password = $_POST["passBox"];
require_once("../connection/connection.php");
$connection = Connection::getConnection();
$query = "select * from english_students_table where user=:userNameMarker";
$result = $connection->prepare($query);
$success = $result->execute(array(":userNameMarker" => $userName));
$register = $result->fetch(PDO::FETCH_ASSOC);
if($success && password_verify($password, $register["password"])){
session_start(); /* Crea una sesión o reanuda la actual basada en un identificador de sesión pasado mediante una petición GET o POST, o mediante una cookie.*/
$_SESSION["userSession"] = $_POST["userNameBox"];
echo("<script> successfulLogin(); </script>");
}else{
echo("<script> failedLogin(); </script>");
}
}
?>
connection.php:
<?php
class Connection{
public static function getConnection(){
$dbHost = "localhost";
$dbName = "test_database";
$dbUser = "root";
$dbPassword = "";
$connection = new PDO("mysql:dbname=$dbName; host=$dbHost", $dbUser, $dbPassword);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return($connection);
}
}
?>
成功登录.htlm:
<!doctype html>
<html>
<body>
<h2>Login exitoso...!</h2>
</body>
</html>
【问题讨论】:
标签: javascript php html ajax validation