Bonjour a tous , voilà j'essaie de mettre en place un système "se rappeler de moi" sur mon site mais étrangement j'arrive pas a faire un update dans mysql).sa fait plus de 24 heures que je vois pas ce que j'ai mal fait ou omis.Merci d'avance pour votre attention

if (isset($_POST['envoyer']))
    if(isset($_POST['adresse_mail'])&& !empty($_POST['adresse_mail']) && /*ici je vérifie qu le mail et le mot de passe sont bon*/
    isset($_POST['mot_de_passe'])&& !empty($_POST['mot_de_passe']))

    {

    $pdo= new PDO('mysql:dbname=identifiantsclients;host=localhost','root',"");
     $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);

    $adresse_mail=htmlspecialchars($_POST['adresse_mail']);

    $mot_de_passe=htmlspecialchars($_POST['mot_de_passe']);

        $sel=$pdo->prepare("SELECT * FROM infosdesclients WHERE (adresse_mail = ? and mot_de_passe=?) limit 1");
        $sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute (array($adresse_mail,($mot_de_passe)));
        $tab=$sel->fetchAll();

        if(count($tab)>0) {if (!session_id()){

     session_start();
     session_regenerate_id();

     }

            $_SESSION["authentification"]="oui";
            $_SESSION["nom"]=$tab[0]["nom"];
            $_SESSION ["prenoms"]=$tab[0]["prenoms"];
            $_SESSION ["adresse_mail"]=$tab[0]["adresse_mail"];
            $_SESSION ["numero_de_telephone"]=$tab[0]["numero_de_telephone"];
            $_SESSION["pseudo"]=$tab[0]["pseudo"];

            $sel=$pdo->prepare("SELECT * FROM pariduclient");
        $sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute (array());
        $tab_solde=$sel->fetchAll();

        $_SESSION["solde_du_compte"]=$tab_solde[0]["solde_du_compte"];

            echo '<pre>';print_r($tab);echo'</pre>';echo '<pre>';print_r($_SESSION);echo'</pre>';

            /*c'est ici que je fais ma requete pour insérer une valeur indéchivrable dans ma bdd que j'utiliserai pour mon système de "se rappeler de moi"*/
            if ($_POST['connexion_automatique']){
     require'connexion_base_de_donnees.php';
     $se_souvenir= str_random(250);
     $pdo->prepare('UPDATE infosdesclients SET se_souvenir = ? WHERE adresse_mail=?')->execute([$se_souvenir,$tab->adresse_mail]);

     setcookie('remember',$tab->adresse_mail . '=='.$se_souvenir.sha1($tab->adresse_mail.'maison'),time()+60*60*24*10);
     }
            die();
            header("Location: page_de_jeu.php");

        }

    }

        else {echo 'mauvais login ou mot de passe'; die ();} 

?>
tilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)

Ce que je veux

Pouvoir faire un update dans ma bdd

Ce que j'obtiens

aucun update ne se fait et sa fait plus de 24 heures que je vois pas ce qui cloche

8 réponses


Hello,

A tester:

<?php
if (isset($_POST['envoyer'])) {
if (
isset($_POST['adresse_mail']) && !empty($_POST['adresse_mail']) &&
isset($_POST['mot_de_passe']) && !empty($_POST['mot_de_passe'])
) {
try {
$pdo = new PDO('mysql:dbname=identifiantsclients;host=localhost', 'root', "");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

        $adresse_mail = htmlspecialchars($_POST['adresse_mail']);
        $mot_de_passe = htmlspecialchars($_POST['mot_de_passe']);

        $sel = $pdo->prepare("SELECT * FROM infosdesclients WHERE adresse_mail = ? and mot_de_passe = ? LIMIT 1");
        $sel->execute([$adresse_mail, $mot_de_passe]);
        $tab = $sel->fetch();

        if ($tab) {
            if (!session_id()) {
                session_start();
                session_regenerate_id();
            }

            $_SESSION["authentification"] = "oui";
            $_SESSION["nom"] = $tab["nom"];
            $_SESSION["prenoms"] = $tab["prenoms"];
            $_SESSION["adresse_mail"] = $tab["adresse_mail"];
            $_SESSION["numero_de_telephone"] = $tab["numero_de_telephone"];
            $_SESSION["pseudo"] = $tab["pseudo"];

            $sel = $pdo->prepare("SELECT solde_du_compte FROM pariduclient");
            $sel->execute();
            $tab_solde = $sel->fetch();

            $_SESSION["solde_du_compte"] = $tab_solde["solde_du_compte"];

            echo '<pre>';
            print_r($tab);
            echo '</pre>';
            echo '<pre>';
            print_r($_SESSION);
            echo '</pre>';

            /* C'est ici que je fais ma requête pour insérer une valeur indéchiffrable dans ma base de données que j'utiliserai pour mon système "Se souvenir de moi". */
            if (isset($_POST['connexion_automatique'])) {
                require 'connexion_base_de_donnees.php';
                $se_souvenir = str_random(250);
                $pdo->prepare('UPDATE infosdesclients SET se_souvenir = ? WHERE adresse_mail = ?')->execute([$se_souvenir, $tab['adresse_mail']);

                setcookie('remember', $tab['adresse_mail'] . '==' . $se_souvenir . sha1($tab['adresse_mail'] . 'maison'), time() + 60 * 60 * 24 * 10);
            }
            header("Location: page_de_jeu.php");
            exit(); // Utilisez exit() pour arrêter le script après une redirection.
        } else {
            echo 'Mauvais login ou mot de passe';
        }
    } catch (PDOException $e) {
        echo "Erreur : " . $e->getMessage();
    }
} else {
    echo 'Adresse e-mail et mot de passe sont obligatoires.';
}

}
?>

Bonsoir @Mimiclcl , j'espere que tout va bien, j'ai essayé le code mais malheuresement il n'y a toujours pas de update dans la partie se_souvenir de ma bd, par contre lorsque j'entre un mauvais login , le message mauvais login ou mot de passe s'affiche

Hello,

Au vu de tous les sujets que tu créer je commence à me dire si ça serait pas mal que je regarde plus en détails :)

J'ai l'impression que tu suis un vieux tutoriel ou une personne qui ne suit pas les bonnes pratique car il y a plusieurs problème dans le code, qui ne devrait plus être fait de nos jours. Voici une liste des problèmes :

  1. Faire en même temps un isset($x) et un !empty($x)
  2. L'utilisation de htmlspecialchars qui n'est pas utile ici
  3. Faire un fetchAll alors que dans la requête tu fais un LIMIT 1
  4. Le mot de passe en claire :(
  5. Je l'avais déjà dis mais je le remets ici : la cohérence dans le code (indentation par exemple)
  6. Utilisation de array() pour créer un tableau à la place de []

Je pense qu'il y a beaucoup de chose à revoir et peut-être qu'il faudrait que l'on te guide plus. Si jamais je suis sur le discord de Grafikart sous le même pseudo

oui c'est le meme pseudo et le tuto que je suis est sur youtube, de grafikart https://www.youtube.com/watch?v=YNbPMm08jcw&t=3532s il date d'il y a 8 ans, sa date mais j'ai pas trouvé mieux, c'est sans doute pour sa que mes codes ne fonctionnent pas et que je comprends pas pourquoi, je suis aussi les tutos de jason champagne c'est lui qui a suggéré l'emploi a la fois de isset et isempty, tu comprends

Bon ba si le mec te conseil isset & !empty tu peux arrêter de regarder ses tuto :)

Envoie moi un mp sur discord

d'accord c'est entendu thank yooooou

dis tu aurais un lien discord pour te contacter en mp, j'ai un peu de mal a te retrouver

Oui bien sur, Lien discord