Conseil(s) :
Remarque(s) :
Ci suit la refactorisation de ton code précédemment posté. Ce que j'ai fait n'est pas parfait mais j'ai pas envie de tout faire et au poil de cul. Pour te dire, j'ai même pas relu donc sois prudent avec ce que je publie. J'voulais juste te présenter une manière de faire que je pense meilleure.
Database.php
Functions.php
Inscription.php
Login.php
- Conserver une certaine rigueur dans le nommage des variables. Tout anglais ou tout français mais pas de mélange.
- Quand t'as une liste de chose à afficher, tu utilises les balises qui vont bien :
<ul>
<li></li>
<li></li>
<li></li>
</ul> - N'hésite pas à séparer tes sources en plusieurs fichiers. Ca permet d'utiliser des bouts de codes dans plusieurs endroits. Ca t'évite de recopier plusieurs fois les mêmes choses.
- Généralement, on ajoute une confirmation de mot de passe à l'inscription pour être sûr que l'utilisateur ne s'est pas fourvoyé.
Remarque(s) :
- Pourquoi l'email est présent dans login.php ?
Ci suit la refactorisation de ton code précédemment posté. Ce que j'ai fait n'est pas parfait mais j'ai pas envie de tout faire et au poil de cul. Pour te dire, j'ai même pas relu donc sois prudent avec ce que je publie. J'voulais juste te présenter une manière de faire que je pense meilleure.
Database.php
<?php
defined('DB_HOST') || define('DB_HOST', 'localhost');
defined('DB_USER') || define('DB_USER', 'root');
defined('DB_PASS') || define('DB_PASS', '');
defined('DB_NAME') || define('DB', 'kham');
Functions.php
<?php
function is_impolite($word) {
$array = array("pute", "con");
return in_array($word, $array);
}
function is_unique($name, $value) {
$result = mysql_query("SELECT id FROM joueurs WHERE $name = '$value'");
return (mysql_num_rows($result) == 0);
}
function check_length($word, $length) {
$word_trimmed = str_replace(' ', '', $word);
$word_trimmed_length = strlen($word_trimmed);
return ($length < $word_trimmed_length);
}
function validates_pseudo($pseudo, &$error_messages) {
$pseudo = trim($pseudo);
if (is_impolite($pseudo)) {
$error_messages[] = 'Votre pseudo est un mot interdit.';
}
if (check_length($pseudo, 3)) {
$error_messages[] = 'Votre pseudo doit avoir plus de 3 lettres.';
}
return $pseudo;
}
function validates_pass($pass, &$error_messages) {
$pass = trim($pass);
if (impolite($pass)) {
$error_messages[] = 'Votre mot de passe est un mot interdit.';
}
if (check_length($pass, 3)) {
$error_messages[] = 'Votre mot de passe doit avoir plus de 3 lettres.';
}
return $pass;
}
function validates_email($email, &$error_messages) {
$email = trim($email);
if (true) {
$error_messages[] = "Merci d'utiliser un email valide.";
}
return $email;
}
Inscription.php
<?php
session_start();
require_once 'functions.php';
require_once 'database.php';
$error_messages = array();
if (isset($_POST)) {
$pseudo = '';
$pass = '';
$email = '';
if (isset($_POST['pseudo'])) {
$pseudo = validates_pseudo($_POST['pseudo'], $error_messages);
} else {
$error_messages[] = 'Merci de saisir un pseudo.';
}
if (isset($_POST['pass'])) {
$pass = validates_pass($_POST['pass'], $error_messages);
} else {
$error_messages[] = 'Merci de saisir un mot de passe.';
}
if (isset($_POST['email'])) {
$email = validates_email($_POST["email"], $error_messages);
} else {
$error_messages[] = 'Merci de saisir un email.';
}
if (count($error_messages) > 0) {
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if ($link) {
$db = mysql_select_db(DB_NAME, $link);
if ($db) {
if (!is_unique('pseudo', $pseudo)) {
$error_messages[] = "Ce pseudo existe déjà.";
}
if (is_unique('email', $email)) {
$error_messages[] = "Cet email existe déjà.";
}
if (count($error_messages) > 0) {
$_SESSION['flash_messenger'] = serialize($error_messages);
} else {
$result = mysql_query("INSERT INTO joueurs (email, pseudo, passe) VALUES ('$email', '$pseudo', '$pass')");
$message = "Un lien d'activation vient d'être envoyé à votre adresse Email d'inscription.<br />";
$message .= "Vous devrez cliquer sur le lien pour activer votre compte.";
$_SESSION['flash_messenger'] = $message;
}
}
}
}
}
header('Location: accueil.html');
Login.php
<?php
session_start();
require_once 'functions.php';
require_once 'database.php';
$error_messages = array();
if (isset($_POST['pseudo1'])) {
$pseudo = '';
$pass = '';
if (isset($_POST['pseudo'])) {
$pseudo = validates_pseudo($_POST['pseudo'], $error_messages);
} else {
$error_messages[] = 'Merci de saisir un pseudo.';
}
if (isset($_POST['pass'])) {
$pass = validates_pass($_POST['pass'], $error_messages);
} else {
$error_messages[] = 'Merci de saisir un mot de passe.';
}
if (count($error_messages) > 0) {
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if ($link) {
$db = mysql_select_db(DB_NAME, $link);
if ($db) {
if (!is_unique('pseudo', $pseudo)) {
$error_messages[] = "Ce pseudo n'existe pas.";
}
$result = mysql_query("SELECT id FROM joueurs WHERE passe = $pass AND pseudo = $pseudo");
if (!mysql_num_rows($result)) {
$error_messages[] = "Ce mot de passe est faux.";
}
if (count($error_messages) > 0) {
$_SESSION['flash_messenger'] = serialize($error_messages);
} else {
header('Location: jouer.html');
exit();
}
}
}
}
}
header('Location: accueil.html');