Création de variable avant une connexion

Fermé
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 - 12 mai 2022 à 21:13
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 - 12 mai 2022 à 21:23
bonjour a tous

je suis toujours dans ma confirmation par mail

Donc pour l'instant si l'utilisateur s'enregistre il reçoit bien un mail avec le lien d'activation
si il essaye de se connecter sans s'activer il reçoit aussi son lien d'activation

Mais il y a un cas de figure ou cela est compliqué
Imaginons que la personne s'enregistre mais ne va pas voir ses emails et qu'il fasse un nettoyage de son navigateur

Toutes ses variables de sessions sont disparues

Si il reviens sur mon site et essaye de se connecter le lien de confirmation lui sera bien envoyé mais sans mes variables de sessions qui lui donneront ses accès (la clé de confirmation et son id )

Donc j'avais pense crée deux variables de sessions qui sont cree lors de la connexion et qui seraient utilisée a la place de celle de l'inscription

Mais le soucis comment crée des variables de connexion qui seraient prise en compte malgré que la connexion ne s'effectue pas

ou alors peut être une autre astuce

voici le code de connexion

<?php
//on demarre la session
session_start();

//on affiche les erreurs
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);

//on recupere le lien link pour la redirection vers les autres pages
$link = !empty($_GET['link']) ? $_GET['link'] : NULL;

//on se connecte a la base
require_once 'base.php';

//on verifie les variables
if (!empty($_POST['pseudo']) && !empty($_POST['password']))
{
    //on ecris propremen les variables
    $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
    $password = !empty($_POST['password']) ? $_POST['password'] : NULL;

    //preparation requete
    $sql = 'SELECT pseudo, email,id,confirme, password,confirmkey FROM utilisateurs WHERE pseudo = ?';
    $datas = [$pseudo];

    //Execution de la requete
    try
    {
        $requete = $bdd->prepare($sql);
        $requete->execute($datas);
    }
    catch(Exception $e)
    {
        // en cas d'erreur :
        echo " Erreur ! " . $e->getMessage();
        echo " Les datas : ";
        print_r($datas);
    }

    //on prepare le tableau
    $data = $requete->fetch();
    $row = $requete->rowCount();

    //si le peusdo est bien dans la base alors on continue sinon on sort
    if ($data['confirme'] != 0)
    {

        if ($row == 1)
        {
            //on verifie le pawword si il est ok on continue , sinon sortie
            if (password_verify($password, $data['password']))
            {
                //on definit et on cree les variables sessions
                $_SESSION['user'] = array(
                    'id' => $data['id'],
                    'pseudo' => $data['pseudo'],
                    'email' => $data['email'],
                    'confirmkey' => $data['confirmkey']
                );
                $_SESSION['id'] = $data['id'];
                $_SESSION['pseudo'] = $data['pseudo'];
                $_SESSION['email'] = $data['email'];
                $_SESSION['confirmkey'] = $data['confirmkey'];

                //on test la variable link si elle est vide  on va vers index
                if (empty($_SESSION['link']))
                {
                    header('Location: index.php?pseudo=' . $_SESSION['pseudo']);
                    //sinon on va faire la derniere page visitee
                    
                }
                else
                {
                    header('location: ' . $_SESSION['link']);
                }
                die();
            }
            else
            {
                header('Location: connexion-site.php?login_err=password');
                die();
            }
        }
        else
        {
            header('Location: connexion-site.php?login_err=already');
            die();
        }
    }
    else
    {
        echo "
        <div class='container' style=' min-width: 50%;margin:auto;'>
            <div class='card text-center'>
              <div class='card-header'>
                    compte pas activer  regarde bien dans te spams  si pas alors reçois a nouveau le lien
                </div>
       <div class='card-body'>
                                  <p class='card-text'>   <form action='https://phil.pecheperle.be/testenvoismail.php' method='post'>
  <button type='submit' name='renvoyer'>Renvoyer l email pour activer ton compte</button>
</form></p>
                </div>
                </div>
                </div>";
    }
}
?>
     <!-- debut pied de page-->
            <div class="container" style="max-width: 100%; margin: auto;">
                <?php include ("./include/pied-de-page.php"); ?>
                <?php include ("./include/footer.php"); ?>
            </div>
        </div>
    </body>
    <!-- fin du body-->
</html>
A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 12 mai 2022 à 21:20
Il faut un formulaire dans lequel tu lui demandes d'indiquer son adresse email
Puis en utilisant la fonction gerUserByMail que je t'ai donné, tu récupères ses informations et tu lui renvoie un mail.

1
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
12 mai 2022 à 21:23
Merci jordane
ah oui je n'avais pas pensé a cela

bon je regarde a cela demain car ce soir je ne vois plus rien , mis a part des lignes de code

On rigole pas
0