users.php (12644B)
1 <?php // users.php :: Page d'inscription ou concernant le Password. 2 3 include('kernel/functions.php'); 4 include('kernel/display_log.php'); 5 $link = opendb(); 6 7 $controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control"); 8 $controlrow = mysql_fetch_array($controlquery); 9 10 $menuquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "menu_users"); 11 $menurow = mysql_fetch_array($menuquery); 12 13 $advertising['advertising'] = $menurow['content']; 14 $template_menu = gettemplate("advertising"); 15 $advertising = parsetemplate($template_menu, $advertising); 16 17 if(isset($_GET['do'])){ 18 switch ($_GET['do']) { 19 case 'register': register(); break; 20 case 'verify': verify(); break; 21 case 'lostpassword': lostpassword(); break; 22 case 'changepassword': changepassword(); break; 23 } 24 } 25 26 function register() { // Créer un nouveau compte. 27 28 global $controlrow, $advertising; 29 30 if (isset($_POST["submit"])) { 31 32 extract($_POST); 33 34 $errors = 0; $errorlist = ""; 35 36 // Processus des ID. 37 if (trim($username) == "") { $errors++; $errorlist .= "- Vous n'avez entré aucun ID.<br>"; } 38 if (preg_match("/[\^*+<>?#]/", $username)==1) { $errors++; $errorlist .= "- Votre ID doit être écrit en caractères alphanumérique.<br>"; } 39 $usernamequery = doquery("SELECT username FROM {{table}} WHERE username='".addslashes($username)."' LIMIT 1","users"); 40 if (mysql_num_rows($usernamequery) > 0) { $errors++; $errorlist .= "- L'ID est déja pris.<br>"; } 41 42 // Processus des adresse email. 43 if (trim($email1) == "" || $email2 == "") { $errors++; $errorlist .= "- Vous n'avez entré aucun E-mail.<br>"; } 44 if ($email1 != $email2) { $errors++; $errorlist .= "- Les 2 adresses E-mail que vous avez inscrit ne sont pas indentiques.<br>"; } 45 if (! is_email($email1)) { $errors++; $errorlist .= "- L'adresse E-mail que vous avez inscrit est invalide.<br>"; } 46 $emailquery = doquery("SELECT email FROM {{table}} WHERE email='".addslashes($email1)."' LIMIT 1","users"); 47 if (mysql_num_rows($emailquery) > 0) { $errors++; $errorlist .= "- L'adresse E-mail est déja pris.<br>"; } 48 49 // Processus des PW. 50 if (preg_match("/[\^*+<>?#]/", $password1)==1) { $errors++; $errorlist .= "- Votre PW doit être écrit en caractères alphanumérique.<br>"; } 51 if ($password1 != $password2) { $errors++; $errorlist .= "- Les 2 PW que vous avez inscrit ne sont pas indentiques.<br>"; } 52 $password = md5($password1); 53 54 // Processus des charname 55 if (trim($charname) == "") { $errors++; $errorlist .= "- Vous n'avez entré aucun Pseudo<br>"; } 56 if (preg_match("/[\^*+<>?#]/", $charname)==1) { $errors++; $errorlist .= "- Votre Pseudo doit être écrit en caractères alphanumérique.<br>"; } 57 $charnamequery = doquery("SELECT charname FROM {{table}} WHERE charname='".addslashes($charname)."' LIMIT 1","users"); 58 if (mysql_num_rows($charnamequery) > 0) { $errors++; $errorlist .= "- Le Pseudo est déja pris.<br>"; } 59 60 if ($errors == 0) { 61 62 if ($controlrow["verifyemail"] == 1) { 63 $verifycode = ""; 64 for ($i=0; $i<8; $i++) { 65 $verifycode .= chr(rand(65,90)); 66 } 67 } else { 68 $verifycode='1'; 69 } 70 71 $query = doquery("INSERT INTO {{table}} SET id='',regdate=NOW(),verify='".addslashes($verifycode)."',username='".addslashes($username)."',password='".addslashes($password)."',email='".addslashes($email1)."',charname='".addslashes($charname)."',avatar='".addslashes($avatar)."',charclass='".addslashes($charclass)."',difficulty='".addslashes($difficulty)."'", "users") or die(mysql_error()); 72 73 if ($controlrow["verifyemail"] == 1) { 74 if (sendregmail($email1, $verifycode) == true) { 75 $page = 'Votre compte a été crée avec succès.<br><br>Vous devriez recevoir un e-mail de vérification de compte sous peu. Vous aurez besoin du code de vérification contenu dans l\'e-mail. Sans ce code vous ne pourrez pas jouer. <br><br>Lorsque vous aurez recu cet e-mail allez à la page de <a href="?do=verify">vérification</a> et remplissez les champs requis.'; 76 } else { 77 $page = 'Votre compte a été crée avec succès.<br><br>Toutefois, un problème est survenu lors de l\'envois de l\'e-mail, contactez l\'administrateur du jeu à l\'adresse suivante pour avoir plus de précisions : <b>'.$controlrow["adminemail"].'</b> .'; 78 } 79 } else { 80 $page = 'Votre compte a été crée avec succès.<br><br>Vous pouvez maintenant <a href="login.php?do=login">vous loger</a> et commencer à jouer '.$controlrow["gamename"].'!'; 81 } 82 83 } else { 84 85 $page = 'Votre compte n\'a pas pu être crée car les erreur(s) suivante(s) se sont produite(s):<br><br><span class="alerte">'.$errorlist.'</span><br><br>Maintenant vous pouvez:<br><br><a href="?do=register">» retourner et réessayer</a>'; 86 } 87 88 } else { 89 90 $page = gettemplate("register"); 91 if ($controlrow["verifyemail"] == 1) { 92 $controlrow["verifytext"] = '<br><span class="notice">Un code de validation sera envoyé à l\'adresse email ci-dessus. Sans ce code de validation, vous ne pourrez pas jouer . Veuillez être sûr d\'écrire un adresse email correcte.</span>'; 93 } else { 94 $controlrow["verifytext"] = ""; 95 } 96 } 97 display(parsetemplate($page, $controlrow), 'Créer un compte', $advertising); 98 99 } 100 101 102 function verify() { // Validation d'un compte. 103 104 global $controlrow, $advertising; 105 106 if (isset($_POST["submit"])) { 107 108 extract($_POST); 109 $errors = 0; 110 $errorlist = ""; 111 112 $userquery = doquery("SELECT username,email,verify FROM {{table}} WHERE username='$username' LIMIT 1","users"); 113 if (mysql_num_rows($userquery) != 1) { $errors++; $errorlist .= "- Aucun compte existant avec cet ID.<br>"; } 114 $userrow = mysql_fetch_array($userquery); 115 if ($userrow["verify"] == 1) { $errors++; $errorlist .= "- Votre compte a déja été validé.<br>"; } 116 if ($userrow["email"] != $email) { $errors++; $errorlist .= "- L'adresse e-mail est incorrecte.<br>"; } 117 if ($userrow["verify"] != $verify) { $errors++; $errorlist .= "- Le code de validation est incorrect.<br>"; } 118 if ($errors == 0) { 119 $updatequery = doquery("UPDATE {{table}} SET verify='1' WHERE username='$username' LIMIT 1","users"); 120 $page = '<b>Bravo votre compte vient d\'être validé!</b><br><br>Vous pouvez désormais vous loger via le menu de gauche de l\'accueil et commencer à jouer à '.$controlrow['gamename'].'.<br><br>Maintenant vous pouvez:<br><br><a href="login.php?do=login">» retourner à l\'accueil</a>'; 121 }else { 122 $page = 'Votre compte n\'a pas pu être validé, car les erreur(s) suivante(s) se sont produite(s):<br><br><span class="alerte">'.$errorlist.'</span><br><br>Maintenant vous pouvez:<br><br><a href="users.php?do=verify">» retourner et réessayer</a>'; 123 } 124 }else{ 125 $page = gettemplate("verify"); 126 } 127 128 display(parsetemplate($page, $controlrow), 'Vérification de votre compte',$advertising); 129 130 } 131 132 133 function lostpassword() { // Password perdu. 134 135 global $controlrow, $advertising; 136 137 if (isset($_POST["submit"])) { 138 extract($_POST); 139 $userquery = doquery("SELECT email FROM {{table}} WHERE email='$email' LIMIT 1","users"); 140 if (mysql_num_rows($userquery) != 1) { $errors++; $errorlist .= "- Aucun compte avec cette adresse email.<br>"; } 141 if (trim($email) == "") { $errors++; $errorlist .= "- Vous n'avez entré aucune adresse e-mail.<br>"; } 142 if ($errors == 0) { 143 $newpass = ""; 144 for ($i=0; $i<8; $i++) { 145 $newpass .= chr(rand(65,90)); 146 } 147 $md5newpass = md5($newpass); 148 $updatequery = doquery("UPDATE {{table}} SET password='$md5newpass' WHERE email='$email' LIMIT 1","users"); 149 if (sendpassemail($email,$newpass) == true) { 150 $page='Votre nouveau PW a été envoyé à l\'adresse e-mail ('.$email.') que vous nous avez indiqué.<br><br>Après avoir recu votre nouveau PW, vous pourrez vous loger et commencer à jouer.<br><br>Maintenant vous pouvez:<br><br><a href="login.php?do=login">» retourner à l\'accueil</a>'; 151 } }else { 152 $page='Votre nouveau PW n\'a pas pu être crée, car les erreur(s) suivante(s) se sont produite(s):<br><br><span class="alerte">'.$errorlist.'</span><br><br>Maintenant vous pouvez:<br><br><a href="users.php?do=lostpassword">» retourner et réessayer</a>'; 153 } 154 }else{ 155 $page = gettemplate("lostpassword"); 156 } 157 158 display(parsetemplate($page, $controlrow), 'Password perdu?', $advertising); 159 160 } 161 162 163 function changepassword() { // Changer password. 164 165 global $controlrow, $advertising; 166 167 if (isset($_POST["submit"])) { 168 extract($_POST); 169 $errors = 0; 170 $errorlist = ""; 171 172 $userquery = doquery("SELECT * FROM {{table}} WHERE username='".addslashes($username)."' LIMIT 1","users"); 173 if (mysql_num_rows($userquery) != 1) { $errors++; $errorlist .= "- Il y a aucun compte existant avec cet ID.<br>"; } 174 $userrow = mysql_fetch_array($userquery); 175 if ($userrow['password'] != md5($oldpass)) { $errors++; $errorlist .= "- L'ancien PW que vous avez fournie est incorrect.<br>"; } 176 if ((trim($newpass1)== "") && (trim($newpass2)== "")) { $errors++; $errorlist .= "- Vous n'avez entré aucun nouveau PW.<br>"; } 177 if (preg_match("/[^A-z0-9_\-]/", $newpass1)==1) { $errors++; $errorlist .= "- Le nouveau PW doit être écrit en caractères alphanumérique.<br>"; } 178 if ($newpass1 != $newpass2) { $errors++; $errorlist .= "- Les 2 PW que vous avez inscrit ne sont pas indentiques.<br>"; } 179 $realnewpass = md5($newpass1); 180 if ($errors == 0) { 181 $updatequery = doquery("UPDATE {{table}} SET password='".addslashes($realnewpass)."' WHERE username='".addslashes($username)."' LIMIT 1","users"); 182 $page='Votre PW a été changé avec succès.<br><br>Maintenant vous pouvez:<br><br><a href="login.php?do=login">» retourner à l\'accueil</a>'; 183 }else { 184 $page = 'Votre PW n\'a pas pu être changé, car les erreur(s) suivante(s) se sont produite(s):<br><br><span class="alerte">'.$errorlist.'</span><br><br>Maintenant vous pouvez:<br><br><a href="users.php?do=changepassword">» retourner et réessayer</a>'; 185 } 186 }else{ 187 $page = gettemplate("changepassword"); 188 } 189 190 display(parsetemplate($page, $controlrow), 'Changer de password',$advertising); 191 192 } 193 194 195 function sendpassemail($emailaddress, $password) { // Envois nouveau password. 196 197 $controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control"); 198 $controlrow = mysql_fetch_array($controlquery); 199 200 $email = "Bonjours,\n\nvous avez récement demandé un nouveau Password (PW) sur ".stripslashes($controlrow['gamename']).".\nComme convenu le voici: $password\n\nVous pouvez dès maintenant vous loger avec à cette adresse : $controlrow[gameurl].\n\nA bientot sur ".stripslashes($controlrow['gamename'])."!"; 201 202 $status = mymail($emailaddress, stripslashes($controlrow['gamename']).' : votre password', $email); 203 return $status; 204 205 } 206 207 208 function sendregmail($emailaddress, $verifycode) { // Envois e-mail de validation. 209 210 $controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control"); 211 $controlrow = mysql_fetch_array($controlquery); 212 213 $email ="Bonjours,\n\nvous vous êtes récement inscrit sur ".stripslashes($controlrow['gamename']).".\nPour valider votre compte rendez vous ici: $controlrow[gameurl]users.php?do=verify et entrez le code de validation suivant: $verifycode\n\nA bientot sur ".stripslashes($controlrow['gamename'])."!"; 214 215 $status = mymail($emailaddress, ''.stripslashes($controlrow['gamename']).' : votre inscription', $email); 216 return $status; 217 218 } 219 220 221 function mymail($to, $title, $body) { // Fonction d'envoie. 222 223 $controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control"); 224 $controlrow = mysql_fetch_array($controlquery); 225 226 $head = $controlrow['adminemail']; 227 $head .= 'MIME-version: 1.0\n'; 228 $head .= 'Content-type: text/plain; charset= iso-8859-1\n'; 229 230 return mail($to, $title, $body, $head); 231 232 } 233 234 235 ?>