簡體   English   中英

PHP-AJAX-驗證簡單的登錄表單(檢查用戶是否為指定的表單)

[英]PHP - AJAX - Validate simple login form (check if user is a especified one)

我有一個正在測試的簡單表格。 這只是對表格開頭的測試,稍后將對其進行改進。 我只需要它才能正常工作。 我仍然沒有准備好數據庫,因此在我的代碼中,我有兩個要作為“注冊”用戶通過的用戶。

這是表格的代碼:

<form action="" method="POST">
    <label>User: </label>
    <input type="text" name="user" id="usuario" />
    <label>Password: </label>
    <input type="password" name="password" id="password" />
    <div class="text-center">
        <button type="button" class="boton-submit" name="submit" onClick="login()">Sign In</button>
    </div>
</form>

這兩個輸入已使用JavaScript驗證,並且值通過AJAX發送。

這是代碼(僅AJAX部分,其余僅是驗證,它們工作正常):

function login(){

if(validationLogin()){
        $.ajax({
                url: "http://localhost/MyApp/extras/processLogin.php", 
                type: "POST",
                data: {"user": user, 
                       "password": password, 
                       },
                dataType: "html",
                cache: false,
                beforeSend: function() {    
                    console.log("Processing...");
                },
                success: 
                      function(data){
                        if(data == "OK"){
                    window.location.href = "http://localhost/MyApp/loginSuccess.php"; 
                        }else{
                            window.location.href = "http://localhost/MyApp/loginFail.php";
                        }
                    }

        });

    }else{
        //alert("Incorrect data");
    }
}

這是PHP文件中的代碼:

<?php

session_start();

$user = "";
$password = "";
$errors = array();

if (isset($_POST['submit'])){
    if(isset($_POST['user'])){
       if(!empty($_POST['user'])){
       $user = $_POST['user'];
    }else{
       $errors = 1;
    }
    }else{
       $errors = $errors;
    }

    if(isset($_POST['password'])){
       if(!empty($_POST['password'])){
       $password = $_POST['password'];
    }else{
       $errors = 1;
    }
    }else{
       $errors = $errors;
    }

$_SESSION['user'] = $user;
$_SESSION['password'] = $password;

//TEST: Check if user is --> LAURA 123456 or LUIS 567899
if((($user == "LAURA") && ($password == "123456")) || (($user == "LUIS") && 
   ($password == "567899"))){
    $data = "OK";
    echo $data;
    //header("location: ../loginSuccess.php");
}else{
    $data = "ERROR";
    echo $data;
    //echo "No se encontró usuario";
    //header("location: ../loginFail.php");
}

}

一開始,我采取了一種直接將數據發送到PHP的形式的操作,這樣就可以正常工作->如果用戶是LAURA或LUIS,它將重定向到loginSuccess.php並向用戶打招呼,否則,它將重定向到loginFail.php(這就是標題被注釋的原因)

我只想測試該功能,但是當我修改代碼以使用AJAX時,它總是會失敗,即使用戶是LAURA或LUIS,它也會重定向到loginFail頁面。

我懷疑AJAX調用的成功功能中存在一些問題。

感謝您的任何幫助:)祝您有美好的一天!

$_POST數組沒有submit索引,因此這種情況if (isset($_POST['submit'])){ ...將始終失敗。 完全刪除此條件檢查if (isset($_POST['submit'])){ ... } ,並通過以下方式重構您的后端PHP代碼,

    <?php
        session_start();

        $user = "";
        $password = "";
        $errors = array();

        if(isset($_POST['user'])){
            if(!empty($_POST['user'])){
                $user = $_POST['user'];
            }else{
                $errors = 1;
            }
        }else{
           $errors = $errors;
        }

        if(isset($_POST['password'])){
           if(!empty($_POST['password'])){
                $password = $_POST['password'];
            }else{
                $errors = 1;
            }
        }else{
           $errors = $errors;
        }

        $_SESSION['user'] = $user;
        $_SESSION['password'] = $password;

        //TEST: Check if user is --> LAURA 123456 or LUIS 567899
        if((($user == "LAURA") && ($password == "123456")) || (($user == "LUIS") && 
           ($password == "567899"))){
            $data = "OK";
            echo $data;
            //header("location: ../loginSuccess.php");
        }else{
            $data = "ERROR";
            echo $data;
            //echo "No se encontró usuario";
            //header("location: ../loginFail.php");
        }
    ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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