signup.php (5782B)
1 <?php 2 session_start(); 3 require_once("ressources/strings.inc"); 4 require_once("ressources/locations.inc"); 5 6 $SQL_DBNAME = (dirname(__FILE__) . "/db"); 7 if (!$db = new SQlite3($SQL_DBNAME)) 8 die($strings['err_signup_dbopen']); 9 10 $location = get_location(); 11 12 $newpage = true; 13 $msg = array(); 14 15 if(isset($_POST['signupemail'])){ 16 $newpage = false; 17 $signupemail = $_POST['signupemail']; 18 // Regexp pour les adresses mail (incomplet, mais suffisant pour la plupart des adresses). 19 // http://en.wikipedia.org/wiki/Email_address 20 // N'implémente pas les "quotes" dans la partie locale (avant le @). 21 $allowed_local = "[-a-zA-Z0-9!#\$%&'*+/^=?_`{|}~]"; /* Je ne sais pas trop si l'espace est autorisée. */ 22 $pattern_local = "$allowed_local(\\.?$allowed_local)*"; 23 $pattern_hostname_label = '[a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])?'; 24 $pattern_hostname = "$pattern_hostname_label(\\.$pattern_hostname_label)*"; 25 $pattern_ip = "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])"; 26 $pattern_host = "($pattern_hostname|\\[$pattern_ip\\])"; 27 // Note : j'ai utilisé ";" comme délimiteur de regexp car il y a un slash dans $allowed_local, et je ne sais pas comment l'échapper là 28 $pattern = ";^$pattern_local@$pattern_host\$;"; 29 30 if(trim($signupemail) == ""){ 31 $msg[] = $strings['err_signup_fill_mail']; 32 } 33 else if (!preg_match($pattern, $signupemail)){ 34 // TODO : ce message est erroné. 35 $msg[] = $strings['err_signup_invalid_mail']; 36 } 37 else if ($db->querySingle("SELECT mail FROM user WHERE mail='$signupemail'") != null){ 38 $msg[] = $strings['err_signup_existing_mail']; 39 } 40 } 41 42 if(isset($_POST['signupid'])){ 43 $newpage = false; 44 $signupid = $_POST['signupid']; 45 $pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*/"; 46 if(trim($signupid) == ""){ 47 $msg[] = $strings['err_signup_fill_login']; 48 } 49 else if (!preg_match($pattern, $signupid)){ 50 $msg[] = $strings['err_signup_invalid_login']; 51 $signupid = $_POST['signupid']; 52 } 53 else if ($db->querySingle("SELECT login FROM user WHERE login='$signupid'") != null){ 54 $msg[] = $strings['err_signup_existing_login']; 55 } 56 } 57 58 if(isset($_POST['signuppswd1'])){ 59 $newpage = false; 60 $signuppswd1 = $_POST['signuppswd1']; 61 if(trim($signuppswd1) == ""){ 62 $msg[] = $strings['err_signup_fill_passwd1']; 63 } 64 else if(strlen($signuppswd1) < 5){ 65 $msg[] = $strings['err_signup_invalid_passwd1']; 66 } 67 } 68 69 if(isset($_POST['signuppswd2'])){ 70 $newpage = false; 71 $signuppswd2 = $_POST['signuppswd2']; 72 if(trim($signuppswd2) == ""){ 73 $msg[] = $strings['err_signup_fill_passwd2']; 74 } 75 if(strlen($signuppswd1 != $signuppswd2)){ 76 $msg[] = $strings['err_signup_passwords_dont_match']; 77 } 78 } 79 80 if(count($msg) == 0 && $newpage == false) 81 { 82 $ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score, ugroup, cgCount) VALUES ('" . SQLite3::escapeString($signupemail) 83 . "', '" . SQLite3::escapeString($signupid) 84 . "', '" . SQLite3::escapeString(md5($signuppswd1)) 85 . "', 0, 1, 0);")); 86 87 if($ok == true) { 88 $_SESSION['userId'] = $signupid; 89 return_to($location, "?show_msg=ok_signup_registered"); 90 } else { 91 $msg[] = $strings['err_signup_dbinsert']; 92 } 93 } 94 95 ?> 96 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 97 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 98 <head> 99 <title>PtiClic sous Android™ - Version Alpha - S'inscrire</title> 100 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 101 <link rel="stylesheet" href="ressources/simple.css" /> 102 </head> 103 <body> 104 <?php include("ressources/menu.inc"); ?> 105 <div class="content"> 106 <h2>Inscription</h2> 107 <?php include("ressources/showmsg.inc"); ?> 108 <h3>Vous n'avez pas encore de compte ?</h3> 109 <p> 110 Inscrivez-vous pour accéder l'ensemble du site et faire parti des alpha-testeurs ! <br /> 111 Vous pourrez ainsi télécharger l'application la tester et nous faire part de vos remarques afin de l'améliorer.<br /> 112 </p> 113 <p> 114 Pour vous inscrire maintenant veuillez remplir le formulaire qui suit : 115 </p> 116 <?php 117 if(count($msg) > 0) 118 { 119 echo '<div class="message warning">'. 120 '<p><b>Saisie invalide. Les erreurs sont les suivantes : </b></p>'. 121 '<ul>'; 122 foreach ($msg as $m) { 123 echo "<li>".htmlspecialchars($m)."</li>"; 124 } 125 echo '</ul>'; 126 echo '</div>'; 127 } 128 ?> 129 <form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>"> 130 <table> 131 <tr> 132 <td> 133 <label for="signupemail">Saisissez votre adresse mail :</label> 134 </td> 135 <td> 136 <input name="signupemail" type="text" 137 <?php 138 if(isset($_POST['signupemail'])){ 139 echo " value='$signupemail'"; 140 } 141 ?> 142 /> 143 </td> 144 </tr> 145 <tr> 146 <td> 147 <label for="signupid">Choisissez un identifiant : </label> 148 </td> 149 <td> 150 <input name="signupid" type="text" 151 <?php 152 if(isset($_POST['signupid'])){ 153 echo " value='$signupid'"; 154 } 155 ?> 156 /> 157 </td> 158 </tr> 159 <tr> 160 <td> 161 <label for="signuppswd1">Choisissez un mot de passe : </label> 162 </td> 163 <td> 164 <input name="signuppswd1" type="password" /> 165 </td> 166 </tr> 167 <tr> 168 <td> 169 <label for="signuppswd2">Resaisissez le mot de passe : </label> 170 </td> 171 <td> 172 <input name="signuppswd2" type="password" /> 173 </td> 174 </tr> 175 <tr> 176 <td> 177 178 </td> 179 <td> 180 <input type="submit" name="signupsubmit" value="Valider" /> 181 </td> 182 </tr> 183 </table> 184 </form> 185 <h3>Vous êtes déjà inscrit ? <a href="login.php?return=<?php echo $location; ?>">Connectez-vous !</a></h3> 186 </div> 187 <?php include("ressources/footer.inc"); ?> 188 </body> 189 </html>