From f99073eedd145c5ebc16c04a26f94bc6d029fc40 Mon Sep 17 00:00:00 2001 From: adri Date: Wed, 2 Jan 2019 13:23:07 +0100 Subject: [PATCH] add and search record done --- function.php | 17 +++++---- index.php | 26 ++++++++++++- post.php | 52 +++++++++++++++++++++++-- script.js | 105 ++++++++++++++++++++++++++++++++++++++------------- style.css | 2 +- 5 files changed, 164 insertions(+), 38 deletions(-) diff --git a/function.php b/function.php index 97e1ad7..59367dd 100644 --- a/function.php +++ b/function.php @@ -1,19 +1,22 @@ getMessage()); -} + //SELECT * FROM `projetphp` WHERE `login` = 'aaazzze' function userExist($login){ + try { + $config = include('config.php'); + $bdd = new PDO('mysql:host='.$config['host'].';dbname='.$config['dbName'].';charset=utf8', $config['username'], $config['pw']); + } catch (Exception $e) { + die('Erreur : '.$e->getMessage()); + } $req = $bdd->prepare('SELECT * FROM `projetphp` WHERE `login` = :login'); - $req->execute(array('login' => htmlspecialchars($_POST["userToDel"]))); + $req->execute(array('login' => htmlspecialchars($login))); if($req->rowCount() != 0) { + $req->closeCursor(); return true; } else { + $req->closeCursor(); return false; } } diff --git a/index.php b/index.php index da30177..f0dd0de 100755 --- a/index.php +++ b/index.php @@ -25,7 +25,7 @@ $reponse = $bdd->query('SELECT * FROM projetphp'); - + @@ -62,6 +62,7 @@ while ($data = $reponse->fetch()) { closeCursor(); ?> @@ -69,5 +70,28 @@ while ($data = $reponse->fetch()) {
+ diff --git a/post.php b/post.php index 5cff62e..4a506a4 100644 --- a/post.php +++ b/post.php @@ -1,4 +1,8 @@ ()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'; +$pwPatern = '/^[a-z]{8,16}$/'; +$loginPatern = '/^[a-z]{8,16}$/'; $ret["return"] = false; $ret["pw"] = null; try { @@ -12,13 +16,53 @@ try { if (isset($_POST["userToDel"])) { $req = $bdd->prepare('DELETE FROM `projetphp` WHERE `projetphp`.`login`=:login'); $req->execute(array( 'login' => htmlspecialchars($_POST["userToDel"]))); + $req->closeCursor(); } +elseif (isset($_POST["userExist"])) { + if(userExist($_POST["userExist"])) + { + $ret["return"] = "userExist"; + } + else + { + $ret["return"] = "userNotExist"; + } +} + +//INSERT INTO `projetphp` (`login`, `date_naissance`, `e_mail`, `mot_de_passe`, `security_level`) VALUES ('blipblop', '2019-01-09', 'aaaaa@aaa.cc', MD5('sdfqsdfsfd'), '5'); +elseif (isset($_POST["newUser"],$_POST["datene"], $_POST["email"], $_POST["pw"], $_POST["sl"]) && $_POST["newUser"] == "true") { + if(preg_match($loginPatern, $_POST["login"]) && preg_match($emailPatern, $_POST[email]) && preg_match($pwPatern, $_POST["pw"])) + { + if(userExist($_POST["login"])) + { + $ret["return"] = "userExist"; + } + else + { + $ret["pw"] = md5(htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8')); + $req = $bdd->prepare('INSERT INTO `projetphp` (`login`, `date_naissance`, `e_mail`, `mot_de_passe`, `security_level`) VALUES (:login, :datene, :email, :pw, :slvl)'); + $req->execute(array( +'login' => htmlspecialchars($_POST["login"], ENT_QUOTES, 'UTF-8'), +'datene' => htmlspecialchars($_POST["datene"], ENT_QUOTES, 'UTF-8'), +'email' => (htmlspecialchars($_POST["email"], ENT_QUOTES, 'UTF-8')), +'pw' => $ret["pw"], +'slvl' => htmlspecialchars($_POST["slvl"], ENT_QUOTES, 'UTF-8'), +)); + $req->closeCursor(); + $ret["return"] = true; + } + } + else + { + $ret["return"] = "patern mismatch !".preg_match($loginPatern, $_POST["login"]) ."_". preg_match($emailPatern, $_POST[email]) ."_". preg_match($pwPatern, $_POST["pw"]); + } +} //UPDATE `projetphp` SET `security_level` = '6' WHERE `projetphp`.`login` = 'aaazzze'; -if (isset($_POST["updatePW"], $_POST["datene"], $_POST["email"], $_POST["pw"], $_POST["sl"], $_POST["login"])) { - if (preg_match('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/', $_POST["email"])) { - if (htmlspecialchars($_POST["updatePW"], ENT_QUOTES, 'UTF-8') == "true" && preg_match('/^[a-z]{8,16}$/', $_POST["pw"])) { +else if (isset($_POST["newUser"], $_POST["updatePW"], $_POST["datene"], $_POST["email"], $_POST["pw"], $_POST["sl"], $_POST["login"]) && $_POST["newUser"] == "false") { + if (preg_match($emailPatern, $_POST["email"])) { + if (htmlspecialchars($_POST["updatePW"], ENT_QUOTES, 'UTF-8') == "true" && preg_match($pwPatern, $_POST["pw"])) { $req = $bdd->prepare('UPDATE `projetphp` SET `date_naissance` = :datene, `e_mail` = :email, `mot_de_passe` = :pw, `security_level` = :sl WHERE `projetphp`.`login` = :login'); $req->execute(array( 'datene' => htmlspecialchars($_POST["datene"], ENT_QUOTES, 'UTF-8'), @@ -27,6 +71,7 @@ if (isset($_POST["updatePW"], $_POST["datene"], $_POST["email"], $_POST["pw"], $ 'sl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'), 'login' => htmlspecialchars($_POST["login"], ENT_QUOTES, 'UTF-8'), )); +$req->closeCursor(); $ret["return"] = true; $ret["pw"] = md5(htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8')); } elseif (htmlspecialchars($_POST["updatePW"], ENT_QUOTES, 'UTF-8') == "false") { @@ -37,6 +82,7 @@ if (isset($_POST["updatePW"], $_POST["datene"], $_POST["email"], $_POST["pw"], $ 'sl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'), 'login' => htmlspecialchars($_POST["login"], ENT_QUOTES, 'UTF-8'), )); +$req->closeCursor(); $ret["return"] = true; $ret["pw"] = htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8'); } else ; diff --git a/script.js b/script.js index 104a583..e591d5a 100644 --- a/script.js +++ b/script.js @@ -1,6 +1,8 @@ htmlAddUser = '\ \ -\ + \ +
L\'utilisateur existe déja !
\ +
le login comporte entre 8 et 16 caractères parmi a..z
\ \ \ \ @@ -52,6 +54,32 @@ $(function() { $('div', $(this).parent()).css("display", "block"); } }); + $("#allRecord").on("keyup change", ".login :input", function(e) { + login = ltrim($(this).val()); + input = $(this); + td = $(this).parent(); + if (loginPatern.test(login)) { + $(this).css("background-color", ""); + $('.ruleExcept', $(this).parent()).css("display", "none"); + $.post("post.php", {userExist: login}, function(data) { + try { + if (data.return == "userExist") { + $('.userExist', td).css("display", "block"); + input.css("background-color", "red"); + } else if(data.return == "userNotExist") + { + $('.userExist', td).css("display", "none"); + input.css("background-color", ""); + } + } catch (e) { + swal("Oops", "Something went wrong!
" + e, "error"); + } + }, "json"); + } else { + $(this).css("background-color", "red"); + $('.ruleExcept', td).css("display", "block"); + } + }); /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~TR TO DEL~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ @@ -141,34 +169,20 @@ $(function() { } }); - /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ - /*~~~~~~~~~~~~~~~~CONFIRM EDIT~~~~~~~~~~~~~~~~*/ - /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ - $("#allRecord").on("click", ".confirmEditUser", function() { + /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + /*~~~~~~~~~~~~~~~~CONFIRM EDIT/NewUser~~~~~~~~~~~~~~~~*/ + /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + $("#allRecord").on("click", ".confirmEditUser, .confirmNewUser", function() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~CALL BACK DE LA VERIF DE MOT DE PASSE~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ - function callBackVerif(data) { - var dataToSend = new Object(); //Objet contenant les données à envoyé - dataToSend["updatePW"] = (data === true ? false : true); //Si maj du mdp data === false - if ($(".pw input", tr).val() === data || data === true) //Verif du mot de passe si nécesaire + function callBackVerifPW(data) { + function postData(dataToSend) { - for (i = 0; i < tds.length - 1; i++) //Analyse de chaque td - { - j = $(tds[i]); - className = j.attr('class'); - if (className == "pw" && data === true) - value = $('input,select', j).data("oldpw"); - else if (className == "login") - value = ltrim(j.html()); - else - value = $('input,select', j).val(); - dataToSend[className] = value; - } $.post("post.php", dataToSend, function(data) { try { if (data.return == true) { - for (i = 1; i < tds.length - 1; i++) //On change les input en pure html + for (i = (dataToSend["newUser"] ?0:1); i < tds.length - 1; i++) //On change les input en pure html { j = $(tds[i]); className = j.attr('class'); @@ -182,14 +196,53 @@ $(function() { $(that).toggleClass('fa-check fa-edit'); $(that).toggleClass('confirmEditUser editUser'); } else - swal(data); + swal("Oops", "Something went wrong!
" + JSON.stringify(data), "error"); } catch (e) { swal("Oops", "Something went wrong!
" + e, "error"); } console.log(data.return) }, "json"); + } + var dataToSend = new Object(); //Objet contenant les données à envoyé + dataToSend["newUser"] = tr.is(".newRecord") + dataToSend["updatePW"] = (data === true ? false : true); //Si maj du mdp data === false + if ($(".pw input", tr).val() === data || data === true && !dataToSend["newUser"]) //Verif du mot de passe si nécesaire + { + + for (i = 0; i < tds.length - 1; i++) //Analyse de chaque td + { + j = $(tds[i]); + className = j.attr('class'); + if (className == "pw" && data === true) + value = $('input,select', j).data("oldpw"); + else if (className == "login" && !dataToSend["newUser"]) + value = ltrim(j.html()); + else + value = $('input,select', j).val(); + dataToSend[className] = value; + } + if(dataToSend["newUser"]) + $.post("post.php", {userExist: dataToSend["login"]}, function(data) { + try { + if (data.return == "userExist") { + $('.userExist', tr).css("display", "block"); + $(".login input", tr).css("background-color", "red"); + swal("Oops", "User "+dataToSend["login"]+" already exist !", "error"); + return false; + } else if(data.return == "userNotExist") + { + $('.userExist', tr).css("display", "none"); + $(".login input", tr).css("background-color", ""); + postData(dataToSend); + } + } catch (e) { + swal("Oops", "Something went wrong!
" + e, "error"); + } + }, "json"); + else + postData(dataToSend); } else { - swal("Oops", "Password don't match !", "error"); + swal("Oops", (dataToSend["newUser"]?"New user need password !":"Password don't match !"), "error"); } } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ @@ -199,7 +252,7 @@ $(function() { that = this; if (mailPatern.test($(".email input", tr).val()) && (passwordPatern.test($(".pw input", tr).val()) || $(".pw input", tr).val() == "")) if ($(".pw input", tr).val() === "") { - callBackVerif(true); + callBackVerifPW(true); } else { swal({ @@ -212,7 +265,7 @@ $(function() { type: "password", }, }, - }).then(callBackVerif); + }).then(callBackVerifPW); } else swal("Oops", "Input don't respect rules !", "error"); }); diff --git a/style.css b/style.css index 79245fb..fb4554c 100644 --- a/style.css +++ b/style.css @@ -2,7 +2,7 @@ { cursor: pointer; } -.pw div{ +.pw div, .login div{ display:none; -moz-border-radius:6px;