在从HTML表单提交时从javascript运行php


run php from javascript on submit from HTML form

我有一个基本的登录/注册表单。当你选择注册时,它会转到我的注册表单。我的问题是登录。我想检查数据库中的登录信息,然后显示不同的标题部分。我是一名学生,对如何做到这一点的所有不同信息都感到困惑。

目前,我在点击登录时调用一个javascript函数,但我想调用我的php文件access.php,返回到我的html页面index.php,在那里我想检查用户是否登录,如果是,则显示logged_in.html.php。

loginregister_form.html.php

<div id="login_form">
  <form action="access.php" method="POST" name="login_form">
    <label id="label_email">Email<span class ="red">*</span></label>
    <label id="label_password">Password<span class ="red">*</span></label>
    </br>
        <input type="text" name="email" id="email"/>
        <input type="password" name="password" id="password"/>
    <div id="form_buttons">
        <button onclick="loginUser()" Type="button" id="login" name="action" value="login">Login</button>       
        <button onclick="newUser()" Type="button" id="register" name="register">Register</button>
    </div>
  </form>

javascript

function loginUser() {
    $.ajax({
        url: 'access.php',
        dataType: 'php'
    })
    window.location.assign("index.php");
}

access.php

function userIsLoggedIn()
{
    if (isset($_POST['action']) and $_POST['action'] == 'login')
    {
        if (!isset($_POST['email']) or $_POST['email'] == '' or
        !isset($_POST['password']) or $_POST['password'] == '')
        {
            $GLOBALS['loginError'] = 'Please fill in both fields';
            return FALSE;
        }
        if (databaseContainsUser($_POST['email'], $password))
        {
            session_start();
            $_SESSION['loggedIn'] = TRUE;
            $_SESSION['email'] = $_POST['email'];
            $_SESSION['password'] = $password;
            return TRUE;
        }
        else
        {
            session_start();
            unset($_SESSION['loggedIn']);
            unset($_SESSION['email']);
            unset($_SESSION['password']);
            $GLOBALS['loginError'] =
            'The specified email address or password was incorrect.';
            return FALSE;
        }
    }
}
function databaseContainsUser($email, $password)
{
    require_once('mysqli_connect.php');
    $username = $password = "";
    if (isset($_POST["submit"])){
       $username = test_input($_POST["username"]);
       $password = test_input($_POST["password"]);
    }
    $query = "SELECT * FROM users 
        WHERE username='".$_POST['username']."' 
        AND password = '".($_POST['password'])."'";
    $result = mysqli_query($DBConnect, $query) or die();
    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_array($result)) {
            echo "<img src={$row["avatar"]} alt='avatar image' />";
        }
        return TRUE;
    }
    else {
        echo "Invalid login";
        return FALSE;
    }
}

和index.php

<?php 
session_start();
if (!isset($_SESSION['loggedIn'])){
    include 'access.php';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script type ="text/javascript" src="functions.js"></script>
</head>
<body>
  <div id="body">
    <div id="container">
        <?php if (!isset($_SESSION['loggedIn'])){
                include 'login_register_form.html.php';
            }
            else {
                include 'logged_in.html.php';
            }
        ?>

任何帮助都将不胜感激

我可以向您解释一个简单的过程,您需要遵循这个过程才能使其工作。

您并不真的需要javascript和ajax来让它工作。除非你不需要在后台发生事情,如果一切顺利,请转到仪表板页面。

您可以有一个登录页面,用户可以在其中输入电子邮件和密码。提交表单后,您将转到access.php页面。它连接到数据库并检查凭据是否正确以及用户是否存在。如果一切顺利。然后简单地将用户重定向到带有会话的仪表板页面,如果事情没有按计划进行,则将用户发送到显示错误的主页。

你可以按照这两个教程中的任何一个来开始。

http://www.codingcage.com/2015/01/user-registration-and-login-script-using-php-mysql.html?m=1.或

https://htmlcssphptutorial.wordpress.com/2015/07/07/simple-user-registration-login-script-in-php-and-mysql/