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. |
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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-
- fais d'abord les modifications suggérées.
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)
-
-
-
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.