[英]php check in javascript on page load
我试图做一些事情,但是没有成功。 我希望有人可以帮助我。
这是我想做的 :
在登录页面中,我有两个部分:
加载页面时,它仅显示登录部分(1),因为注册部分带有“ display:none;”。 登录部分中有一个注册按钮,当您单击它时,它将显示:none; 到第1)节,并使第2)节显示: 这样,我只能看到注册部分。 到目前为止没有问题。
问题是当您填写注册表单时出现错误(假设您输入的字母不足以输入密码。)它将重新加载表单提交页面并显示错误。 主要的问题是,当页面被重新加载时,它将重置显示。 排序并使注册部分再次不可见。
我试过了:
<?php if($this->session->flashdata('error_registration')
<section class="login" style="padding: 20px 28px;display:none;">
<?php else:?>
<section class="login" style="padding: 20px 28px;">
<?php endif;?>
您可以像这样处理它……仅当您在检查错误时有返回真/假的东西时才这样做。
首先,在您的注册表单中放置一个隐藏的输入,例如
<input type="hidden" name="signup" value=1 />
然后检查以确定提交的表单是注册表单
<?php
// Defaults
$display_login = ''; // Show Login
$display_signup = 'display:none;' // Hide Signup
// If signup form was submitted, check for errors & adjust display of each section
if(isset($_POST["signup"]){
$error = $this->session->flashdata('error_registration'); // Must return boolean
$display_login = $error ? 'display:none;' : ''; // If Error, Hide Login
$display_signup = $error ? '' : 'display:none;'; // If Error, Show Signup
}
?>
<section class="login" style="<?= $display_login ?>">
<section class="signup" style="<?= $display_signup ?>">
您可以通过多种方式执行此操作,以下是其中几种:
(恕我直言,这是最好的方法。此方法对UX的影响最小,并且避免了完全显示div的问题,因为您根本不需要重新加载页面。)
$('#login-button').click(function () {
var $this = $(this);
var username = $('#userName').val();
var password = $('#password').val();
var data = {
command: "login",
username: username,
password: password
}
$.ajax({
type: "POST",
url: 'login-manager.php',
data: data,
success: function (response) {
if (response.success == true) {
window.location = 'homepage.php';
}
else {
var error = response.error;
// show some error message here
}
},
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
console.log(err.Message);
}
});
});
然后在login-manager.php
$data= isset($_POST['data']) ? $_POST['data'] : null;
$command = isset($data['command']) ? $data['command'] : (isset($_POST['command']) ? $_POST['command'] : (isset($_GET['command']) ? $_GET['command'] : null));
if($command == 'login'){
$username= isset($data['username']) ? $data['username'] : null;
$password=isset($data['password'])? $data['password'] : null;
$loginAttempt=login($username,$password);
// login() should be you own login function and it should return true if the user was logged in or an error message otherwise
if($loginAttempt===true)
{
echo json_encode(array('success'=>true));
exit;
}
else
{
echo json_encode(array('success'=>false,'error'=>$loginAttempt));
exit;
}
}
else if($command == 'register'){
// handle registration logic similarly here
}
像现在一样提交表格
具有一些注册功能,例如:
session_start();
//....
function register($username, $password,$email){
// do some registration logic here
if($someError){
header('Location: login.php?regErr='.$someError); // redirect the user to the login page with error as get var
}
}
然后在登录页面上做这样的事情
session_start();
//....
if(isset($_GET["regErr"])){
echo '<script> $(function(){ $("#resistrationDiv").show();$("#resistrationError").text('.$_GET["regErr"].');';
}
像现在一样提交表格
具有一些注册功能,例如:
session_start();
//....
function register($username, $password,$email){
// do some registration logic here
if($someError){
$_SESSION['REGISTRATION_ERROR']=$someError;
header("Location: login.php"); // redirect the user to the login page
}
}
然后在登录页面上做这样的事情
session_start();
//....
if(isset($_SESSION["REGISTRATION_ERROR"])){
echo '<script> $(function(){ $("#resistrationDiv").show();$("#resistrationError").text('.$_SESSION["REGISTRATION_ERROR"].');';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.