diff --git a/composer.json b/composer.json new file mode 100755 index 0000000..4bc6dce --- /dev/null +++ b/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "twig/twig": "^2.0" + } +} diff --git a/composer.lock b/composer.lock new file mode 100755 index 0000000..e479612 --- /dev/null +++ b/composer.lock @@ -0,0 +1,202 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "843b04df5fdfe76251025001d66e0fd2", + "packages": [ + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T13:07:52+00:00" + }, + { + "name": "twig/twig", + "version": "v2.6.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "a11dd39f5b6589e14f0ff3b36675d06047c589b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a11dd39f5b6589e14f0ff3b36675d06047c589b1", + "reference": "a11dd39f5b6589e14f0ff3b36675d06047c589b1", + "shasum": "" + }, + "require": { + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2018-12-16T10:36:48+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/config.php b/config.php old mode 100644 new mode 100755 diff --git a/control/login.php b/control/login.php new file mode 100755 index 0000000..6545f63 --- /dev/null +++ b/control/login.php @@ -0,0 +1,33 @@ +load('login.html.twig'); + + +echo $template->render(array()); + +if(isset($_POST["login"], $_POST["pw"])) +{ + try { + $config = include(SITE_ROOT.'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 = ? AND mot_de_passe = ?'); + $req->exexute(array(htmlspecialchars($_POST["login"]),md5($_POST["pw"]))); + if($req->rowCount() > 0) + { + $data = $req->fetch(); + $_SESSION["login"] = $data["login"]; + $_SESSION["sl"] = $data["security_level"]; + echo json_encode((object)array("login"=>true)); + } + else + echo json_encode((object)array("login"=>false)); +} + +?> diff --git a/control/table.php b/control/table.php new file mode 100755 index 0000000..a346275 --- /dev/null +++ b/control/table.php @@ -0,0 +1,20 @@ +load('table.html.twig'); + +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()); +} +$reponse = $bdd->query('SELECT * FROM projetphp'); +$datas; +for($i=0;$data = $reponse->fetch();$i++) { + $datas[$i] = $data; +} +$reponse->closeCursor(); +echo $template->render(array('datas' => $datas)); + +?> diff --git a/css/login.css b/css/login.css new file mode 100755 index 0000000..3f37c80 --- /dev/null +++ b/css/login.css @@ -0,0 +1,101 @@ +/*https://codepen.io/colorlib/pen/rxddKy*/ + +@import url(https://fonts.googleapis.com/css?family=Roboto:300); + +.login-page { + width: 360px; + padding: 8% 0 0; + margin: auto; +} +.form { + position: relative; + z-index: 1; + background: #FFFFFF; + max-width: 360px; + margin: 0 auto 100px; + padding: 45px; + text-align: center; + box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24); +} +.form input { + font-family: "Roboto", sans-serif; + outline: 0; + background: #f2f2f2; + width: 100%; + border: 0; + margin: 0 0 15px; + padding: 15px; + box-sizing: border-box; + font-size: 14px; +} +.form button { + font-family: "Roboto", sans-serif; + text-transform: uppercase; + outline: 0; + background: #4CAF50; + width: 100%; + border: 0; + color: #FFFFFF; + font-size: 14px; + -webkit-transition: all 0.3 ease; + transition: all 0.3 ease; + cursor: pointer; +} +.form button:hover,.form button:active,.form button:focus { + background: #43A047; +} +.form .message { + margin: 15px 0 0; + color: #b3b3b3; + font-size: 12px; +} +.form .message a { + color: #4CAF50; + text-decoration: none; +} +.form .register-form { + display: none; +} +.container { + position: relative; + z-index: 1; + max-width: 300px; + margin: 0 auto; +} +.container:before, .container:after { + content: ""; + display: block; + clear: both; +} +.container .info { + margin: 50px auto; + text-align: center; +} +.container .info h1 { + margin: 0 0 15px; + padding: 0; + font-size: 36px; + font-weight: 300; + color: #1a1a1a; +} +.container .info span { + color: #4d4d4d; + font-size: 12px; +} +.container .info span a { + color: #000000; + text-decoration: none; +} +.container .info span .fa { + color: #EF3B3A; +} +body { + background: #76b852; /* fallback for old browsers */ + background: -webkit-linear-gradient(right, #76b852, #8DC26F); + background: -moz-linear-gradient(right, #76b852, #8DC26F); + background: -o-linear-gradient(right, #76b852, #8DC26F); + background: linear-gradient(to left, #76b852, #8DC26F); + font-family: "Roboto", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/function.php b/function.php old mode 100644 new mode 100755 diff --git a/index.php b/index.php index f0dd0de..fb20be7 100755 --- a/index.php +++ b/index.php @@ -1,97 +1,35 @@ getMessage()); -} -$reponse = $bdd->query('SELECT * FROM projetphp'); -?> +define('SITE_ROOT', dirname(__FILE__)); +ini_set('display_errors', 1); +ini_set('display_startup_errors', 1); +error_reporting(E_ALL); - +session_start(); - +require_once SITE_ROOT.'/vendor/autoload.php'; - - - - - - - - - - - - - - - - - - - - - - - - - - - - fetch()) { - ?> - - - - - - - - - closeCursor(); -?> - - - - -
loginDate de nésanceemailPWslvl
- - - - - -
- - - +else { + include './control/table.php'; +} + + + ?> diff --git a/login.html b/login.html new file mode 100644 index 0000000..7d6da45 --- /dev/null +++ b/login.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + +
+
+
+ + + + +

Already registered? Sign In

+
+ +
+
+ + diff --git a/post.php b/post.php old mode 100644 new mode 100755 index 6f3cb5f..74e7cf8 --- a/post.php +++ b/post.php @@ -31,8 +31,8 @@ elseif (isset($_POST["userExist"])) { } //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"])) +elseif (isset($_POST["newUser"],$_POST["datene"], $_POST["email"], $_POST["pw"]) && $_POST["newUser"] == "true") { + if(preg_match($loginPatern, $_POST["login"]) && preg_match($emailPatern, $_POST["email"]) && preg_match($pwPatern, $_POST["pw"])) { if(userExist($_POST["login"])) { @@ -40,6 +40,7 @@ elseif (isset($_POST["newUser"],$_POST["datene"], $_POST["email"], $_POST["pw"], } else { + $sl = isset($_POST["sl"])?$_POST["sl"]:"1"; $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( @@ -47,7 +48,7 @@ elseif (isset($_POST["newUser"],$_POST["datene"], $_POST["email"], $_POST["pw"], 'datene' => htmlspecialchars($_POST["datene"], ENT_QUOTES, 'UTF-8'), 'email' => (htmlspecialchars($_POST["email"], ENT_QUOTES, 'UTF-8')), 'pw' => $ret["pw"], -'slvl' => htmlspecialchars($_POST["sl"], ENT_QUOTES, 'UTF-8'), +'slvl' => htmlspecialchars($sl, ENT_QUOTES, 'UTF-8'), )); $req->closeCursor(); $ret["return"] = true; @@ -60,7 +61,8 @@ elseif (isset($_POST["newUser"],$_POST["datene"], $_POST["email"], $_POST["pw"], } //UPDATE `projetphp` SET `security_level` = '6' WHERE `projetphp`.`login` = 'aaazzze'; -else if (isset($_POST["newUser"], $_POST["updatePW"], $_POST["datene"], $_POST["email"], $_POST["pw"], $_POST["sl"], $_POST["login"]) && $_POST["newUser"] == "false") { +else if (isset($_POST["newUser"], $_POST["updatePW"], $_POST["datene"], $_POST["email"], $_POST["pw"], $_POST["sl"], $_POST["login"]) + && $_POST["newUser"] == "false" && (isset($_SESSION["login"]) && $_SESSION["login"] == $_POST["login"] || isset($_SESSION["sl"]) && $_SESSION["sl"] == "10")){ 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'); diff --git a/script.js b/script.js old mode 100644 new mode 100755 index e591d5a..97ddf64 --- a/script.js +++ b/script.js @@ -26,7 +26,7 @@ $(function() { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~INPUT EVENT~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ - $("#allRecord").on("keyup change", ".pw input", function() { + $("body").on("keyup change", ".pw input", function() { if (passwordPatern.test($(this).val()) || $(this).val() == "") { $(this).css("background-color", ""); $('div', $(this).parent()).css("display", "none"); @@ -35,7 +35,7 @@ $(function() { $('div', $(this).parent()).css("display", "block"); } }); - $("#allRecord").on("keyup change", ".email input", function() { + $("body").on("keyup change", ".email input", function() { if (mailPatern.test($(this).val())) { $(this).css("background-color", ""); $('div', $(this).parent()).css("display", "none"); @@ -44,7 +44,7 @@ $(function() { $('div', $(this).parent()).css("display", "block"); } }); - $("#allRecord").on("keyup change", ".datene :input", function(e) { + $("body").on("keyup change", ".datene :input", function(e) { console.log(e.target.value); if (datePatern.test($(this).val())) { $(this).css("background-color", ""); @@ -54,7 +54,8 @@ $(function() { $('div', $(this).parent()).css("display", "block"); } }); - $("#allRecord").on("keyup change", ".login :input", function(e) { + $("body").on("keyup change", ".login input, input .login", function(e) { + console.log("hoo"); login = ltrim($(this).val()); input = $(this); td = $(this).parent(); @@ -182,7 +183,7 @@ $(function() { $.post("post.php", dataToSend, function(data) { try { if (data.return == true) { - for (i = (dataToSend["newUser"] ?0: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'); @@ -200,7 +201,6 @@ $(function() { } catch (e) { swal("Oops", "Something went wrong!
" + e, "error"); } - console.log(data.return) }, "json"); } var dataToSend = new Object(); //Objet contenant les données à envoyé diff --git a/style.css b/style.css old mode 100644 new mode 100755 index fb4554c..35f12a6 --- a/style.css +++ b/style.css @@ -2,7 +2,7 @@ { cursor: pointer; } -.pw div, .login div{ +.pw div, .login div, .infoRules{ display:none; -moz-border-radius:6px; diff --git a/test.php b/test.php new file mode 100644 index 0000000..fb20be7 --- /dev/null +++ b/test.php @@ -0,0 +1,35 @@ + /*SITE_ROOT.'/twig/compilation_cache'*/false, +)); + +if(isset($_GET["page"])) +{ + switch ($_GET["page"]) { + case 'table': + include './control/table.php'; + break; + case 'login': + include './control/login.php'; + break; + default: + include './control/table.php'; + break; + } +} +else { + include './control/table.php'; +} + + + ?> diff --git a/views/footer.html.twig b/views/footer.html.twig new file mode 100755 index 0000000..e69de29 diff --git a/views/header.html.twig b/views/header.html.twig new file mode 100755 index 0000000..041e014 --- /dev/null +++ b/views/header.html.twig @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/views/login.html.twig b/views/login.html.twig new file mode 100755 index 0000000..45cb7ce --- /dev/null +++ b/views/login.html.twig @@ -0,0 +1,40 @@ + + + + {% include 'header.html.twig' %} + + + + +
+
+
+ +
+ +
+
le mot de passe comporte entre 8 et 16 caractères parmi a..z A..Z 0..9
+
+
+ +

Already registered? Sign In

+
+ +
+
+ + + diff --git a/views/table.html.twig b/views/table.html.twig new file mode 100755 index 0000000..065c869 --- /dev/null +++ b/views/table.html.twig @@ -0,0 +1,70 @@ + + + {% include 'header.html.twig' %} + + + + + + + + + + + + + + + + + {% for data in datas %} + + + + + + + + + {% endfor %} + + + + +
loginDate de nésanceemailPWslvl
+ {{ data["date_naissance"] }} + + {{ data["mot_de_passe"] }} + + {{ data["security_level"] }} +
+ + +