Base de donnée

Base de donnée - PHP - Programmation

Marsh Posté le 15-04-2015 à 13:45:13    

Salut tout le monde
 
Alors j'ai un petit problème:
 
Je suis en Terminale STI2D et je dois faire un projet pour le bac, j'ai donc choisi avec mon coéquipier de faire un système de vidéosurveillance avec un raspberry et son module caméra, ainsi qu'un site possédant un espace membre afin que l'utilisateur puisse s'inscrire et se connecter et avoir accès à la vue de sa caméra.  
 
Bref: ma parti à moi est de faire le site ainsi que l'espace membre. Mais je bloque sur la page d'inscription. En effet lorsque l'utilisateur s'inscrit et clique sur le bouton "s'inscrire" les données qu'il entre (pseudo, mail, mot de passe) ne se met pas dans ma base de donnée. Je suis sous wamp et utilise phpmyadmin pour la base de donné  
Si vous avez besoin de précisons ou d'infos n'hésitez pas  
Vous trouverez ci-dessous le code de ma page inscription
 
Merci pour les futures réponses :)  
 
<?php
 
$bdd = new PDO('mysql:host=127.0.0.1;dbname=base;charset=utf8', 'root','');
 
if(isset($_POST['forminscription']))
{
    $pseudo = htmlspecialchars($_POST['pseudo']); // enlève les caractères html, évite les injections de codes( securité)
        $mail = htmlspecialchars($_POST['mail']);
        $mail2 = htmlspecialchars($_POST['mail2']);
        $mdp = sha1($_POST['mdp']); // crypte le mot de passe en sha1 (sécurité)
        $mdp2 = sha1($_POST['mdp2']);
    if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mail2']))
    {
        $pseudolength = strlen($pseudo); // analyse le nbre de caractère dans notre pseudo
       if($pseudolength <= 255)
       {
        if($mail == $mail2)
        {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) // oblige l'utilisateur a rentré un email valide
          {
 
          }
          else  
          {
            $erreur = "Votre adresse mail n'est pas valide";
          }
          if ($mdp == $mdp2)
          {
             $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?" ); //prepare la base de donné
             $insertmbr->execute(array($pseudo, $mail, $mdp));
             $erreur = "Vous êtes bien inscrit. Bienvenue :)";
          }
          else  
          {
            $erreur = "Les deux mots de passe doivent être similaire";
          }
        }
        else  
        {
          $erreur = " Les deux emails doivent être identique";
        }
       }
       else
       {
        $erreur = "Votre pseudo ne doit pas dépasser 255 caractères.";
       }
 
     
    }
    else
    {
        $erreur = "Tous les champs doivent être remplis";
    }
}
 
?>
 
<!DOCTYPE html>
<html>
<head>
     <title>inscription</title>
   <meta http-equiv="content-type"
      content="text/html;charset=utf-8"/>
 
</head>
 
<body>
 <div align="center">
 <h2>Inscription</h2>
 <br/><br/>
 
 <form method="post" action=" ">
   
 
   <table>
    <tr>
     <td align="right"> <!-- permet de rapprocher le plus possible le texte de la case -->
     <label for="pseudo"> <!--permet de sélectionner automatiquement la case, lorsqu'on clique desssus--> Pseudo:</label>
        </td>
        <td>
            <input type="text"
          placeholder="Votre pseudo" id="pseudo" name="pseudo"  value= "<?php if(isset($pseudo)){echo $pseudo; } ?>" /> <!-- permet de conserver le pseudo si une erreur se produit-->
          </td>
          </tr>
          </form>      
   <tr>
    <td align="right">  
     <label for="mail"> Mail:</label>
        </td>
        <td>
            <input type="email"
          placeholder="Votre mail" id="mail" name="mail" value= "<?php if(isset($mail)){echo $mail; } ?>" />
       </td>
    </tr>
   <tr>
    <td align="right">  
     <label for="mail2"> Confirmation du mail:</label>
        </td>
        <td>
            <input type="email"
          placeholder="Confirmez votre email" id="mail2" name="mail2" value= "<?php if(isset($mail)){echo $mail; } ?>" />
          </td>
      </tr>
 <tr>
    <td align="right">  
     <label for="mdp"> Mot de passe:</label>
        </td>
        <td>
            <input type="password"
          placeholder="Votre mot de passe" id="mdp" name="mdp" />
          </td>
      </tr>
 <tr>
    <td align="right">  
     <label for="mdp2"> Confirmation de votre mot de passe:</label>
        </td>
        <td>
            <input type="password"
          placeholder="Confirmez votre mot de passe" id="mdp2" name="mdp2" />
          </td>
      </tr>
     <tr>
        <td></td> <!-- centre notre bouton d'inscription -->
        <td>
            <input type="submit" name="forminscription" value="Je m'inscris" />
        </td>
    </tr>
 </table>
</form>
<?php
if(isset($erreur))
{
    echo '<font color="red">' .$erreur. "</font>";
}
?>
</body>
 
</html>

Reply

Marsh Posté le 15-04-2015 à 13:45:13   

Reply

Marsh Posté le 15-04-2015 à 14:20:44    

salut,
ton formulaire pointe sur un action=" " (un espace) donc il ne donne pas sur la page en cours ?
teste ceci : au lieu de
 

Code :
  1. if(isset($_POST['forminscription']))


 
mets

Code :
  1. if(!isset($_POST['forminscription']))
  2. {
  3. echo 'formulaire non soumis pour le moment.';
  4. }
  5. else
  6. {


 
et tu verras que le message va apparaitre la première fois que tu charges la page (normal) et quand tu valides le fiormulaire, que se passe-t-il ?
 
PS : peux-tu mettre des balises [code ] sur ton message ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 15-04-2015 à 14:39:03    

Quand je valide l'inscription ça affiche le message que j'ai mis c'est à dire "Vous êtes bien inscrit. Bienvenue :)  
 
J'ai pas trop compris à quoi servait la modification que vous m'avez suggérer ?

Reply

Marsh Posté le 15-04-2015 à 14:49:07    

T'as quoi comme msg d'erreur ?
 
$bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?" );
 
Entre le ? et le guillemet, je pense qu'il manque une )


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-04-2015 à 15:35:20    

J'ai aucun message d'erreur,  
Le problème c'est que le pseudo mail et mot de passe ne se mettent pas dans la bdd lors de l'inscription

Reply

Marsh Posté le 15-04-2015 à 15:58:53    

Essais de vérifier la connexion SQL

Code :
  1. try{
  2. new PDO('mysql:host=localhost;dbname=votre_base', 'utilisateur', 'mot_de_passe');
  3. }
  4. catch (PDOException $e) {
  5.     print "Erreur !: " . $e->getMessage() . "<br/>";
  6.     die();
  7. }


Message édité par Elanth le 15-04-2015 à 15:59:30
Reply

Marsh Posté le 15-04-2015 à 16:51:09    

T'as activé au moins le reporting_error à On ?
 
Sais-tu au moins ou passe ton script (dans quelles branches des if/else). Comme je te l'ai fait remarquer, la requête qui se charge de l'enregistrement dans la BD me paraît foireuse niveau syntaxique et ça, c'est un truc que l'interpréteur de php devrait voir su je ne me trompe pas :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-04-2015 à 19:21:47    

Alors ça j'en sais rien du tout, je suis débutant et j'ai suivi un tuto sur internet, si tu veux, tu peux m'ajouter sur skype je pense qu'on réglera le prblème plus facilement :)  
 
skype: yoneoxus

Reply

Marsh Posté le 16-04-2015 à 09:32:34    

Je fais pas de skype. Ton pb peut tout à fait se régler sur ce forum plus des recherches sur le web. Tu peux déjà faire la vérif que je t'ai demandée concernant le reporting des erreurs de php.
 
Pour le passage dans les if/else de ton script, tu rajoutes des echo "...".


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed