Avis sur mon script
Résolu
Mephistole
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
Mephistole Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Mephistole Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de faire un script qui permet de se connecter à un site. Et j'aimerais avoir votre avis.
Le voici :
Merci de vos réponses.
Je viens de faire un script qui permet de se connecter à un site. Et j'aimerais avoir votre avis.
Le voici :
<?php // Temporise les données afin qu'elle ne soient pas envoyé immédiatement ob_start(); $userConnection = new user(); // $connectionMessage sert à stocker les messages d'erreurs $connectionMessage = array(); $regexMail = '/[a-zA-Z0-9_\-.]{1,}[@]{1}[a-zA-Z0-9_\-.]{1,}[.]{1}[a-zA-Z]{1,}/'; // Si on clique sur connection if (isset($_POST['submitConnection'])) { // Et si le champ correspondant au mail n'est pas vide if (!empty($_POST['mailConnection'])) { // On vérifie que le mail rentré est correcte if(preg_match($regexMail, $_POST['mailConnection'])) { // On attribut à $userConnection->mail le mail rentré, strip_tags supprime les balises HTML et PHP $userConnection->mail = strip_tags($_POST['mailConnection']); $userConnection->getHashByMail(); } else { //Si le mail n'est pas correcte, on envoie un message d'erreur $connectionMessage['wrongMail'] = 'Le mail que tu as écrit n\'est pas correct'; } // Si aucun mail n'est donné, on envoie un message d'erreur } else { $connectionMessage['emptyMail'] = 'Tu n\'as pas écris ton mail.'; } // On vérifie si le champs correspondant au mot de passer n'est pas vide if (!empty($_POST['passwordConnection'])) { // On vérifie si le mot de passe entré correspon au mot de passe dans la base de donnée if ($_POST['passwordConnection'] == $userConnection->password) { // Si le mot de passe est vérifié on attribut la valeur du champ à $userConnection->password $userConnection->password = strip_tags($_POST['passwordConnection']); // Si le mot de passe ne correspond pas à celui entré dans la base de donnée, on envoie un message d'erreur } else { $connectionMessage['wrongPassword'] = 'Le mot de passe que tu as donné n\'est pas correcte.'; } // Si le champ du mot de passe est vide, on affiche un mot de passe } else if (empty($_POST['passwordConnection'])){ $connectionMessage['emptyPassword'] = 'Il faut donner un mot de passe.'; } // Si il n'y a aucune erreur, alors on crée une session après avoir récupéré les informations sur l'utilisateur if (count($connectionMessage) == 0) { // $userConnection->password = ''; // $userConnection->mail = ''; // session_start() permet de démarrer une session session_start(); // $_SESSION permet de garder les informations lié à un utilisateur lorsqu'il est connecté $_SESSION['id'] = $userConnection->id; $_SESSION['password'] = $userConnection->password; $_SESSION['last_name'] = $userConnection->last_name; $_SESSION['first_name'] = $userConnection->first_name; $_SESSION['mail'] = $userConnection->mail; // header() redirige vares la page indiquée header('Location: profile.php'); // exit termine le script exit; } } // Envoie les données temporisées et met fin à la temporisation des données ob_end_flush(); ?>
Merci de vos réponses.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Avis sur mon script
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Script download - Télécharger - Édition & Programmation
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
il est préférable de :
- mettre session_start() en début de page php
- de ne pas enregistrer les mots de passe, mais de stocker un hash du mot de passe. tu peux utiliser password_hash pour créer le hash, et password_verify pour vérifier que le mot de passe est correct.
par ailleurs, il me semble que ce script mélange erronément deux actions:
- inscription d'un nouvel utilisateur
- connection d'un utilisateur existant
il est préférable de :
- mettre session_start() en début de page php
- de ne pas enregistrer les mots de passe, mais de stocker un hash du mot de passe. tu peux utiliser password_hash pour créer le hash, et password_verify pour vérifier que le mot de passe est correct.
par ailleurs, il me semble que ce script mélange erronément deux actions:
- inscription d'un nouvel utilisateur
- connection d'un utilisateur existant
Bonjour,
En ce qui me concerne.. je ne comprend pas que tu ne fasses pas la vérification dans la class user ?
Class User dans laquelle je placerait un constructeur avec le login et le password.
Ensuite, il est tout de même conseillé de récupérer PROPREMENT les variables AVANT de les utiliser.
Je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour finir .... l'instruction session_start est à placer au tout début de ton fichier PHP. Ne jamais le mettre en plein milieu.
En ce qui me concerne.. je ne comprend pas que tu ne fasses pas la vérification dans la class user ?
Class User dans laquelle je placerait un constructeur avec le login et le password.
Ensuite, il est tout de même conseillé de récupérer PROPREMENT les variables AVANT de les utiliser.
Je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et pour finir .... l'instruction session_start est à placer au tout début de ton fichier PHP. Ne jamais le mettre en plein milieu.
Tu veux dire quoi quand tu dis que le script mélange 2 actions ?
si il ne s'agit pas d'enregistrer un nouvel utilisateur, je ne vois pas l'interet de vérifier la syntaxe de l'adresse email.
que fait getHashByMail()?
(aussi discuté ici: https://openclassrooms.com/fr/forum/sujet/avis-sur-mon-script?page=1#message-92346501)
Le nom, le prénom et le mail sont récupérés pour être utilisé plus tard.