Bonjour,

Voila je rencontre un petit problème avec mon code.

Étant débutant, je suis actuellement en train de réaliser un espace admin, mais toutes les aides que je cherche ailleurs ne répondent qu'en partie à ma question.

<?php include 'header.php' ?>

<?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "spidermansite";
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (mysqli_connect_error()) {
    echo mysqli_connect_error();
    exit;
}
?>
<?php

var_dump($_POST);
$pass_hache = password_hash($_POST['pass'], PASSWORD_DEFAULT);
if (isset($_POST['pseudo'])&& ($_POST['pass_hache']) && ($_POST['email']) && ($_POST['pass']) )

$sql ="INSERT INTO membres(pseudo, pass, email, date_inscription);
VALUES('" . $_POST['pseudo'] . "','"
        . $_POST['pass_hache'] . "','"
        . $_POST['pass'] . "','"
        . $_POST['email'] . "')";

?>

    <div id="getoutfooter">
        <form>
            <input type="text" id="pseudo" name="pseudo" placeholder="Pseudonyme">
            <input type="password" id="pass" name="pass" placeholder="Entrer le mot de passe">
            <input type="password" id="pass" name="pass" placeholder="Confirmez le mot de passe">
            <input type="email" id="email" name="email" placeholder="entrez votre email">
            <input type="submit">
        </form>
    </div>
<?php include 'footer.php' ?>

J'obtiens l'erreur suivante:

Notice: Undefined index: pass in C:\wamp64\wamp64\www\test\inscription.php on line 24
Call Stack

Time Memory Function Location

1 0.0001 405528 {main}( ) ...\inscription.php:0

Mais je ne comprends pas car j'ai bien fais l'isset pour les autres (pseudo email, etc...) mais cela ne fonctionne pas.
J'ai réussis à faire tout mon site sans demander d'aide sur les forums mais la je bloque vraiment et je ne comprends pas ce que je fais de mal.

(même si j'essaye de remplir le form les données que j'entre ne s'actualisent pas dans ma bdd, je ne comprends pas non plus).

Si vous pouviez m'aider a régler mon problème :/
Merci!

4 réponses


Bonjour.
Pour commencer, tu as un problème au niveau de ton HTML, pour le formulaire, tu as nommé deux inputs de la même manière, soit pass, il te faut donc commencer par modifier le second, soit par pass_hache.
Ensuite, à quoi sert la ligne

$pass_hache = password_hash($_POST['pass'], PASSWORD_DEFAULT);

Si tu ne t'en sert pas par la suite ?
De plus qu'au moment où tu définies cette variable si le formulaire n'a pas été soumis, l'index pass n'existe pas.
Pour terminer, tu as deux erreurs dans ta requête SQL :

/** il ne faut pas de ; dans la ligne suivante **/
$sql ="INSERT INTO membres(pseudo, pass, email, date_inscription);
VALUES('" . $_POST['pseudo'] . "','"
        . $_POST['pass_hache'] . "','"
        . $_POST['pass'] . "','"
        . $_POST['email'] . "')";

La première je l'ai mise en commentaire dans le code ci-dessus, la seconde et que les valeurs que tu passes dans ta requête ne correspondent pas aux colonnes que tu définies, sauf les deux premières.

gabday
Auteur

Merci pour votre réponse rapide, d'accord! mais je ne comprends pas pourquoi mes données ne s'entrent pas dans ma table :/,
db_name = spidermansite
table = membres
mais ma requete sql n'insert rien dedans alors que j'ai pourtant des articles qui s'insèrent comme cela sans aucun problème :/

J'ai d'ailleurs pas compris comment utiliser

$pass_hache = password_hash($_POST['pass'], PASSWORD_DEFAULT);

dans ce contexte j'ai suivi un cours sur openclassroom et je ne vois pas ce que je dois faire pour corriger ce probleme.

Est-ce que tu as fait les modifications dont je t'ai parlé ?
Si c'est le cas montres le code modifié.
Par contre dans l'état actuel de ton code, ton input qui est censé servir de confirmation du mot de passe n'a aucune utilité étant donné que tu ne vérifies même pas si sa valeur correspond à celle de l'input du mot de passe.
Autre chose aussi, que je n'avais pas relevé la première fois, si tu ne définies pas la méthode que tu veux utiliser pour le formulaire, soit post ton formulaire sera soumis en get, par conséquent la variable $_POST sera toujours un tableau vide et tu ne rentrera jamais dans la condition.
Et puis c'est normal que tu n'as aucune insertion en base de données, étant donné que tu ne fait que préparer la requête SQL, mais tu ne la fait pas, pour faire une requête SQL auprès de la base de données, il faut utiliser une fonction/classe qui permet de communiquer avec la base de données.

Bonjour,
Sans oublier que $_POST['pass_hache'] ne fait aucune référence à un input.
Après chaque if, tu peux mettre un "echo 'je passe ici .....';" afin de vérifier que tu rentres dans les if