Problème d'include

Résolu/Fermé
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 - 10 févr. 2016 à 17:52
Airox Messages postés 146 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 - 10 févr. 2016 à 18:26
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
10 févr. 2016 à 18:16
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 vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
10 févr. 2016 à 18:22
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 10/02/2016 à 18:24
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 vendredi 1 août 2014 Statut Membre Dernière intervention 5 novembre 2018 13
10 févr. 2016 à 18:26
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