если (Исеть ($ _ POST [ 'войти в'])) - PullRequest
0 голосов
/ 13 марта 2019

Извините за мой английский, я французский студент.Я попытался бы сделать вход в PHP, и он не работает .. Вход работает отлично, и я использовал тот же код, что и это, что странно.

Позвольте проверить мой login.php:

    <?php

    if(isset($_POST['login'])) {

        extract($_POST);

        echo "Connexion réussie";

        if(!empty($lpassword) && !empty($lpseudo)) {

            $q = $db->prepare("SELECT * FROM users WHERE pseudo = :pseudo");
            $q->execute(['pseudo' => $lpseudo]);
            $result = $q->fetch();

            if($result == true) {
                $hashpassword = $result['password'];
                if(password_verify($lpassword, $hashpassword)) {
                    echo "Le mdp est bon, connexion en cours";




                } else {
                    echo "Le mot de passe est incorrect";
                }




            } else {
                echo "Le compte portant l'email " . $lmail . "n'existe pas";
            }

        } else {
            echo "Les champs ne sont pas remplis !";
        }

    } else {
        echo "Marche pas";
    }


?>

и моя страница с формой:

<?php session_start(); ?>
<!DOCTYPE html>
<html>

<meta charset="utf-8">
<link rel="stylesheet" href="connexion_style.css" />

<title>To-Ornament - Connexion / Inscription</title>

<body>

    <?php 

    include 'includes/database.php';
    global $db;

    ?>

    <section>



        <form method="post" action="connexion.php">
            <h2>Inscription</h2>

            <label for="pseudo">Pseudo</label> <br>
            <input type="text" name="pseudo" id="pseudo" size="50" maxlength="20" />
            <br>
            <label for="pass">Mot de passe</label> <br>
            <input type="password" name="password" id="password" size="50"/>
            <br>
            <label for="conf_pass">Confirmation du mot de passe</label> <br>
            <input type="password" name="cpassword" id="cpassword" size="50"/>
            <br>
            <label for="email">Adresse mail</label> <br>
            <input type="email" name="email" id="email" size="50"/>
            <br> <br>
            <a href=""><input class="Inscription" type="submit" value="S'inscrire" name="formsend" id="formsend"></a>
        </form>

    <?php include 'includes/signin.php'; ?>

        <p id="barre"></p>

        <form>
          <h2>Connexion</h2>

          <label for="pseudo">Pseudo</label> <br>
            <input type="text" name="lpseudo" id="lpseudo" maxlength="20" size="50"/>
            <br>
          <label for="pass">Mot de passe</label> <br>
          <input type="password" name="lpassword" id="lpassword" size="50"/>
           <br> <br>
          <a href=""><input class="Connexion" type="submit" name="login" value="Connexion" id="login"></a>
        </form>

    <?php include 'includes/login.php'; ?>

    </section>

</body>

</html>

Я не понимаю, как можно работать с signin.php, но не с login.php, потому что имя = логин правильноdans my "if (isset ($ _ POST ['login']))" тоже ..

Пожалуйста, помогите мне быстро!Задайте мне больше вопросов, если вам нужно

1 Ответ

0 голосов
/ 13 марта 2019
<form>
          <h2>Connexion</h2>

Я думаю, что вы забыли method="post" action="login.php" в определении формы.

И вам не следует использовать extract для данных, которые вы не можете контролировать.Если в $_POST есть некоторые данные, которые вы не ожидаете, они могут переопределить уже определенные переменные.Простой пример:

$_POST = [
    'success' => true    
];

$success = false;

extract($_POST);
var_dump($success); // true
...