Php/Mysql problème d'envoi de formulaire vers la base de données

Résolu
Wollfie Messages postés 17 Statut Membre -  
Wollfie Messages postés 17 Statut Membre -
Bonjour,
Je cherche à créer un site pour un projet personnel, et je suis un gros débutant dans les langages de programmation web car j'ai été dans l'obligation de les apprendre en 4ème vitesse... J'aimerais donc que vous me communiquiez mon erreur dans le code suivant, car j'ai créé un formulaire à remplir pour devenir membre, mais après test, les informations rentrées ne semblent pas s'incorporer dans la base de données créée :

5 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour

    Pour commencer : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    Puis ça :
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Cordialement, 
    Jordane                                                                 
    0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonsoir, peux-tu partager le texte de ton code PHP, et pas l'image?
    0
  3. Wollfie Messages postés 17 Statut Membre 2
     
    <?php
    error_reporting(E_ALL);
      $bdd= new PDO('mysql:host=localhost;dbname=visiteurs;charset=utf8','root','')
      $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
     catch(PDOException $e) {
        die('Erreur : ' . $e->getMessage());
    }
    ?>

    J'ai mis ça, et ma page refuse de se charger et le message "Parse error: syntax error, unexpected '$bdd' (T_VARIABLE) in C:\wampserv64\www\Site\Signin.php on line 4" apparaît, la ligne 4 dans mon fichier étant le premier "set attribute"
    1
    1. Wollfie Messages postés 17 Statut Membre 2
       
      Sachant que je n'ai pas encore mis la partie détection d'erreurs de requête dans mon code...
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Il manque un point-virgule à la ligne 3
      0
      1. Wollfie Messages postés 17 Statut Membre 2 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci beaucoup ! Après une autre petite correction (nom de variable : pass_hache et pas passe_hache) ça fonctionne bien !
        0
  4. Wollfie Messages postés 17 Statut Membre 2
     
    J'en profite pendant que vous êtes là, dans le login cette fois, j'ai mis dans le code l'affichage des erreurs, aucune erreur n'est affichée :
    $pseudo = ($_POST['pseudologin']);
            //hachage du mdp
            $pass_harche = sha1($_POST['mdplogin']);
            
            //verification des id
            $req = $bdd->prepare('SELECT id FROM visiteurs WHERE pseudo = :pseudo AND mdp = :mdp');
            $req->execute(array(
            'pseudo' => $pseudo,
            'mdp' => $pass_hache));
            
            $resultat = $req->fetch();
            
            if(!$resultat)
            {
              ?>
              <script>
                alert('Mauvais mot de passe ou identifiant!');
              </script>
              <?php
            }
            else
            {
              session_start();
              $_SESSION['id'] = $resultat['id'];
              $_SESSION['pseudo'] = $pseudo;
              header('location: membres.php');
            }
    0
    1. Wollfie Messages postés 17 Statut Membre 2
       
      Même en ayant corrigé le fait que je ne sache pas écrire hache à la ligne 3, le problème reste existant...
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Wollfie Messages postés 17 Statut Membre
         
        Comme expliqué dans le lien que je t'ai donné.... Place tes requêtes dans des blocs try catch...

        Et puis... Sans voir l'intégralité de ton code... Difficile de te répondre
        0
      2. Wollfie Messages postés 17 Statut Membre 2 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Je l'ai fait de mon côté mais ça n'a rien donné...
        0
      3. Wollfie Messages postés 17 Statut Membre 2 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Je peux t'envoyer des messages privés avec tout mon code ?
        0
      4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Wollfie Messages postés 17 Statut Membre
         
        Non.
        Tu postes sur le forum
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Wollfie Messages postés 17 Statut Membre 2
     
    Mon code entier : Bonne chance !
    <?php
    try{
    error_reporting(E_ALL);
      $bdd = new PDO('mysql:host=localhost;dbname=visiteurs;charset=utf8','root','');
      $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    }catch(PDOException $e) {
        die('Erreur : ' . $e->getMessage());
    }
    ?>   <form method="post" action="">
            <fieldset id="formulairelogin">
                <label for="pseudo">Entrez votre Pseudonyme:</label>
                <input type="text" id="pseudo" name="pseudologin" autocomplete="on"><br>
                <label for="mdp">Entrez votre Mot de passe:</label>
                <input type="password" id="mdp" name="mdplogin"><br>
                <input type="submit" value="Envoyer">
            </fieldset>
        </form>
        <p><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
        <div id="bas"><p><br></p></div>
            <?php
            if(isset($_POST['Envoyer'])){
            //test de l'envoi du formulaire
            $pseudo = ($_POST['pseudologin']);
            //hachage du mdp
            $pass_hache = sha1($_POST['mdplogin']);
            
            //verification des id
            try{$req = $bdd->prepare('SELECT id FROM visiteurs WHERE pseudo = :pseudo AND mdp = :mdp');
            $req->execute(array(
            'pseudo' => $pseudo,
            'mdp' => $pass_hache));
            
            $resultat = $req->fetch();
            //verification du mot de passe
            if(!$resultat)
            {
              ?>
              <script>
                alert('Mauvais mot de passe ou identifiant!');
              </script>
              <?php
            }
            else
            { //si bon, ouverture de la session
              session_start();
              $_SESSION['id'] = $resultat['id'];
              $_SESSION['pseudo'] = $pseudo;
              header('location:membres.php');
            }}catch(Exception $e){
                // en cas d'erreur :
                echo " Erreur ! ".$e->getMessage();
                echo " Les datas : " ;
                print_r($datas);
            }}
            ?>
    0
    1. Wollfie Messages postés 17 Statut Membre 2
       
      Désolé du dérangement, j'ai oublié le name= dans la partie submit du formulaire, tout fonctionne correctement,
      merci de votre aide précieuse,
      Cordialement,
      Léo.
      0