This commit is contained in:
adri 2019-01-02 10:43:38 +01:00
parent a5d08063d8
commit a345a22565
3 changed files with 252 additions and 271 deletions

View File

@ -9,21 +9,23 @@ $reponse = $bdd->query('SELECT * FROM projetphp');
?>
<html>
<head>
<meta charset="utf-8">
<title></title>
<!-- somme features-->
<!-- somme features-->
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic">
<link rel="stylesheet" href="//cdn.rawgit.com/necolas/normalize.css/master/normalize.css">
<link rel="stylesheet" href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js" integrity="sha256-KsRuvuRtUVvobe66OFtOQfjP8WA2SzYsmm4VPfMnxms=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--My features-->
<!--My features-->
<link rel="stylesheet" href="style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
<script src="script.js?<?php echo date('l jS \of F Y h:i:s A'); ?>"></script>
</head>
<body>
<table id="allRecord">
<thead>
@ -38,29 +40,34 @@ $reponse = $bdd->query('SELECT * FROM projetphp');
</thead>
<tbody>
<?php
while($data = $reponse->fetch())
{
while ($data = $reponse->fetch()) {
?>
<tr class="record">
<td class="login">
<?= ($data["login"]) ?></td>
<?= ($data["login"]) ?>
</td>
<td class="datene">
<?= ($data["date_naissance"]) ?></td>
<?= ($data["date_naissance"]) ?>
</td>
<td class="email">
<?= ($data["e_mail"]) ?></td>
<?= ($data["e_mail"]) ?>
</td>
<td class="pw">
<?= ($data["mot_de_passe"]) ?></td>
<?= ($data["mot_de_passe"]) ?>
</td>
<td class="sl">
<?= ($data["security_level"]) ?></td>
<?= ($data["security_level"]) ?>
</td>
<td><i class="fas fa-edit click editUser"></i><i class="fas fa-trash-alt click delUser"></i></td>
</tr>
<?php
}
?>
}
?>
<tr rowspan="2">
<td colspan="6" style="text-align:center"><i class="fas fa-user-plus fa-4x click" ></i></td>
<td colspan="6" style="text-align:center"><i class="fas fa-user-plus fa-4x click"></i></td>
</tr>
</tbody>
</table>
</body>
</html>

View File

@ -9,43 +9,38 @@ try {
}
//DELETE FROM `projetphp` WHERE `projetphp`.`login` = \'caprout\'
if(isset($_POST["userToDel"]))
{
if (isset($_POST["userToDel"])) {
$req = $bdd->prepare('DELETE FROM `projetphp` WHERE `projetphp`.`login`=:login');
$req->execute(array( 'login' => htmlspecialchars($_POST["userToDel"])));
}
//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"]))
{
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"])) {
$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'),
'email' => htmlspecialchars($_POST["email"], ENT_QUOTES, 'UTF-8'),
'pw' => md5(htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8')),
'sl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'),
'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' => md5(htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8')),
'sl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'),
'login' => htmlspecialchars($_POST["login"], ENT_QUOTES, 'UTF-8'),
));
$ret["return"] = true;
$ret["pw"] = md5(htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8'));
}
else if(htmlspecialchars($_POST["updatePW"], ENT_QUOTES, 'UTF-8') == "false")
{
} elseif (htmlspecialchars($_POST["updatePW"], ENT_QUOTES, 'UTF-8') == "false") {
$req = $bdd->prepare('UPDATE `projetphp` SET `date_naissance` = :datene, `e_mail` = :email, `security_level` = :sl WHERE `projetphp`.`login` = :login');
$req->execute(array(
'datene' => htmlspecialchars($_POST["datene"], ENT_QUOTES, 'UTF-8'),
'email' => htmlspecialchars($_POST["email"], ENT_QUOTES, 'UTF-8'),
'sl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'),
'login' => htmlspecialchars($_POST["login"], ENT_QUOTES, 'UTF-8'),
));
'datene' => htmlspecialchars($_POST["datene"], ENT_QUOTES, 'UTF-8'),
'email' => htmlspecialchars($_POST["email"], ENT_QUOTES, 'UTF-8'),
'sl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'),
'login' => htmlspecialchars($_POST["login"], ENT_QUOTES, 'UTF-8'),
));
$ret["return"] = true;
$ret["pw"] = htmlspecialchars($_POST["pw"], ENT_QUOTES, 'UTF-8');
}
else;
else;
} else ;
} else ;
}
echo json_encode((object)$ret);
?>

193
script.js
View File

@ -1,144 +1,127 @@
htmlAddUser = '<tr class="newRecord">\
<td class="login">\
<input type="text" /></td>\
<td class="datene">\
<input type="date" /></td>\
<td class="email">\
<input type="text" /></td>\
<td class="pw">\
<input type="password" /></td>\
<td class="sl">\
<select>\
<option value="1">1</option>\
<option value="5">5</option>\
<option value="10">10</option>\
</select></td>\
<td><i class="fas fa-check click confirmNewUser"></i><i class="fas fa-trash-alt click delUser"></i></td>\
<td class="login">\
<input type="text" /></td>\
<td class="datene">\
<input type="date" /></td>\
<td class="email">\
<input type="text" /></td>\
<td class="pw">\
<input type="password" /></td>\
<td class="sl">\
<select>\
<option value="1">1</option>\
<option value="5">5</option>\
<option value="10">10</option>\
</select></td>\
<td><i class="fas fa-check click confirmNewUser"></i><i class="fas fa-trash-alt click delUser"></i></td>\
</tr>';
passwordPatern=/^[a-zA-Z0-9]{8,16}$/;
loginPatern=/^[a-z]{8,16}$/
mailPatern=/^(([^<>()\[\]\\.,;:\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,}))$/;//https://emailregex.com/
passwordPatern = /^[a-zA-Z0-9]{8,16}$/;
loginPatern = /^[a-z]{8,16}$/
mailPatern = /^(([^<>()\[\]\\.,;:\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,}))$/; //https://emailregex.com/
$(function() {
$("#allRecord").on("keyup", ".pw input", function(){
if(passwordPatern.test($(this).val()) || $(this).val() == "")
{
$("#allRecord").on("keyup", ".pw input", function() {
if (passwordPatern.test($(this).val()) || $(this).val() == "") {
$(this).css("background-color", "");
$('div', $(this).parent()).css("display", "none");
}
else
{
} else {
$(this).css("background-color", "red");
$('div', $(this).parent()).css("display", "block");
}
});
$("#allRecord").on("keyup", ".email input", function(){
if(mailPatern.test($(this).val()))
{
});
$("#allRecord").on("keyup", ".email input", function() {
if (mailPatern.test($(this).val())) {
$(this).css("background-color", "");
$('div', $(this).parent()).css("display", "none");
}
else
{
} else {
$(this).css("background-color", "red");
$('div', $(this).parent()).css("display", "block");
}
});
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~TR TO DEL~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
$("#allRecord").on("click", ".delUser", function() {
});
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~TR TO DEL~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
$("#allRecord").on("click", ".delUser", function() {
newUser = false;
tr = $(this).parent().parent();
var login = "";
var sl = "";
if(tr.find("i.editUser").length !== 0)
{
if (tr.find("i.editUser").length !== 0) {
sl = ltrim($('.sl', tr).html())
login = $('.login', tr).html();
}
else if(tr.find("i.confirmEditUser").length !== 0)
{
} else if (tr.find("i.confirmEditUser").length !== 0) {
sl = $('.sl select', tr).val();
login = $('.login', tr).html();
}
else
{
try{
login = "New user "+$('.login input', tr).val();
} else {
try {
login = "New user " + $('.login input', tr).val();
newUser = true;
}
catch(e)
{
swal("error : "+e);
return ;
} catch (e) {
swal("error : " + e);
return;
}
}
if(sl == "10")
{
swal( "Oops" , "You can't del user with sl 10" , "error" );
if (sl == "10") {
swal("Oops", "You can't del user with sl 10", "error");
return;
}
login = ltrim(login);
swal({
title: "Are you sure to del "+login+" ?",
title: "Are you sure to del " + login + " ?",
text: "Once deleted, you will not be able to recover this!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
})
.then((willDelete) => {
if (willDelete) {
if(!newUser)
$.post("post.php", {userToDel: login}, function(){
if (!newUser)
$.post("post.php", {
userToDel: login
}, function() {
tr.remove();
swal("Poof! "+login+" has been deleted!", {
swal("Poof! " + login + " has been deleted!", {
icon: "success",
});
});
else {
tr.remove();
swal("Poof! "+login+" has been deleted!", {
swal("Poof! " + login + " has been deleted!", {
icon: "success",
});
}
} else {
}
});
});
});
});
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~TR TO EDIT~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
$("#allRecord").on("click", ".editUser", function() {
$(this).toggleClass('fa-edit fa-check');
$(this).toggleClass('editUser confirmEditUser');
for(i=1; i<$("td", $(this).parent().parent()).length-1;i++)
{
j= $($("td", $(this).parent().parent())[i]);
for (i = 1; i < $("td", $(this).parent().parent()).length - 1; i++) {
j = $($("td", $(this).parent().parent())[i]);
className = j.attr('class');
if(className == "sl")
{
if (className == "sl") {
val = ltrim(j.html());
j.html('<select>\
<option value="1" '+(val=="1"?'selected':'')+'>1</option>\
<option value="5" '+(val=="5"?'selected':'')+'>5</option>\
<option value="10" '+(val=="10"?'selected':'')+'>10</option>\
</select>')
}
else
{
<option value="1" ' + (val == "1" ? 'selected' : '') + '>1</option>\
<option value="5" ' + (val == "5" ? 'selected' : '') + '>5</option>\
<option value="10" ' + (val == "10" ? 'selected' : '') + '>10</option>\
</select>')
} else {
inputOptions = '';
if(className=="pw")
inputOptions += 'type="password" data-oldpw="'+ltrim(j.html())+'" ';
if (className == "pw")
inputOptions += 'type="password" data-oldpw="' + ltrim(j.html()) + '" ';
else if (j.attr('class') == "datene")
inputOptions += 'type="date" '
j.html('<input '+inputOptions+' value="'+(j.attr('class')=="pw"?'':ltrim(j.html()))+'" />');
if(className=="pw")
{
j.html('<input ' + inputOptions + ' value="' + (j.attr('class') == "pw" ? '' : ltrim(j.html())) + '" />');
if (className == "pw") {
j.append("<div>le mot de passe comporte entre 8 et 16 caractères parmi a..z A..Z 0..9</div>")
}
}
@ -152,32 +135,31 @@ $("#allRecord").on("click", ".delUser", function() {
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~CALL BACK DE LA VERIF DE MOT DE PASSE~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function callBackVerif(data){
function callBackVerif(data) {
var dataToSend = new Object(); //Objet contenant les données à envoyé
dataToSend["updatePW"] = (data===true?false:true);
if($(".pw input", tr).val() === data || data === true) //Verif du mot de passe si nécesaire
dataToSend["updatePW"] = (data === true ? false : true);
if ($(".pw input", tr).val() === data || data === true) //Verif du mot de passe si nécesaire
{
for(i=0; i<tds.length-1;i++) //Analyse de chaque td
for (i = 0; i < tds.length - 1; i++) //Analyse de chaque td
{
j= $(tds[i]);
j = $(tds[i]);
className = j.attr('class');
if(className == "pw" && data === true)
if (className == "pw" && data === true)
value = $('input,select', j).data("oldpw");
else if(className=="login")
else if (className == "login")
value = ltrim(j.html());
else
value = $('input,select', j).val();
dataToSend[className] = value;
}
$.post("post.php", dataToSend, function(data){
$.post("post.php", dataToSend, function(data) {
try {
if(data.return == true)
if (data.return == true) {
for (i = 1; i < tds.length - 1; i++) //On change les input en pure html
{
for(i=1; i<tds.length-1;i++) //On change les input en pure html
{
j= $(tds[i]);
j = $(tds[i]);
className = j.attr('class');
if(className == "pw")
if (className == "pw")
value = data.pw;
else
value = $('input,select', j).val();
@ -186,17 +168,15 @@ $("#allRecord").on("click", ".delUser", function() {
swal("all done");
$(that).toggleClass('fa-check fa-edit');
$(that).toggleClass('confirmEditUser editUser');
}
else
} else
swal(data);
} catch (e) {
swal( "Oops" , "Something went wrong!<br>"+e , "error" );
swal("Oops", "Something went wrong!<br>" + e, "error");
}
console.log(data.return)
}, "json");
}
else {
swal( "Oops" , "Password don't match !" , "error" );
} else {
swal("Oops", "Password don't match !", "error");
}
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@ -204,7 +184,7 @@ $("#allRecord").on("click", ".delUser", function() {
tds = $("td", $(this).parent().parent()); //Récupère les td concernant le click
tr = $(this).parent().parent(); //Récupère le tr concernant le click
that = this;
if(mailPatern.test($(".email input", tr).val()) && (passwordPatern.test($(".pw input", tr).val()) || $(".pw input", tr).val() ==""))
if (mailPatern.test($(".email input", tr).val()) && (passwordPatern.test($(".pw input", tr).val()) || $(".pw input", tr).val() == ""))
if ($(".pw input", tr).val() === "") {
callBackVerif(true);
}
@ -220,20 +200,19 @@ $("#allRecord").on("click", ".delUser", function() {
},
},
}).then(callBackVerif);
}
else
swal( "Oops" , "Input don't respect rules !" , "error" );
} else
swal("Oops", "Input don't respect rules !", "error");
});
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~ADD USER~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
$("#allRecord").on("click", ".fa-user-plus", function(){
$("#allRecord").on("click", ".fa-user-plus", function() {
$(this).parent().parent().before(htmlAddUser);
});
$("#allRecord").on("click", ".confirmNewUser", function(){
$("#allRecord").on("click", ".confirmNewUser", function() {
});
$("#allRecord").on("click", ".delNewUser", function(){
$("#allRecord").on("click", ".delNewUser", function() {
tr = $(this).parent().parent();
tr.remove();
});
@ -242,6 +221,6 @@ $("#allRecord").on("click", ".delUser", function() {
//J'avais plein d'espace a droite en récupérent mon innerHTML
//https://stackoverflow.com/questions/24282158/removing-the-white-space-at-the-start-of-the-string
function ltrim(str) {
if(str == null) return str;
if (str == null) return str;
return str.replace(/^\s+/g, '');
}