簡體   English   中英

php在頁面加載中簽入javascript

[英]php check in javascript on page load

我試圖做一些事情,但是沒有成功。 我希望有人可以幫助我。

這是我想做的

在登錄頁面中,我有兩個部分:

  • 1)登錄部分;
  • 2)注冊區;

加載頁面時,它僅顯示登錄部分(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 ?>">

您可以通過多種方式執行此操作,以下是其中幾種:

Ajax方法(推薦)

(恕我直言,這是最好的方法。此方法對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM