Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème nouvelle page de login

Ne se connecte pas à la base

17 mars 2019 à 17:16:42

J'ai fait du php sous linux debian et dernièrement j'ai fait la mise a jour du système debian ainsi que php et mysql. Avant cette mise à jour mon script de login fonctionnait bien et plus maintenant.

Voici mon code

<html>

<form action="connect.php" method="post">
 
    <a href="register.php">S'enregistrer dans la Cave a Vin</a><br><br>

    Email: <input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities($_POST['email']); ?>" /><br>
    
    Mot de passe: <input type="password" name="mdp" value="<?php if (isset($_POST['mdp'])) echo htmlentities($_POST['mdp']); ?>" /><br>
    
    <input type="submit" name="connexion" value="Connexion" /><br>
</form>

</html>

<?php
/*
Page: connexion.php
*/
session_start(); // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION

$hote = '';
$utilisateur = '';
$mdp = '';
$nombdd = ''; // Nom de la base de données
$bdd = new PDO("mysql:host=$hote;dbname=$nombdd",$utilisateur, $mdp);
       
            if(isset($_POST['connexion'])) { // si le bouton "Connexion" est appuyé
    // on vérifie que le champ "Pseudo" n'est pas vide
    // empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
    if(empty($_POST['email'])) {
        echo "Le champ email est vide.";
      // header('Location: index.php');
    } else {
        // on vérifie maintenant si le champ "Mot de passe" n'est pas vide"
        if(empty($_POST['mdp'])) {
            echo "Le champ Mot de passe est vide.";
          // header('Location: index.php');
        } else {
            // les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
            $email = mysqli_real_escape_string($_POST['email'], ENT_QUOTES, "ISO-8859-1");
         
          // le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL


            $mdp=md5($_POST['mdp']);
  
            $Requete = mysqli_query("SELECT * FROM Utilisateur WHERE email = '".$email."' AND mdp = '".$mdp."'");
                // si il y a un résultat, mysqli_num_rows() nous donnera alors 1
                // si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
                if(mysqli_num_rows($Requete) != 0) {
                 $_SESSION['email'] = $email;
              // echo  $_SESSION['login'];
            //   session_register('login');
              header('Location: panier4_1.php');
                //    echo "Le pseudo ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
                } else {
                   echo "Le mail ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
                    //on ouvre la session avec $_SESSION:
                    // $_SESSION['pseudo'] =$Pseudo;
                     //  la session peut être appelée différemment et son contenu aussi peut être autre chose que le pseudo
                //  echo "Vous êtes à présent connecté !";
             //   header('Location: index.php');
               
                }
            }
}
 }
//}
?>

  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2019 à 17:23:07

Bonjour,

Merci d'utiliser la balise code Image

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

17 mars 2019 à 18:51:24

Excuse moi

<html>

<form action="connect.php" method="post">
 
    <a href="register.php">S'enregistrer dans la Cave a Vin</a><br><br>

    Email: <input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities($_POST['email']); ?>" /><br>
    
    Mot de passe: <input type="password" name="mdp" value="<?php if (isset($_POST['mdp'])) echo htmlentities($_POST['mdp']); ?>" /><br>
    
    <input type="submit" name="connexion" value="Connexion" /><br>
</form>

</html>

<?php
/*
Page: connexion.php
*/
session_start(); // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION

$hote = '';
$utilisateur = '';
$mdp = '';
$nombdd = ''; // Nom de la base de données
$bdd = new PDO("mysql:host=$hote;dbname=$nombdd", $utilisateur, $mdp);


       
            if(isset($_POST['connexion'])) { // si le bouton "Connexion" est appuyé
    // on vérifie que le champ "Pseudo" n'est pas vide
    // empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
    if(empty($_POST['email'])) {
        echo "Le champ email est vide.";
      // header('Location: index.php');
    } else {
        // on vérifie maintenant si le champ "Mot de passe" n'est pas vide"
        if(empty($_POST['mdp'])) {
            echo "Le champ Mot de passe est vide.";
          // header('Location: index.php');
        } else {
            // les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
            $email = mysqli_real_escape_string($_POST['email'], ENT_QUOTES, "ISO-8859-1");
         
          // le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
            $mdp=md5($_POST['mdp']);

            $Requete = mysqli_query("SELECT * FROM Utilisateur WHERE email = '".$email."' AND mdp = '".$mdp."'");
                // si il y a un résultat, mysqli_num_rows() nous donnera alors 1
                // si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
                if(mysqli_num_rows($Requete) != 0) {
                 $_SESSION['email'] = $email;
                    header('Location: panier4_1.php');
                } else {
                   echo "Le mail ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
               
                }
            }
     }
 }
?>




-
Edité par Lamecarlate 17 mars 2019 à 19:05:20

  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2019 à 19:07:00

J'ai modifié ton message - la partie avec <pre> n'est valable que si on est en mode markdown. Si tu ne sais pas ce que c'est, tu n'es pas dans ce mode :)

Ceci dit, éditer un message pour le colorer, ça marche de moins en moins sur le forum... Le plus efficace serait probablement que tu postes un nouveau message, en utilisant bien le bouton </> de la barre d'outils et en choisissant XML/XHTML.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

18 mars 2019 à 12:08:49

Bonjour,

Je remarque que tu ne précise pas ce qui ne fonctionne pas. Est-ce la session? la requête? l'affichage? l'ordinateur? le clavier? la chaise? 

Sinon ton session_start() est mal placé. Tu le dit toi même "// à mettre tout en haut du fichier .php" donc met le tout en haut du fichier.
  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2019 à 16:16:54

Bonjour

C'est au niveau de la connexion à la base de donnees. Les tests champs mail et mot de passe vide marchent bien. Quand je mets un faux mot de passe ou le mot de passe juste il saute directement à  le

mail ou le mot de passe est incorrect, le compte n'a pas été trouvé.

Avant la mise a jour du debian et la mise a jour de php et mysql tout fonctionnait bien.

Merci

  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2019 à 21:25:05

Bonsoir,

Ne pas mélanger PDO et mysqli ....

Activer les erreurs PDO (cf ma signature)

"// le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL"

Ceci est archi faux, il est utiliser à l'affichage pour protéger des balises html.

  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2019 à 7:10:49

Bonjour,

Pour la connexion de la base j'ai essayé de cette façon mais ça ne marche pas non plus.

$mysqli =  mysqli_connect("", "", "", "");


            // on vérifie que la connexion s'effectue correctement:


          if (!$mysqli){


              echo "Erreur de connexion à la base de données.";


           } else {


                // on fait maintenant la requête dans la base de données pour rechercher si ces données existe et correspondent:


                $Requete = mysqli_query("SELECT * FROM Utilisateur WHERE email = '".$email."' AND mdp = '".$mdp."'");
              

  • Partager sur Facebook
  • Partager sur Twitter
20 mars 2019 à 13:21:44

Bonjour,

J'ai fait un script pour voir si j'arrive à me connecter à la base et afficher quelques données de la table utilisateur et ça marche bien. Je n'arrive pas à trouver le problème pour le script de login. Si c'est un problème au niveau des variables ou autres. Merci

<?php

$db = mysqli_connect('localhost', '', '', '');

if (mysqli_connect_errno()) {
    printf("�chec de la connexion : %s\n", mysqli_connect_error());
    exit();
}
 
  $Requete = mysqli_query($db,"SELECT * FROM Utilisateur");

            while ($ligne = mysqli_fetch_array($Requete))
     {
    echo "<tr><td>" . $ligne['nom'] . "</td><td>". $ligne['prenom']. "</td></tr>";
 
    }


?>
  • Partager sur Facebook
  • Partager sur Twitter
20 mars 2019 à 14:07:10

Mes messages plus haut n'étaient pas là pour faire joli. Merci de les prendre en compte et de mettre le code en forme.
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

20 mars 2019 à 14:13:36

J'essaye de modifier mon message en markdown et faire l'aperçu avant d'envoyer mais j'arrive pas. Je crois que c'est le navigateur Mozilla qui m'embête. Et là maintenant je ne plus envoyer un nouveau message. Seulement après 24 heures

-
Edité par JeanHauser1 20 mars 2019 à 14:39:26

  • Partager sur Facebook
  • Partager sur Twitter
20 mars 2019 à 15:22:03

Tu es en markdown ?
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

20 mars 2019 à 15:34:47

Ça y est c'est. J'arrive bien à me connecter à la base. Donc le problème c'est pas ça.

<?php

$db = mysqli_connect('localhost', '', '', '');

if (mysqli_connect_errno()) {

printf("�chec de la connexion : %s\n", mysqli_connect_error());
exit();

}

       $Requete = mysqli_query($db,"SELECT * FROM Utilisateur"); 

        
         
            while ($ligne = mysqli_fetch_array($Requete))
 { 
echo "" . $ligne['nom'] . "". $ligne['prenom']. ""; 

}

?>

-
Edité par JeanHauser1 20 mars 2019 à 15:37:25

  • Partager sur Facebook
  • Partager sur Twitter
22 mars 2019 à 14:31:31

Bonjour Je voulais poster un nouveau message en markdown avec un autre code que j'ai trouvé dans le net mais ça n'as pas envoyé comme il fallait. Toujours pas résolu le problème. Merci

-
Edité par JeanHauser1 22 mars 2019 à 14:50:11

  • Partager sur Facebook
  • Partager sur Twitter