Problème d'include

Résolu
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -  
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -
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:

<?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:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

N'aurais tu pas écris VUE au lieu de vue dans le nom du répertoire ?

1
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   13
 
Non c'est bon sur un autre forum on m'a donné la solution. Dans mon formulaire j'aurai du marquer
<form action="inscription.php" method="post">

au lieu de:
<form action="controleur/inscription/inscription.php" method="post">

Comme ça il suit le les include_once et tout ce passe bien. En tout cas merci de ton commentaire :)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Au passage, quelques bonnes habitudes à prendre :

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 :
//récupération des variables
$pseudo = isset($_POST['pseudo']) ? htmlspecialchars($_POST['pseudo']) : NULL;
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
// etc...


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;

0
Airox Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   13
 
Merci c'est vraiment sympa de m'apporter ces conseils, je viens de commencer donc plus vite on prend de bonnes habitudes mieux c'est, je vais corriger tout ça :D
0