Bonjour,

Voila je rencontre un petit problème avec mon code.

    while ($row = mysqli_fetch_array($rel_e)) {
        $pass1 = password_verify($pass, $row['pass']);
            if($pass){
                $_SESSION['name'] = $row['fullname'];
                $_SESSION['email'] = $email;
            header("Location:formulaire.php?login=successfull&email=$email");

Décrivez ici votre code ou ce que vous cherchez à faire
Je veux affecter la page formulaire à une adresse email et chaque email a sa page specifique

Ce que je veux

Je veux affecter la page formulaire à une adresse email

Ce que j'obtiens

toujours la même page pour tous les utilisateurs

11 réponses


Bonjour, de un, Mysql devient trop vieux, il faut passer à PDO
De deux, quel est la valeur de $email ?

Bonjour.
euh non mysql n'est pas trop vieux.
ne pas confondre les fonctions mysql_* qui sont obsolètes et mysqli qui lui est toujours bon comme PDO

tu as bien récupéré le fullname donc pour l'émail c'est pareil à condition qu'il est bien été demandé dans la requête

SLIM2020
Auteur

Merci pour vos reponses, et l'adresse email recuperée par G_post = "Arnold@gmail.com"

SLIM2020
Auteur

Carouge10 : Justement je bloque après la comparaison des deux emails selui du champ saisi et celui verifié dans la base de donnee si c'est vrai ...je dois affecté par rapport a cet email une page.php (suivi.php) pour permettre a cet utilisateur de saisir des données... une autre adresse email aura une autre page.php "tarif.php" pour saisir d'autres données etc...

SLIM2020
Auteur

rectif : deux emails celui du champ saisi

rien compris.
montre le code complet
merci

SLIM2020
Auteur

//// Carouge10---------------LE code de toute la page
<?php
include("database.php");
session_start();
if(isset($_SESSION['email'])){
header("Location:home.php?reason=vous êtes déjà connecté");
}
if(isset($_GET['reason'])){
echo "<script>alert('".$_GET['reason']."')</script>";
}
if(isset($_POST['login-submit'])){
$email = $_POST['email'];
$pass = $_POST['password'];

$conn_e = "SELECT * FROM users WHERE email='".$email."'";
$rel_e = $conn->query($conn_e);

if( empty($email) || empty($pass) ){
        header("Location:log.php?error=Remplisser les champs vides pour se connecter");
        exit();
    }
else if(!mysqli_num_rows($rel_e) > 0){
    header("Location:log.php?error=Inscrivez-vous d'abord");
    exit();
}
else{
    while ($row = mysqli_fetch_array($rel_e)) {
        $pass1 = password_verify($pass, $row['pass']);
        if($pass){
            $_SESSION['name'] = $row['fullname'];
            $_SESSION['email'] = $email;

//////// C'EST LA OU jE VOULAIS TESTER PAR RAPPORT $mail quele page je dois ouvrir

header("Location:formulaire.php?login=successfull&email=$email");
        }
        else{
            header("Location:log.php?error=Mot de Passe érroné");
        exit();
        }   
    }
}

}
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="stylel.css">
</head>
<body>
<div class="login-box">
<div class="row">
<form action="log.php" method="POST">

                                        <div class="form-group">
                                        <p class="text-center text-danger">
                                            <?php
                                                if(isset($_GET['error'])){
                                                    echo $_GET['error'];
                                                }
                                            ?>
                                        </p>
                  <h1>Login</h1>
                  <div class="textbox">
                    <i class="fas fa-user"></i>
                    <input type="email" name="email" placeholder="Entrer votre email">
                  </div>

                  <div class="textbox">
                    <i class="fas fa-lock"></i>
                    <input type="password" name="password" placeholder="Entrer votre Mot de Passe">
                  </div>

                    <input type="submit" name="login-submit" class="btn btn-block bg-primary" value="Login">
                </form>
                </div>
                </div>
                </div>
                  </body>

</html>

d'accord,
Tout d'abord ta requête n'est pas préparer donc ouvertes aux injections sql (sécurité)
Tu ne récupères qu'une seul dans ta table, non ? (l'email est bien unique ?) si oui alors le while est inutile
Ensuite tu tests $pass alors que c'est $pass1 qui va valloir true ou false suivant la comparaison du mdp

Pour ta demande de page, j'ajouterais un champ dans la table users avec le nom de la page a rediriger

SLIM2020
Auteur

Carouge10 : Merci beaucoup ...je suivrais vos conseils...

Bonsoir.
J'ajouterais quelque chose, au lieu de ne vérifier que les variables email et pass soient bien définies et non vide qu'après avoir fait la requête SQL, fais plutôt la vérification avant, les requêtes SQL ne doivent être faites que lorsque c'est nécessaire et pour ces variables là à ce stade de ton code, tu n'as pas besoin des données de la base pour faire la vérification.
Donc :

  1. Vérifier la validité des données soumises.
    Si c'est bon:
  2. Faire la requête SQL pour n'en récupérer que les données nécessaires (inutile de récupérer tous les champs de la table si tu n'en utilise que deux).

Autre recommendation, évites de passer des données avec des espaces dans l'url, passes-y plutôt à la rigueur un mot clé qui te permettra de reconnaître le type de message à afficher à l'utilisateur, bien que je te conseille plutôt de te documenter sur le système de notification flash, soit via la session.

SLIM2020
Auteur

@ Lartak : Pour un débutant, les conseils sont toujours les bienvenus...Merci Mr Larttak...C'est très aimable de votre part. Je vais essayer et revenir ...