From c135008b30e416a8c0c41e678bb48e9577ca4fc7 Mon Sep 17 00:00:00 2001 From: Nassim YAICI <nassim.yaici@ensiie.fr> Date: Thu, 12 May 2016 00:36:19 +0200 Subject: [PATCH] Formulaire+Edition --- accueil.php | 4 +- bootstrap/css/mystyle.css | 6 ++ class/edit.class.php | 90 +++++++++++++++++++++++++ class/inscription.class.php | 4 +- class/newtopics.class.php | 2 +- edit.php | 131 ++++++++++++++++++++++++++++++++++++ login.php | 9 +-- newtopics.php | 12 ++-- register.php | 21 +++--- script.js | 77 +++++++++++++++++++++ topiclist.php | 6 +- 11 files changed, 336 insertions(+), 26 deletions(-) create mode 100644 class/edit.class.php create mode 100644 edit.php create mode 100644 script.js diff --git a/accueil.php b/accueil.php index d339862..230b758 100644 --- a/accueil.php +++ b/accueil.php @@ -12,8 +12,6 @@ $bdd=bdd(); <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="./bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="./bootstrap/css/mystyle.css"> - <script src="./bootstrap/js/jquery.min.js"></script> - <script src="./bootstrap/js/bootstrap.min.js"></script> </head> <body> <div class="container-fluid"> @@ -26,8 +24,8 @@ $bdd=bdd(); if (isset($_SESSION['pseudo'])) { $pseudo=$_SESSION['pseudo']; ?> - <button type="button" class="btn btn-success btn-right" onclick="location.href='./edit.php'" >Edit</button> <button type="button" class="btn btn-success btn-right" onclick="location.href='./deconnexion.php'">Deconnexion</button> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./edit.php'" >Edit</button> <button type="button" class="btn btn-success btn-right" onclick="location.href='./newtopics.php'" >Nouveau sujet</button> <label for="hello"><?php echo "Vous êtes connectés entant que : $pseudo";?></label> <?php diff --git a/bootstrap/css/mystyle.css b/bootstrap/css/mystyle.css index b2a920f..8c4e203 100644 --- a/bootstrap/css/mystyle.css +++ b/bootstrap/css/mystyle.css @@ -31,3 +31,9 @@ and open the template in the editor. margin-right:20px; float: right; } +input[aria-invalid="true"], +textarea[aria-invalid="true"] +{ + border:1px solid #f00; + box-shadow:0 0 4px 0 #f00; +} \ No newline at end of file diff --git a/class/edit.class.php b/class/edit.class.php new file mode 100644 index 0000000..9a7f9bc --- /dev/null +++ b/class/edit.class.php @@ -0,0 +1,90 @@ +<?php +require_once("/../fonction.php"); + +class edit +{ + private $mdp; + private $mdpC; + private $mail; + private $bdd; + + public function __construct($mdp, $mdpC, $mail) + { + $mdp=pg_escape_string(htmlspecialchars($mdp)); + $mdpC=pg_escape_string(htmlspecialchars($mdpC)); + $mail=pg_escape_string(htmlspecialchars($mail)); + + $this->mdp = $mdp; + $this->mdpC = $mdpC; + $this->mail = $mail; + $this->bdd = bdd(); + } + + public function verify() + { + if (!empty($this->mdp)) + { + if(strlen($this->mdp) >= 6 AND strlen($this->mdp) <= 30) + { + if($this->mdp == $this->mdpC) + { + if(!empty($this->mail)) + { + $syntax = "#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#"; + if(preg_match($syntax, $this->mail)) + { + return "ok"; + } + else + { + return "format de l'adresse mail incorecte !"; + } + } + return "ok"; + } + else + { + return "les mots de passe ne correspondent pas !"; + } + } + else + { + return "format du mot de passe incorecte !"; + } + } + else + { + $syntax = "#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#"; + if(preg_match($syntax, $this->mail)) + { + return "ok"; + } + else + { + return "format de l'adresse mail incorecte !"; + } + } + } + + public function update() + { + $pseudo=$_SESSION['pseudo']; + $requete=pg_query("SELECT * FROM users WHERE pseudo = '$pseudo'"); + $result=pg_fetch_array($requete); + if (empty($this->mdp)) { + $requete=pg_query("UPDATE users SET adr_mail='$this->mail'"); + } + else + { + if (empty($this->mail)) { + $this->mdp = password_hash($this->mdp, PASSWORD_BCRYPT); + $requete=pg_query("UPDATE users SET adr_mail='$this->mail'"); + } + $requete2=pg_query("UPDATE users SET mdp='$this->mdp'"); + } + return 1; + } + +} + +?> \ No newline at end of file diff --git a/class/inscription.class.php b/class/inscription.class.php index e977c74..ba40fc5 100644 --- a/class/inscription.class.php +++ b/class/inscription.class.php @@ -11,8 +11,8 @@ class inscription public function __construct($pseudo, $mail, $mdp, $mdpC) { - $pseudo = htmlspecialchars($pseudo); - $mail = htmlspecialchars($mail); + $pseudo = pg_escape_string(htmlspecialchars($pseudo)); + $mail = pg_escape_string(htmlspecialchars($mail)); $this->pseudo = $pseudo; $this->mail = $mail; diff --git a/class/newtopics.class.php b/class/newtopics.class.php index a77d1dc..f0a1c7a 100644 --- a/class/newtopics.class.php +++ b/class/newtopics.class.php @@ -29,7 +29,7 @@ class newtopics } else { - return "Le nom du sujet doit contenir 5 carctéres minimum et 40 maximum" + return "Le nom du sujet doit contenir 5 carctéres minimum et 40 maximum"; } } diff --git a/edit.php b/edit.php new file mode 100644 index 0000000..37652d1 --- /dev/null +++ b/edit.php @@ -0,0 +1,131 @@ +<?php +session_start(); +require_once"fonction.php"; +require_once"./class/edit.class.php"; +$bdd=bdd(); + +if (isset($_POST['mdp'], $_POST['mdpC']) OR isset($_POST['mail'])) { + $mdp=$_POST['mdp']; + $mdpC=$_POST['mdpC']; + $mail = $_POST['mail']; + $edit = new edit($mdp, $mdpC, $mail); + $verif = $edit->verify(); + + if ($verif =="ok") { + $insert = $edit->update(); + header("Location: ./login.php"); + } + else + { + $erreur = $verif; + } +} + +?> + +<!DOCTYPE html> +<html lang="en"> +<head> + <title>Com-Ensiie</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="./bootstrap/css/bootstrap.css"> + <link rel="stylesheet" href="./bootstrap/css/mystyle.css"> +</head> +<body> + <div class="container-fluid"> + <div class="jumbotron"> + <h1><span style="color: white">Com-Ensiie</span></h1> +<?php +if(isset($_SESSION['pseudo'])){ + $pseudo=$_SESSION['pseudo']; +?> + </div> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./deconnexion.php'" >Deconnexion</button> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./edit.php'" >Edit</button> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./newtopics.php'" >Nouveau sujet</button> + <label for="hello"><?php echo "Vous êtes connectés entant que : $pseudo";?></label> + </div> +<?php +} +else +{ +?> + </div> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./login.php'" >Log In</button> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./register.php'">Register</button> + </div> +<?php +} +?> + <nav class="navbar navbar-inverse"> + <div class="navbar-header"> + <a class="navbar-brand" href="./accueil.php">Com-Ensiie</a> + </div> + <ul class="nav navbar-nav"> + <li class="dropdown active"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Commercial <span class="caret"></span></a> + <ul class="dropdown-menu"> + <?php + $dn2 = pg_query("SELECT * FROM keys ORDER BY name asc"); + while($reponse=pg_fetch_assoc($dn2)) + { + ?> + <li><a id="cat" href="./topiclist.php?category=<?php echo $reponse['name']; ?>"><?php echo $reponse['name']; ?></a></li> + + <?php + } + ?> + </ul> + </li> + </ul> + </nav> +</div> + + + +<div class="container-fluid text-center"> + <div class="row content"> + <div class="col-sm-2 sidenav"> + + </div> + <div class="col-lg-8 text-left"> + <h1>Modify profil</h1> + <form class="form-horizontal" role="form" method="post" action="./edit.php"> + <div class="row edir"> + <label class="col-sm-2 text-right">Mot de passe</label> + <div class="col-xs-4"> + <input class="form-control" id="focusedInput" type="password" name="mdp" placeholder ="Mot de passe..."> + </div> + </div> + <div class="row edir"> + <label class="col-sm-2 text-right">Mot de passe</label> + <div class="col-xs-4"> + <input class="form-control" id="focusedInput" type="password" name="mdpC" placeholder ="Confirmation mot de passe..."> + </div> + </div> + <div class="row edit"> + <label class="col-sm-2 text-right ">Nouveau mail</label> + <div class="col-xs-4"> + <input type="mail" name="mail" class="form-control" placeholder="Nouvelle adresse mail..."> + </div> + </div> + <div class="row edit"> + <div class="col-sm-offset-2 col-xs-4"> + <button id="submit" class="btn btn-primary edit center-block">Edit</button> + <?php + if (isset($erreur)) { + echo $erreur; + } + ?> + </div> + </div> + </form> + </div> + + + </div> +</div> + <div class="footer"></div> +</div> +</body> +</html> diff --git a/login.php b/login.php index 3413ece..90ff96e 100644 --- a/login.php +++ b/login.php @@ -32,8 +32,7 @@ if (isset($_POST['pseudo']) AND isset($_POST['mdp'])) <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="./bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="./bootstrap/css/mystyle.css"> - <script src="./bootstrap/js/jquery.min.js"></script> - <script src="./bootstrap/js/bootstrap.min.js"></script> + <script src="./script.js"></script> </head> <body> <div class="container-fluid"> @@ -90,14 +89,16 @@ if (isset($_POST['pseudo']) AND isset($_POST['mdp'])) <label for="username" class="col-sm-2 control-label" >Pseudo</label> <div class="col-xs-4"> <input type="text" class="form-control" name="pseudo" - placeholder="Votre pseudo..." required> + placeholder="Votre pseudo..." required + aria-required="true" pattern="^([- \w\d\u00c0-\u024f]+)$" spellcheck="false" size="20"> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">Mot de passe</label> <div class="col-xs-4"> <input type="password" class="form-control" name="mdp" - placeholder="Votre mot de passe..." required> + placeholder="Votre mot de passe..." required + aria-required="true" pattern="^([- \w\d\u00c0-\u024f]+)$" spellcheck="false"> </div> </div> <div class="form-group"> diff --git a/newtopics.php b/newtopics.php index f1a817c..68d3607 100644 --- a/newtopics.php +++ b/newtopics.php @@ -4,7 +4,7 @@ require_once"fonction.php"; require_once"./class/newtopics.class.php"; $bdd=bdd(); -if (isset($_POST['name'], $_POST['content']) { +if (isset($_POST['name'], $_POST['content'])) { $name=$_POST['name']; $content = $_POST['content']; $newtop = new newtopics($name, $content); @@ -29,8 +29,7 @@ if (isset($_POST['name'], $_POST['content']) { <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="./bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="./bootstrap/css/mystyle.css"> - <script src="./bootstrap/js/jquery.min.js"></script> - <script src="./bootstrap/js/bootstrap.min.js"></script> + <script src="./script.js"></script> </head> <body> <div class="container-fluid"> @@ -43,6 +42,7 @@ if(isset($_SESSION['pseudo'])){ </div> <button type="button" class="btn btn-success btn-right" onclick="location.href='./deconnexion.php'" >Deconnexion</button> <button type="button" class="btn btn-success btn-right" onclick="location.href='./edit.php'" >Edit</button> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./newtopics.php'" >Nouveau sujet</button> <label for="hello"><?php echo "Vous êtes connectés entant que : $pseudo";?></label> </div> <?php @@ -113,13 +113,15 @@ else <div class="row topic-create"> <label class="col-sm-2 text-right">Titre</label> <div class="col-sm-10"> - <input class="form-control" id="focusedInput" type="text" name="name" placeholder ="Le titre ..."required> + <input class="form-control" id="focusedInput" type="text" name="name" placeholder ="Le titre ..."required + aria-required="true" pattern="^([- \w\d\u00c0-\u024f]+)$" spellcheck="false" size="40"> </div> </div> <div class="row topic-create"> <label class="col-sm-2 text-right ">Déscription</label> <div class="col-sm-10"> - <textarea name="content" class="form-control" rows="5" placeholder="Le contenu ..."required></textarea> + <textarea name="content" class="form-control" rows="5" placeholder="Le contenu ..."required + aria-required="true" spellcheck="false"></textarea> </div> </div> <button id="submit" class="btn btn-primary topic-create center-block">Ajouter</button> diff --git a/register.php b/register.php index 2db0d0e..607acbb 100644 --- a/register.php +++ b/register.php @@ -31,8 +31,7 @@ if (isset($_POST['pseudo'], $_POST['mdp'], $_POST['mdpC'], $_POST['mail'])) <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="./bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="./bootstrap/css/mystyle.css"> - <script src="./bootstrap/js/jquery.min.js"></script> - <script src="./bootstrap/js/bootstrap.min.js"></script> + <script src="./script.js"></script> </head> <body> <div class="container-fluid"> @@ -81,21 +80,25 @@ if (isset($_POST['pseudo'], $_POST['mdp'], $_POST['mdpC'], $_POST['mail'])) <label for="usernamelabel" class="col-sm-2 control-label">Pseudo</label> <div class="col-xs-4"> <input type="text" class="form-control" name="pseudo" - placeholder="Entre 5 et 20 caractéres"> + placeholder="Entre 5 et 20 caractéres" required + aria-required="true" pattern="^([- \w\d\u00c0-\u024f]+)$" spellcheck="false" size="20" + > </div> </div> <div class="form-group"> <label for="passwordlabel" class="col-sm-2 control-label">Mot de passe</label> <div class="col-xs-4"> - <input type="password" class="form-control" name="mdp" - placeholder="Minimum 6 caractéres"> + <input type="password" class="form-control" name="mdp" size="30" + placeholder="Minimum 6 caractéres" required + aria-required="true" pattern="^([- \w\d\u00c0-\u024f]+)$" spellcheck="false"> </div> </div> <div class="form-group"> <label for="password_againlabel" class="col-sm-2 control-label">Mot de passe</label> <div class="col-xs-4"> - <input type="password" class="form-control" name="mdpC" - placeholder="Confirmation du mot de passe..."> + <input type="password" class="form-control" name="mdpC" size="30" + placeholder="Confirmation du mot de passe..." rquired + aria-required="true" pattern="^([- \w\d\u00c0-\u024f]+)$" spellcheck="false"> </div> </div> @@ -103,7 +106,9 @@ if (isset($_POST['pseudo'], $_POST['mdp'], $_POST['mdpC'], $_POST['mail'])) <label for="adrmaillabel" class="col-sm-2 control-label">Adresse mail</label> <div class="col-xs-4"> <input type="text" class="form-control" name="mail" - placeholder="Votre adresse mail..."> + placeholder="Votre adresse mail..." aria-required="true" + pattern="^(([-\w\d]+)(\.[-\w\d]+)*@([-\w\d]+)(\.[-\w\d]+)*(\.([a-zA-Z]{2,5}|[\d]{1,3})){1,2})$" + spellcheck="false" size="30" requierd> </div> </div> diff --git a/script.js b/script.js new file mode 100644 index 0000000..ec8327f --- /dev/null +++ b/script.js @@ -0,0 +1,77 @@ +function addEvent(node, type, callback) +{ + if(node.addEventListener) + { + node.addEventListener(type, function(e) + { + callback(e, e.target); + + }, false); + } + else if(node.attachEvent) + { + node.attachEvent('on' + type, function(e) + { + callback(e, e.srcElement); + }); + } +} + +function shouldBeValidated(field) +{ + return ( + !(field.getAttribute('readonly') || field.readonly) + && + !(field.getAttribute('disabled') || field.disabled) + && + (field.getAttribute('pattern') || field.getAttribute('required')) + ); +} + +function instantValidation(field) +{ + if(shouldBeValidated(field)) + { + var invalid = + ( + (field.getAttribute('required') && !field.value) + || + ( + field.getAttribute('pattern') + && + field.value + && + !new RegExp(field.getAttribute('pattern')).test(field.value) + ) + ); + + if(!invalid && field.getAttribute('aria-invalid')) + { + field.removeAttribute('aria-invalid'); + } + else if(invalid && !field.getAttribute('aria-invalid')) + { + field.setAttribute('aria-invalid', 'true'); + } + } +} + +addEvent(document, 'change', function(e, target) +{ + instantValidation(target); +}); + +var fields = [ + document.getElementsByTagName('input'), + document.getElementsByTagName('textarea') + ]; +for(var a = fields.length, i = 0; i < a; i ++) +{ + for(var b = fields[i].length, j = 0; j < b; j ++) + { + addEvent(fields[i][j], 'change', function(e, target) + { + instantValidation(target); + }); + } +} \ No newline at end of file diff --git a/topiclist.php b/topiclist.php index 2adf233..0b36546 100644 --- a/topiclist.php +++ b/topiclist.php @@ -2,6 +2,7 @@ session_start(); require_once"fonction.php"; $bdd = bdd(); + ?> <!DOCTYPE html> @@ -12,8 +13,7 @@ session_start(); <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="./bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="./bootstrap/css/mystyle.css"> - <script src="./bootstrap/js/jquery.min.js"></script> - <script src="./bootstrap/js/bootstrap.min.js"></script> + <script src="./script.js"></script> </head> <body> @@ -27,7 +27,7 @@ if(isset($_SESSION['pseudo'])){ ?> <button type="button" class="btn btn-success btn-right" onclick="location.href='./deconnexion.php'" >Deconnexion</button> <button type="button" class="btn btn-success btn-right" onclick="location.href='./edit.php'" >Edit</button> - <button type="button" class="btn btn-success btn-right" onclick="location.href='./newtopic.php'" >Nouveau sujet</button> + <button type="button" class="btn btn-success btn-right" onclick="location.href='./newtopics.php'" >Nouveau sujet</button> <label for="hello"><?php echo "Vous êtes connectés entant que : $pseudo";?></label> <?php -- GitLab