Advertisement
Guest User

Untitled

a guest
Jan 15th, 2018
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.73 KB | None | 0 0
  1. <?php
  2. /* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)*/
  3. header('Content-type: text/html; charset=UTF-8');
  4.  
  5. /* Initialisation de la variable du message de réponse*/
  6. $message = null;
  7.  
  8. /* Récupération des variables issues du formulaire par la méthode post*/
  9. $pseudo = filter_input(INPUT_POST, 'pseudo');
  10. $pass = filter_input(INPUT_POST, 'pass');
  11.  
  12. /* Si le formulaire est envoyé */
  13. if (isset($pseudo,$pass))
  14. {
  15.  
  16. /* Teste que les valeurs ne sont pas vides ou composées uniquement d'espaces */
  17. $pseudo = trim($pseudo) != '' ? $pseudo : null;
  18. $pass = trim($pass) != '' ? $pass : null;
  19.  
  20.  
  21. /* Si $pseudo et $pass différents de null */
  22. if(isset($pseudo,$pass))
  23. {
  24. /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
  25. A MODIFIER avec vos valeurs */
  26. $hostname = "localhost";
  27. $database = "quizzy";
  28. $username = "root";
  29. $password = "";
  30.  
  31. /* Configuration des options de connexion */
  32.  
  33. /* Désactive l'éumlateur de requêtes préparées (hautement recommandé) */
  34. $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
  35.  
  36. /* Active le mode exception */
  37. $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  38.  
  39. /* Indique le charset */
  40. $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
  41.  
  42. /* Connexion */
  43. try
  44. {
  45. $connect = new PDO('mysql:host='.$hostname.';dbname='.$database, $username, $password, $pdo_options);
  46. }
  47. catch (PDOException $e)
  48. {
  49. exit('problème de connexion à la base');
  50. }
  51.  
  52.  
  53. /* Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire */
  54. $requete = "SELECT count(*) FROM membres WHERE pseudo = ?";
  55.  
  56. try
  57. {
  58. /* préparation de la requête*/
  59. $req_prep = $connect->prepare($requete);
  60.  
  61. /* Exécution de la requête en passant la position du marqueur et sa variable associée dans un tableau*/
  62. $req_prep->execute(array(0=>$pseudo));
  63.  
  64. /* Récupération du résultat */
  65. $resultat = $req_prep->fetchColumn();
  66.  
  67. if ($resultat == 0)
  68. /* Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer */
  69. {
  70. /* Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()*/
  71. $insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement) VALUES(:nom, :password, NOW())";
  72.  
  73. /* préparation de l'insertion */
  74. $insert_prep = $connect->prepare($insertion);
  75.  
  76. /* Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau*/
  77. $inser_exec = $insert_prep->execute(array(':nom'=>$pseudo,':password'=>$pass));
  78.  
  79. /* Si l'insertion s'est faite correctement...*/
  80. if ($inser_exec === true)
  81. {
  82. /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter. */
  83. if (!session_id()) session_start();
  84. $_SESSION['login'] = $pseudo;
  85.  
  86. /* A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.*/
  87. $message = 'Votre inscription est enregistrée,vous pouvez maintenant vous connécté avec vos identifiants.';
  88.  
  89. /*ou redirection vers une page en cas de succès ex : menu.php*/
  90. header("Location: Bienvenue.php");
  91. exit();
  92. }
  93. }
  94. else
  95. { /* Le pseudo est déjà utilisé */
  96. $message = 'Ce pseudo est déjà utilisé, changez-le.';
  97. }
  98. }
  99. catch (PDOException $e)
  100. {
  101. $message = 'Problème dans la requête d\'insertion';
  102. }
  103. }
  104. else
  105. { /* Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli*/
  106. $message = 'Les champs Pseudo et Mot de passe doivent être remplis.';
  107. }
  108. }
  109. ?>
  110. <!doctype html>
  111. <html lang="fr">
  112. <head>
  113. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  114. <title>Formulaire d'inscription - tutoriel PHP France</title>
  115.  
  116. <style type="text/css">
  117. <!--
  118. body, p, h1,form, input, fieldset
  119. {
  120. margin:0;
  121. padding:0;
  122. }
  123.  
  124. body
  125. {
  126. background-color: #F4F4F4;
  127. }
  128.  
  129. #inscription
  130. {
  131. width:400px;
  132. background:#FFFFFF;
  133. margin:20px auto;
  134. font-family: Arial, Helvetica, sans-serif;
  135. font-size:1em;
  136. border:1px solid #ccc;
  137. border-radius:10px;
  138. }
  139.  
  140. #inscription fieldset
  141. {
  142. text-align:center;
  143. font-size:1.2em;
  144. background:#333333;
  145. padding-bottom:5px;
  146. margin-bottom:15px;
  147. color:#FFFFFF;
  148. letter-spacing:0.05em;
  149. border-top-left-radius:10px;
  150. border-top-right-radius:10px;
  151. }
  152.  
  153. #inscription p
  154. {
  155. padding-top:15px;
  156. padding-right:50px;
  157. text-align:right;
  158. }
  159.  
  160. #inscription input
  161. {
  162. margin-left:30px;
  163. width:150px;
  164. }
  165.  
  166. #inscription #valider
  167. {
  168. width:155px;
  169. font-size:0.8em;
  170. }
  171.  
  172. #inscription #message
  173. {
  174. height:27px;
  175. color:#F00;
  176. font-size:0.8em;
  177. font-weight:bold;
  178. text-align:center;
  179. padding:10px 0 0 0;
  180. }
  181. -->
  182. </style>
  183. </head>
  184. <body>
  185. <div id = "inscription">
  186. <form action = "#" method = "post">
  187. <fieldset>Inscription</fieldset>
  188. <p><label for = "pseudo">Pseudo : </label><input type = "text" name = "pseudo" id = "pseudo" /></p>
  189. <p><label for = "pass">Mot de passe : </label><input type = "password" name = "pass" id = "pass" /></p>
  190. <p><input type = "submit" value = "Envoyer" id = "valider" /></p>
  191. </form>
  192. <p id = "message"><?= $message?:'' ?></p>
  193. </div>
  194. </body>
  195. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement