Php/Mysql problème d'envoi de formulaire vers la base de données [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
-
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
-
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

Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020
2 973
Bonjour

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

Puis ça :
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs



Cordialement, 
Jordane                                                                 
Messages postés
13098
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 novembre 2020
729
bonsoir, peux-tu partager le texte de ton code PHP, et pas l'image?
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1
<?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"
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1
Sachant que je n'ai pas encore mis la partie détection d'erreurs de requête dans mon code...
Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020
2 973
Il manque un point-virgule à la ligne 3
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1 >
Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020

Merci beaucoup ! Après une autre petite correction (nom de variable : pass_hache et pas passe_hache) ça fonctionne bien !
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1
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');
        }
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1
Même en ayant corrigé le fait que je ne sache pas écrire hache à la ligne 3, le problème reste existant...
Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020
2 973 >
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018

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
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1 >
Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020

Je l'ai fait de mon côté mais ça n'a rien donné...
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1 >
Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020

Je peux t'envoyer des messages privés avec tout mon code ?
Messages postés
30150
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2020
2 973 >
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018

Non.
Tu postes sur le forum
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1
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);
        }}
        ?>
Messages postés
16
Date d'inscription
lundi 30 octobre 2017
Statut
Membre
Dernière intervention
29 janvier 2018
1
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.