Skip to content
Extraits de code Groupes Projets
Valider e83a0599 rédigé par vbochet's avatar vbochet
Parcourir les fichiers

Modification de la classe mère Controller.php pour y ajouter une fonction de...

Modification de la classe mère Controller.php pour y ajouter une fonction de calcul de slug ; ajout de fichiers pour ajouter la page d'inscription.
parent acf2587e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!21Merge de Dev dans Master,!1Merge de dev-nestor sur dev
<?php
class RegisterController extends Controller { // classe de contrôleur pour l'inscription au site
public function displayValid() { // la fonction d'affichage de réussite
$this->view->display(); // on affiche la page avec le message de réussite
}
public function displayForm() { // la fonction d'affichage du formulaire
$this->view->display();
}
public function verify() { // vérifie si le login est disponible
if(!isset($_POST['pseudo']) || !isset($_POST['password']) || !isset($_POST['nom']) || !isset($_POST['prenom']) || !isset($_POST['email'])) { // si l'une des données manque, erreur
//appeler une fonction d'erreur
echo "<h1>Erreur : variables absentes</h1>";
die();
}
$data = $_POST;
$data['slug'] = self::slugify($_POST['pseudo']);
$result = Register::check($data['slug'], $_POST['email']); // vérifie si le pseudo est libre et que l'adresse email n'est pas déjà utilisée
if($result == 1) { // connexion valide
Register::writedb($data);// on réalise l'inscription à l'aide d'une méthode de la classe Register
header('Location:valid'); // on redirige vers la page OK
}
else {
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["registerErrCode"] = $result; // on stocke le code d'erreur
header('Location:../inscription'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne)
}
}
}
...@@ -8,4 +8,19 @@ class Controller { // classe abstraite de contrôleur ...@@ -8,4 +8,19 @@ class Controller { // classe abstraite de contrôleur
$this->route = $route; // on stocke la route donnée en paramètre dans la variable protégée du même nom $this->route = $route; // on stocke la route donnée en paramètre dans la variable protégée du même nom
$this->view = new View($route); // on instancie une vue avec cette route, et on la stocke dans la variable protégée $view $this->view = new View($route); // on instancie une vue avec cette route, et on la stocke dans la variable protégée $view
} }
static public function slugify($text) { // fonction permettant de transformer une chaîne de caractères en slug
$text = preg_replace('~[^\pL\d]+~u', '-', $text); // on remplace les caractères qui ne sont pas des lettres ou des chiffres par "-"
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); // on transforme la chaîne pour en retirer les accents
$text = preg_replace('~[^-\w]+~', '', $text); // on retire les caract-res non désirés (ie les accents seuls)
$text = trim($text, '-'); // on retire les caractères inutiles en début et fin de chaîne (ie les "-")
$text = preg_replace('~-+~', '-', $text); // on retire les "-" successifs
$text = strtolower($text); // on met la chaîne en caractères minuscules
if (empty($text)) { // si le texte est vide, on retourne par défaut le texte "n-a"
return 'n-a';
}
return $text;
}
} }
<?php
class Register extends Model { // classe de modèle pour l'inscription
public static function check($slug, $email) { // méthode permettant de vérifier si un compte-joueur est libre
// OK si personne avec même pseudo ou même adresse mail n'existe dans la BDD
// renvoie 1 si le compte est libre (= n'existe pas)
// renvoie 2 si pseudo déjà pris
// renvoie 3 si email déjà utilisé
$db = Database::getInstance(); // on récupère la connexion à la BDD
$sql = "SELECT * FROM R_joueur WHERE slug = :slug OR email = :email";
$req = $db->prepare($sql); // on prépare la requête
$req->execute(array(":slug" => $slug, ":email" => $email)); // on remplace les variables dans la requête
$return = 1; //valeur par défaut si on n'a pas d'autre
if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
if($result["slug"] == $slug) {
$return = 2;
} // si on a trouvé quelqu'un avec le pseudo, on ne peut pas faire l'inscription
else if($result["email"] == $email) {
$return = 3;
} // si on a trouvé quelqu'un avec l'e-mail, on ne peut pas faire l'inscription
}
return $return; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
}
public static function writedb($data) { // méthode réalisant l'inscription dans la BDD à partir d'un tableau de données
$db = Database::getInstance(); // on récupère la connexion à la BDD
$sql = "INSERT INTO R_joueur (slug, pseudo, password, nom, prenom, email, description) VALUES (:slug, :pseudo, :password, :nom, :prenom, :email, :description)";
$req = $db->prepare($sql); // on prépare la requête
$result = $req->execute(array(":slug" => $data['slug'],
":pseudo" => $data['pseudo'],
":password" => $data['password'],
":nom" => $data['nom'],
":prenom" => $data['prenom'],
":email" => $data['email'],
":description" => $data['description'])); // on remplace les variables dans la requête
return $result; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
}
}
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Formulaire d'inscription</title>
<base href="http://localhost/projet-web-2016/www/"/>
</head>
<body>
<header>
<h1>Connexion au site</h1>
</header>
<?php if(isset($_SESSION['registerErrCode'])) { // si message d'erreur
$errCode = $_SESSION['registerErrCode'];
$errMsg = ($errCode == 2) ? '<h3 style="color:red;">Pseudo déjà utilisé !</h3>' : '<h3 style="color:red;">Adresse e-mail déjà utilisée !</h3>'; // on détermine le message à afficher
echo $errMsg; // on affiche le message
unset($_SESSION['registerErrCode']); // on retire la variable de session
} ?>
<form method="post" action="inscription/verify">
<label for="pseudo">Pseudo* : </label> <input type="text" required="" name="pseudo" id="pseudo" /><br/>
<label for="password">Mot de passe* : </label> <input type="password" required="" name="password" id="password" /><br/>
<label for="password_bis">Vérification mdp* : </label> <input type="password_bis" required="" name="password_bis" id="password_bis" /><br/>
<label for="nom">Nom* : </label> <input type="text" required="" name="nom" id="nom" /><br/>
<label for="prenom">Prénom* : </label> <input type="text" required="" name="prenom" id="prenom" /><br/>
<label for="email">Adresse e-mail* : </label> <input type="email" required="" name="email" id="email" /><br/>
<label for="description">Une description de vous : </label><textarea name="description" id="description"></textarea><br/>
<input type="submit" value="Connexion" />
</form>
<footer>
<p>Le pied de page</p>
</footer>
</body>
</html>
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Connexion réussie</title>
<base href="http://localhost/projet-web-2016/www/"/>
</head>
<body>
<header>
<h1 style="color:green;">Vos identifiants sont corrects !</h1>
</header>
<footer>
<p>Le pied de page</p>
</footer>
</body>
</html>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter