Sélectionner une révision Git
-
Etienne BRATEAU a rédigéEtienne BRATEAU a rédigé
RegisterController.php 5,68 Kio
<?php
include(ROOT."/Image.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
session_start();
if(isset($_SESSION['registerErrCode'])) { // si message d'erreur
$errCode = $_SESSION['registerErrCode'];
if($errCode == 2) { // on détermine le message
$errMsg = '<h3>Pseudo déjà utilisé !</h3>';
}
elseif($errCode == 3) {
$errMsg = '<h3>Adresse e-mail déjà utilisée !</h3>';
}
elseif($errCode == 4) {
$errMsg = '<h3>Mots de passe différents</h3>';
}
elseif($errCode == 5) {
$errMsg = '<h3>Problème sur l\'avatar</h3>';
}
elseif($errCode == 6) {
$errMsg = '<h3>Le fichier n\'est pas une image</h3>';
}
elseif($errCode == 7) {
$errMsg = '<h3>L\'image est trop grande</h3>';
}
else{
$errMsg = "<h3>Exception non gérée.</h3>";
}
unset($_SESSION['registerErrCode']); // on retire la variable de session
$this->view->errMsg = $errMsg;
}
$this->view->display();
}
public function verify() { // vérifie si les données envoyées sont valides
if(!isset($_POST['method']) || !isset($_POST['value'])) { // si l'une des données manque, erreur
//appeler une fonction d'erreur
echo "<h1>Erreur : données absentes</h1>";
die();
}
$method = $_POST['method'];
$value = $_POST['value'];
$passed = false;
$retval = '';
switch($method) {
case 'checkPseudo':
// vérifie que le pseudo est libre
$slug_joueur = self::slugify($value);
if(Register::checkPseudo($slug_joueur)) {
$passed = true;
$retval = "Pseudo valide";
}
else {
$passed = false;
$retval = "Déjà utilisé";
}
break;
case 'checkPassword':
//if(preg_match("#^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $value)) {
$passed = true;
$retval = "Mdp valide";
//}
//else {
// $passed = false;
// $retval = "Mdp invalide";
//}
break;
case 'checkPasswordBis':
$mdp = explode("¤", $value);
if($mdp[0]==$mdp[1]) {
$passed = true;
$retval = "Mdp valide";
}
else {
$passed = false;
$retval = "Mdp différents";
}
break;
case 'checkEmail':
if(preg_match("#^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $value)) {
// deuxième test : le mail est il déjà utilisé ?
//$value = str_replace("%40", "@", $value); // on corrige le "%40" en "@" pour vérifier l'existence
if(Register::checkEmail($value)) {
$passed = true;
$retval = "E-mail valide";
}
else {
$passed = false;
$retval = "Déjà utilisé";
}
}
else {
$passed = false;
$retval = "Format invalide";
}
break;
default: exit;
}
if($passed) {
// set the message colour to green and the checkbox to checked
echo '{"success":true, "text":"'.$retval.'", "color":"green"}';
}
else {
// set the message colour to red, the checkbox to unchecked and focus back on the field
echo '{"success":false, "text":"'.$retval.'", "color":"red"}';
}
}
public function save() { // vérifie les données d'inscription, et enregistre les infos dans la BDD
if(!isset($_POST['pseudo']) || !isset($_POST['password']) || !isset($_POST['password_bis']) || !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;
if($data['password'] == $data['password_bis']) {
$data['password'] = password_hash($data['password'], PASSWORD_DEFAULT);
$data['slug_joueur'] = self::slugify($_POST['pseudo']);
$data['avatar'] = 0;
$result = Register::check($data['slug_joueur'], $_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
if(isset($_FILES['avatar'])) {
list($err, $avatar) = getImage($_FILES['avatar'], 512, 512);
if ($err == 0) {
saveImage($avatar, ROOT."/www/images/avatar/".$data['slug_joueur'].".jpg");
$data['avatar'] = 1;
} elseif ($err != 1) {
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["registerErrCode"] = $err; // 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)
die();
}
}
$success = Register::writedb($data);// on réalise l'inscription à l'aide d'une méthode de la classe Register
if ($success == 1) {
header('Location:valid'); // on redirige vers la page OK
} else {
echo "<h1>Erreur : l'inscription a échoué</h1>";
}
} 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)
}
} else {
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["registerErrCode"] = 4; // 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)
}
}
}