Problème d'include
Résolu
Airox
Messages postés
157
Statut
Membre
-
Airox Messages postés 157 Statut Membre -
Airox Messages postés 157 Statut Membre -
Bonjour à tous, je suis en train d'apprendre le PHP pour un futur projet scolaire mais voilà un petit problème (parmi tant d'autres) me tracasse énormément, j'ai une erreur avec une include_once mais je n'arrive pas à la résoudre. J'utilise un design MVC qui est conseillé dans le cour de Mathieu Nebra.
Voilà ma page d'inscription:
Le contrôleur:
Mon modèle:
La Vue:
Et l'erreur ce produit seulement quand j'envoie le formulaire:

Et enfin je vous donne l'organisation des fichiers:

Merci d'avance. :)
Voilà ma page d'inscription:
<?php
//Connection base de donnée
include_once('modele/connexion_bdd.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'inscription')
{
include_once('controleur/inscription/inscription.php');
}
Le contrôleur:
<?php
// Vérification de la validité des informations
// Verification du pseudo
if(isset($_POST['pseudo']))
{
$_POST['pseudo'] = htmlspecialchars($_POST['pseudo']); // Contre XXS
{
if (preg_match("#^[a-zA-Z0-9._-]{5,25}$#", $_POST['pseudo']))
{
// C'est bon
}
else
{
$erreur = 'Votre pseudo n\'est pas valide ';
}
}
}
// Verification MDP
if (isset($_POST['password'], $_POST['password_confirmation']) AND $_POST['password'] != $_POST['password_confirmation'])
{
$erreur = 'Les deux mots de passes ne correspondent pas.';
}
// Verification du mail
if(isset($_POST['mail']))
{
$_POST['mail'] = htmlspecialchars($_POST['mail']); // Contre XXS
{
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['mail']))
{
// C'est bon
}
else
{
$erreur = 'Votre email n\'est pas valide ';
}
}
}
// On verifie la longueur du mot de passe
if(isset($_POST['password']))
{
if (preg_match("#[.]{6,}#",$_POST['password']))
{
// C'est bon
}
else
{
$erreur = 'Votre mot de passe doit contenir au minimum 6 caractères ';
}
}
// On verigie qu'il n'y ai pas d'erreur et que les mdp sont égaux
if ((isset($_POST['pseudo'], $_POST['email'], $_POST['password'], $_POST['password_confirmation']))
AND $_POST['password'] == $_POST['password_confirmation'] AND empty($erreur))
{
// Hachage du mot de passe
$pass_hache = sha1($_POST['password']);
// Envoi à la base de donnée
include_once('modele/inscription/inscription.php');
$validation = ' Bravo' . $_POST['pseudo']. ',ton inscription est un succès';
}
if (isset($erreur))
{
echo $erreur;
}
// On affiche la page
include_once('vue/inscription/inscription.php');
?>
Mon modèle:
<?php
$req = $bdd->prepare('INSERT INTO membres(pseudo, password, mail, date_inscription) VALUES(:pseudo, :password, :mail, CURDATE())');
$req->execute(array(
'pseudo' => $pseudo,
'password' => $pass_hache,
'mail' => $mail));
La Vue:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
</head>
<body>
<?php if (isset($erreur))
{ ?>
<p>
<strong><?php echo $erreur; ?></strong>
</p>
<br>
<br>
<?php } ?>
<form action="controleur/inscription/inscription.php" method="post">
<p>
<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
<label for="password">Password</label> : <input type="password" name="pass" id="password" /><br />
<label for="password">Vérification Password</label> : <input type="password" name="password_confirmation" id="password_confirmation" /><br />
<label for="mail">Email</label> : <input type="email" name="mail" id="mail" /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
Et l'erreur ce produit seulement quand j'envoie le formulaire:

Et enfin je vous donne l'organisation des fichiers:

Merci d'avance. :)
A voir également:
- Erreurs #include détectées. mettez à jour includepath. les tildes sont désactivés pour cette unité de traduction
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Google traduction photo - Guide
- Mettre a jour chromecast - Accueil - Guide TV et vidéo
- Comment mettre à jour ses pilotes - Guide
au lieu de:
Comme ça il suit le les include_once et tout ce passe bien. En tout cas merci de ton commentaire :)
Pour ce qui est de l'écriture du code ... les blocs IF/ELSE .. s'écrivent de préférence comme ceci :
if ($a === $b) { bar(); } elseif ($a > $b) { $foo->bar($arg1); } else { BazClass::bar($arg2, $arg3); }=> voir les normes PSR http://blog.ice-dev.com/post/2013/11/17/norme-psr-1-et-psr-2
Mettre des IF ELSE ... quand seul le ELSE contient quelque-chose ne sert strictement à rien et alourdit ton code !
Par exemple :
if (preg_match("#^[a-zA-Z0-9._-]{5,25}$#", $_POST['pseudo'])) { // C'est bon } else { $erreur = 'Votre pseudo n\'est pas valide '; }peut etre écrit plus proprement :
if (! preg_match("#^[a-zA-Z0-9._-]{5,25}$#", $_POST['pseudo'])) { $erreur = 'Votre pseudo n\'est pas valide '; }voir même... en écriture TERNAIRE :
$erreur = ! preg_match("#^[a-zA-Z0-9._-]{5,25}$#", $_POST['pseudo']) ? 'Votre pseudo n\'est pas valide ' : NULL;On récupère proprement les variables AVANT de les utiliser
par exemple .... au début de ton script .. tu écris :
puis dans le reste de ton code... tu utilises directement ces variables :
$erreur = ! preg_match("#^[a-zA-Z0-9._-]{5,25}$#", $pseudo) ? "Votre pseudo n'est pas valide " : NULL;