directory name changed

pull/2/head
Roxane 2 years ago
parent 3bf35f1ee3
commit 085c121573

@ -2,10 +2,17 @@
<module type="WEB_MODULE" version="4"> <module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/config" isTestSource="false" packagePrefix="config\" />
<sourceFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/controleur" isTestSource="false" packagePrefix="controleur\" />
<sourceFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/metier" isTestSource="false" packagePrefix="modeles\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" /> <excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" /> <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" /> <excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/vendor/symfony/polyfill-mbstring" />
<excludeFolder url="file://$MODULE_DIR$/mvc_PSR4_twig/vendor/twig/twig" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />

@ -1,14 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpIncludePathManager"> <component name="PhpIncludePathManager">
<include_path> <include_path>
<path value="$PROJECT_DIR$/vendor/composer" /> <path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/twig/twig" /> <path value="$PROJECT_DIR$/vendor/twig/twig" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" /> <path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" /> <path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/mvc_PSR4_twig/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/mvc_PSR4_twig/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/mvc_PSR4_twig/vendor/composer" />
<path value="$PROJECT_DIR$/mvc_PSR4_twig/vendor/twig/twig" />
</include_path> </include_path>
</component> </component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.0"> <component name="PhpProjectSharedConfiguration" php_language_level="8.0">
<option name="suggestChangeDefaultLanguageLevel" value="false" /> <option name="suggestChangeDefaultLanguageLevel" value="false" />
</component> </component>
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project> </project>

@ -1,34 +1,34 @@
<?php <?php
namespace config; namespace config;
class Validation class Validation
{ {
public static function val_action($action) public static function val_action($action)
{ {
if (!isset($action)) { if (!isset($action)) {
throw new \Exception('pas d\'action'); throw new \Exception('pas d\'action');
//on pourrait aussi utiliser //on pourrait aussi utiliser
//$action = $_GET['action'] ?? 'no'; //$action = $_GET['action'] ?? 'no';
// This is equivalent to: // This is equivalent to:
//$action = if (isset($_GET['action'])) $action=$_GET['action'] else $action='no'; //$action = if (isset($_GET['action'])) $action=$_GET['action'] else $action='no';
} }
} }
public static function val_form(string &$nom, string &$age, &$dVueEreur) public static function val_form(string &$nom, string &$age, &$dVueEreur)
{ {
if (!isset($nom) || $nom == '') { if (!isset($nom) || $nom == '') {
$dVueEreur[] = 'pas de nom'; $dVueEreur[] = 'pas de nom';
$nom = ''; $nom = '';
} }
if ( strlen(htmlspecialchars($nom, ENT_QUOTES)) != strlen($nom) ) { if ( strlen(htmlspecialchars($nom, ENT_QUOTES)) != strlen($nom) ) {
$dVueEreur[] = "testative d'injection de code (attaque sécurité)"; $dVueEreur[] = "testative d'injection de code (attaque sécurité)";
$nom = ''; $nom = '';
} }
if (!isset($age) || $age == '' || !filter_var($age, FILTER_VALIDATE_INT)) { if (!isset($age) || $age == '' || !filter_var($age, FILTER_VALIDATE_INT)) {
$dVueEreur[] = "pas d'age "; $dVueEreur[] = "pas d'age ";
$age = 0; $age = 0;
} }
} }
} }

@ -1,14 +1,14 @@
<?php <?php
//gen //gen
$rep = __DIR__ . '/../'; $rep = __DIR__ . '/../';
// liste des modules à inclure // liste des modules à inclure
//$dConfig['includes']= array('controleur/Validation.php'); //$dConfig['includes']= array('controleur/Validation.php');
//BD //BD
$base = 'sasa'; $base = 'sasa';
$login = ''; $login = '';
$mdp = ''; $mdp = '';

@ -1,83 +1,83 @@
<?php <?php
namespace controleur; namespace controleur;
use model\ArticleModel; use model\ArticleModel;
class Controleur class Controleur
{ {
public function __construct() public function __construct()
{ {
global $twig; // nécessaire pour utiliser variables globales global $twig; // nécessaire pour utiliser variables globales
session_start(); session_start();
$tabArticle[] = ArticleModel::getArticles(); $tabArticle[] = ArticleModel::getArticles();
//debut //debut
//on initialise un tableau d'erreur //on initialise un tableau d'erreur
$dVueEreur = []; $dVueEreur = [];
try { try {
$action = $_REQUEST['action'] ?? null; $action = $_REQUEST['action'] ?? null;
switch($action) { switch($action) {
//pas d'action, on réinitialise 1er appel //pas d'action, on réinitialise 1er appel
case null: case null:
$this->Reinit(); $this->Reinit();
break; break;
case 'validationFormulaire': case 'validationFormulaire':
$this->ValidationFormulaire($dVueEreur); $this->ValidationFormulaire($dVueEreur);
break; break;
//mauvaise action //mauvaise action
default: default:
$dVueEreur[] = "Erreur d'appel php"; $dVueEreur[] = "Erreur d'appel php";
$dataview = ['Article'=> $tabArticle]; $dataview = ['Article'=> $tabArticle];
echo $twig->render('listArticle.html', ['tabArticle' => $dataview, 'dVueErreur'=>$dVueEreur]); echo $twig->render('listArticle.html', ['tabArticle' => $dataview, 'dVueErreur'=>$dVueEreur]);
break; break;
} }
} catch (\PDOException $e) { } catch (\PDOException $e) {
//si erreur BD, pas le cas ici //si erreur BD, pas le cas ici
$dVueEreur[] = 'Erreur inattendue!!! '; $dVueEreur[] = 'Erreur inattendue!!! ';
} catch (\Exception $e2) { } catch (\Exception $e2) {
$dVueEreur[] = 'Erreur inattendue!!! '; $dVueEreur[] = 'Erreur inattendue!!! ';
echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]); echo $twig->render('erreur.html', ['dVueEreur' => $dVueEreur]);
} }
//fin //fin
exit(0); exit(0);
}//fin constructeur }//fin constructeur
public function Reinit() public function Reinit()
{ {
global $twig; // nécessaire pour utiliser variables globales global $twig; // nécessaire pour utiliser variables globales
$dVue = [ $dVue = [
'nom' => '', 'nom' => '',
'age' => 0, 'age' => 0,
]; ];
echo $twig->render('vuephp1.html', [ echo $twig->render('vuephp1.html', [
'dVue' => $dVue 'dVue' => $dVue
]); ]);
} }
public function ValidationFormulaire(array $dVueEreur) public function ValidationFormulaire(array $dVueEreur)
{ {
global $twig; // nécessaire pour utiliser variables globales global $twig; // nécessaire pour utiliser variables globales
//si exception, ca remonte !!! //si exception, ca remonte !!!
$nom = $_POST['txtNom']; // txtNom = nom du champ texte dans le formulaire $nom = $_POST['txtNom']; // txtNom = nom du champ texte dans le formulaire
$age = $_POST['txtAge']; $age = $_POST['txtAge'];
\config\Validation::val_form($nom, $age, $dVueEreur); \config\Validation::val_form($nom, $age, $dVueEreur);
$model = new \metier\Simplemodel(); $model = new \metier\Simplemodel();
$data = $model->get_data(); $data = $model->get_data();
$dVue = [ $dVue = [
'nom' => $nom, 'nom' => $nom,
'age' => $age, 'age' => $age,
'data' => $data, 'data' => $data,
]; ];
echo $twig->render('vuephp1.html', ['dVue' => $dVue, 'dVueEreur' => $dVueEreur]); echo $twig->render('vuephp1.html', ['dVue' => $dVue, 'dVueEreur' => $dVueEreur]);
} }
}//fin class }//fin class

@ -1,16 +1,16 @@
<?php <?php
//chargement config //chargement config
require_once __DIR__ . '/config/config.php'; require_once __DIR__ . '/config/config.php';
require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/autoload.php';
use controleur\Controleur; use controleur\Controleur;
//twig //twig
$loader = new \Twig\Loader\FilesystemLoader('templates'); $loader = new \Twig\Loader\FilesystemLoader('templates');
$twig = new \Twig\Environment($loader, [ $twig = new \Twig\Environment($loader, [
'cache' => false, 'cache' => false,
]); ]);
$cont = new Controleur(); $cont = new Controleur();

@ -1,17 +1,17 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Erreur</title> <title>Erreur</title>
</head> </head>
<body> <body>
<h1>ERREUR page !!!!!</h1> <h1>ERREUR page !!!!!</h1>
{% if dVueEreur is defined %} {% if dVueEreur is defined %}
{% for value in dVueEreur %} {% for value in dVueEreur %}
<p>{{value}}</p> <p>{{value}}</p>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
</body> </body>
</html> </html>

@ -1,105 +1,105 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Personne - formulaire</title> <title>Personne - formulaire</title>
<script type="text/javascript"> <script type="text/javascript">
function clearForm(oForm) { function clearForm(oForm) {
const elements = oForm.elements; const elements = oForm.elements;
oForm.reset(); oForm.reset();
for (i = 0; i < elements.length; i++) { for (i = 0; i < elements.length; i++) {
field_type = elements[i].type.toLowerCase(); field_type = elements[i].type.toLowerCase();
switch (field_type) { switch (field_type) {
case "text": case "text":
case "password": case "password":
case "textarea": case "textarea":
case "hidden": case "hidden":
elements[i].value = ""; elements[i].value = "";
break; break;
case "radio": case "radio":
case "checkbox": case "checkbox":
if (elements[i].checked) { if (elements[i].checked) {
elements[i].checked = false; elements[i].checked = false;
} }
break; break;
case "select-one": case "select-one":
case "select-multi": case "select-multi":
elements[i].selectedIndex = -1; elements[i].selectedIndex = -1;
break; break;
default: default:
break; break;
} }
} }
} }
</script> </script>
</head> </head>
<body> <body>
<!-- on vérifie les données provenant du modèle --> <!-- on vérifie les données provenant du modèle -->
{% if dVue is defined %} {% if dVue is defined %}
<div align="center"> <div align="center">
{% if dVueEreur is defined and dVueEreur|length >0 %} {% if dVueEreur is defined and dVueEreur|length >0 %}
<h2>ERREUR !!!!!</h2> <h2>ERREUR !!!!!</h2>
{% for value in dVueEreur %} {% for value in dVueEreur %}
<p>{{value}}</p> <p>{{value}}</p>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<h2>Personne - formulaire</h2> <h2>Personne - formulaire</h2>
<hr /> <hr />
<!-- affichage de données provenant du modèle --> <!-- affichage de données provenant du modèle -->
{{dVue.data}} {{dVue.data}}
<form method="post" name="myform" id="myform"> <form method="post" name="myform" id="myform">
<table> <table>
<tr> <tr>
<td>Nom</td> <td>Nom</td>
<td> <td>
<input name="txtNom" value="{{dVue.nom}}" type="text" size="20" /> <input name="txtNom" value="{{dVue.nom}}" type="text" size="20" />
</td> </td>
</tr> </tr>
<tr> <tr>
<td>Age</td> <td>Age</td>
<td> <td>
<input <input
name="txtAge" name="txtAge"
value="{{dVue.age}}" value="{{dVue.age}}"
type="text" type="text"
size="3" size="3"
required required
/> />
</td> </td>
</tr> </tr>
<tr></tr> <tr></tr>
</table> </table>
<table> <table>
<tr> <tr>
<td><input type="submit" value="Envoyer" /></td> <td><input type="submit" value="Envoyer" /></td>
<td><input type="reset" value="Rétablir" /></td> <td><input type="reset" value="Rétablir" /></td>
<td> <td>
<input <input
type="button" type="button"
value="Effacer" value="Effacer"
onclick="clearForm(this.form);" onclick="clearForm(this.form);"
/> />
</td> </td>
</tr> </tr>
</table> </table>
<!-- action !!!!!!!!!! --> <!-- action !!!!!!!!!! -->
<input type="hidden" name="action" value="validationFormulaire" /> <input type="hidden" name="action" value="validationFormulaire" />
</form> </form>
</div> </div>
{% else %} {% else %}
<p>Erreur !!<br />utilisation anormale de la vuephp</p> <p>Erreur !!<br />utilisation anormale de la vuephp</p>
{% endif %} {% endif %}
<p> <p>
Essayez de mettre du code html dans nom -> Correspond à une attaque de type injection Essayez de mettre du code html dans nom -> Correspond à une attaque de type injection
</p> </p>
</body> </body>
</html> </html>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save