Bonjour, je reprends mes explications du problème que j'ai avec une erreur WARNING.

En exécutant le script téléchargé, je fais le login au fichier login.php et je ne coche pas "se souvenir de moi"; puis, j'obtiens cette erreur:

PHP Notice: Undefined index: remember in /home/pdo/G/login.php on line 16

Et lorsque que je supprime ou commente cette partie de code du fichier login.php :

if($_POST['remember']){ if(isset($_POST['remember'])){ $remember_token = str_random(250); $pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]); setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 7); } }

J'ai ajouté un isset, mais, ça ne fonctionne pas pour empêcher le WARNING.

Quelqu'un peut m'aider avec : Gestion d'un espace membres ?

8 réponses


JoolsMcFly
Réponse acceptée

Tu mets le isset après la première vérif : if ($_POST['remember']) et c'est cette dernière qui lance le warning.
T'as juste besoin du isset :

if (isset($_POST['remember'])) {
    $remember_token = str_random(250);
    $pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')
          ->execute([$remember_token, $user->id]);
    setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 7);
}
JoolsMcFly
Réponse acceptée

C'est une façon de voir les choses ...

En tout cas, je pense que tu devrais prendre 5min pour regarder le code que j'ai mis et le comparer au tien pour comprendre pourquoi t'avais un warning.

Dan H
Auteur

J'ai supprimer toute la partie "Se souvenir de moi" car, cela ne fonctionne pas du tout. Aussi bien s'en défaire.
Pour moi c'est résolu.

Dan H
Auteur

Je n'avais pas votre message au moment d'écrire le mien; alors, je vais m'empresser de tester votre solution, merci.

Dan H
Auteur

Ça fonctionne sans erreur.
J'ajouterais bien ACTIF / INACTIF afin de désactiver un compte soit en allant dans la base phpmysql ou en créant une administratin d'utilisateurs. Mais, le problème, les sources ici, utilise pas juste du PHP simple. Avec le truc COMPOSER des sources ici, je trouve ça lourd.

composer est un super gestionnaire de dépendances. Ça permet d'utiliser des librairies écrites pas d'autres personnes et de controler les versions utilisées, et d'avoir des propositions de version suivant la version de PHP installée sur ton serveur/machine locale.

Qu'est-ce qui est dans composer qui pose souci ?

Dan H
Auteur

C'est le fait d'avoir une dépendances comme un Framework ou autres dans les sources.
Je veux que ça reste portable d'un hébergeur qui pourrait être plus restrictif.
J'ai accès à un panneau pas mal complet mais il peut arrivé que ce ne soit pas le cas.
C'est pour ça que je m'en tiens au Javascript, Jquery, CSS, MYSQL, PHP la plupart du temps.
Je ne suis pas non plus familier avec PHP Orienté Objet.
Par contre, j'aime bien utiliser PDO avec MYSQL.

Je ne sais pas de quel framework tu parles mais beaucoup d'hébergeur facilitent l'installation de Symfony ou Laravel pour ce qui est de PHP.
Et tu as aussi des hébergeurs qui n'ont pas les dernières versions de PHP ou MySQL donc tu pourrais avoir des soucis de compatibilité de code ...

Enfin, il ne faut pas que tu penses dépendre d'un framework mais plutôt que tu utilises un framework pour faire ton travail. Si t'as mis ton code métier dans des services alors ce sera raisonnablement facile de changer de framework.

Prochaine étape : te familiariser avec la POO, ça me semble indispensable.