Действие формы не вызывает функцию входа - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть форма входа в HTML, действие которой отправляет другой файл PHP, где есть функция, которая должна войти в систему на сайте. Когда отправленная форма ведет к этому файлу php, но показывает пустую страницу, как будто она не вызывает эту функцию. Я помещаю echo и умираю поверх функции, но, тем не менее, ничего не происходит.

Также, когда я отображаю что-то вне функции, он отображает то, что я ввел в echo, поэтому он вызывает нужный файл, но не загружаетфункция. Любая помощь приветствуется. Вот мой код.

login.php

<?php
    if ($_SERVER['REQUEST_METHOD'] == "POST") {
        if (isset($_POST["submit"])) {
            login_function();
        }
    }
?>
<!DOCTYPE HTML>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Love Her Feet</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="/login_assets/css/style.css">
        <link href="https://fonts.googleapis.com/css?family=Raleway:300,400,500&display=swap" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel="stylesheet">
        <link rel="stylesheet" href="/login_assets/css/media.css">
        <script src="/login_assets/js/jquery.min.js"></script>
        <script src="/login_assets/js/modernizr.custom.js"></script>
    </head>
    <body>
        <header class="clear hBlack">
            <div class="jLogo"><a href="/"><img src="/login_assets/images/logo.png" alt=""></a></div>
        </header>
        <div class="logArea clear">
            <form action="custom_functions.php" method="post" enctype="application/x-www-form-urlencoded">
                <div class="logbox">
                    <div class="box clear">
                        <h2>Members Area</h2>
                        <div class="logTypes">
                            <input type="text" name="username" class="logtextbox" placeholder="Username or email">
                            <span class="text-danger"><?php echo $username_error;  ?></span>
                            <input type="password" name="password" class="logtextbox" placeholder="Password"><br>
                            <span class="text-danger"><?php echo $password_error;  ?></span>
                            <!-- <input type="text" name="captcha" class="logtextbox" placeholder="Enter the code shown below"><br>
                            <img style="margin: 0 auto;" src="captcha.php">
                            <span class="text-danger"><?php echo $captcha_error;  ?></span> -->
                            <div style="text-align: center">Remember my login: <input name="remember" type="checkbox"></div>
                        </div>
                    </div>
                    <input type="submit" value="submit" class="logBtn" name="submit"/>
                </div>
            </form>
        </div>
        <footer class="clear">
            <p class="fNav"><a href="/">Home</a><span>|</span>
                <a href="/">Log Out</a>
            </p>
        </footer>
    </body>
</html>

custom_functions.php

<?php
    //echo "AAAAAAAAA";

    function validation($form_data)
    {
        $form_data = trim(stripcslashes(htmlspecialchars($form_data)) );
        return $form_data;
    }
    function login_function() {
        //echo "AAAAAAAAAA";
        //die('!');
        session_start();
        require 'connection.php';
        $username_error = "";
        $password_error = "";
        //$captcha_error = "";
        $v_username = $_POST['username'];
        $v_password = $_POST['password'];
        //$v_captcha = $_POST['captcha'];
        $username = validation($v_username);
        $password = validation($v_password);
        //$captcha = validation($v_captcha);
        $remember = isset($_POST['remember']);
        if (empty($username)) {
            $username_error = "<p>Please enter your username!</p>";
        }
        if (empty($password)) {
            $password_error = "<p>Please enter your password!</p>";
        }
        if (!empty($username) && !empty($password)) {
            $sql = "SELECT * FROM member_auth WHERE username = :username";
            //$sql = "SELECT * FROM member_auth LIMIT 1";
            $stmt = $pdo->prepare($sql);

            $stmt->bindValue(':username', $username);

            $stmt->execute();

            $user = $stmt->fetch(PDO::FETCH_ASSOC);

            $cryptpass = $user['cryptpass'];

            if($user === false){
                $username_error = "<p>User doesn't exist</p>";
            } elseif ($user) {
                $newPass = crypt($password, $cryptpass);
                if ($cryptpass == $newPass) {
                    $_SESSION['loggedin'] = TRUE;
                    $_SESSION['username'] = $username;
                    if ($remember == "on") {
                        setcookie("remember", $username, time()+3600);
                    }
                    header('Location: login_success.php');
                } else {
                    $password_error = "<p>Password is not correct!</p>";
                }
            }
        }
    }
?>

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Переместите ваше состояние с той же страницы на custom_functions.php

if ($_SERVER['REQUEST_METHOD'] == "POST"){
    if(isset($_POST["submit"])) {
        login_function();
    }
}

или

<form action="" method="post" enctype="application/x-www-form-urlencoded">
0 голосов
/ 08 ноября 2019

Вы вызываете функцию входа в систему на странице входа в систему и определяете функцию на странице custom.php, чтобы она не нашла никакой функции в этом файле, поместите ваш код в ту же функцию, и она будет работать.

if ($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST["submit"])) {
    login_function();
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...