IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur sur un formulaire d'ID


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Erreur sur un formulaire d'ID
    Bonjour, je suis en formation développeur web et web mobile, et en ce moment je créé mon premier formulaire d'identification (et naturellement j'ai problème que je n'arrive pas à comprendre).

    J'ai chercher sur le net mais avec tellement d'info je n'ai pour ainsi dire toujours pas compris ou était mon erreur.

    Il m'affiche ceci :

    Nom : image_2022-11-09_094710818.png
Affichages : 175
Taille : 12,9 Ko

    ET voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <!DOCTYPE html>
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
    <body>
     
    <!-- FORMULAIRE -->
     
                    <form  method="post">
        <div>
            <h1>IDENTIFICATION </h1>
            <label><b>Login :</b></label>
            <input type="text" id="login" name="user_input_login">
        </div>
        <div>
            <label><b>Password:</b></label>
            <input type="password" id="mail" name="user_input_password">
        </div>
        <input type="submit" id='submit' value='valider' >
    </form>
     
    </body>
     
    </html>
     
    <?php
     
    // 1 CONNEXION
    $mysqli = new mysqli ('localhost', 'root', '', 'projet_villes_site') ;
     
    //requete
    $result = $mysqli-> query('SELECT user_login, user_password FROM user WHERE user_login ="' .$user_input_login.'"');
     
    $row = $result-> fetch_array();
     
    // RECUPERATION DES VARIABLES
     
    if (isset($_POST['submit_form']))
    {
        $user_input_login = $_POST['user_input_login'];
        $user_input_password = $_POST['user_input_password'];
     
        // VERIFICATION SI LES VARIABLES SONT VIDES
     
        if ((empty($user_input_login)) OR empty($user_input_password))
        {
            $message = '<p class="error"> Vous devez saisir les informations demandées</p>';
        }
        else
        {
            /* Le login correspond-il à une valeur existant la base?
            Nous posons la requetes avec la clause WHERE portant sur le login */
     
            $result = $mysqli-> query('SELECT user_login, user_password FROM user WHERE user_login ="' .$user_input_login.'"');
     
            $row = $result-> fetch_array();
     
            if(!isset($row['user_login']))
            {
                /* La requete ne retourne aucun resultat pour ce login
                Nous posons la requete avec la clause WHERE portant sur le login */
                $message = '<p class="error">Erreur d\'identification. Vous n\'avez pas accés à cette page.</p>';
            }
            else
            {
                /* La requete retourne un resultat, le login existe dans la base. 
                Verifions avec la fondtion scrypt que le mot de passe saisi correspond à celui de la base */
                $user_login = $row['user_login'];
                $user_password = $row['user_password'];
                if (crypt($user_input_password, $user_password) != $user_password)
                {
                    $message = '<p class="error">Erreur d\'identification. Vous n\'avez pas accés à cette page.</p>';
                }
                else
                {
                /* L'utilisateur est reconnu.
                Nous creeons une variable de session 'user_login' puis redirigeons l'utilisateur vers la page d'accueil de l'administration avec la fonction header
                à laquelle nous passons en argument 'location:adminphp'.
                La variable de session 'user_login' sera ainsi transmise à la page admin.php */
                session_start();
                $_SESSION['user_login'] = $user_login;
                header('location:admin.php');
                        }
            }
            }
        }
     
     
        ?>
    Je ne vois pas ou est le problème dans cette ligne de code, la requête me parait bonne et le code correctement indenté.

    Etant donné que ce sont des cours, ces codes me sont fournis mais j'ai du mal (soit les recopier soit les adapter).

    Si quelqu'un peut m'eclairer. Etant donné que c'est mon premier formulaire j'aimerai tout de suite adopté la bonne méthode.

    Cordialement Sylvain

    PS: Merci pour l'attention et le taf que vous fournissez sur ce forum, vu tout ce que j'y trouve. C'est un truc de dingue

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    ce message signifie que la variable $user_input_login n'existe pas à la ligne indiquée.

    une fois que votre code fonctionne, il est très probable qu'il soit ouvert aux injections sql. donc si vous voulez allez plus loin et le sécuriser, renseignez vous sur les requetes préparées.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci mais je ne comprend pas, j'ai déclaré cette variable à la ligne 41. Elle devrait être bonne non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user_input_login = $_POST['user_input_login'];

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 646
    Points
    16 646
    Par défaut
    Salut
    Citation Envoyé par Sylvain1987 Voir le message
    ... j'ai déclaré cette variable à la ligne 41...
    Oui mais tu l'invoques ligne 33, donc elle n'est pas encore connue sur cette ligne.

  5. #5
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Bonjour

    Lignes 85 et 85, tu as deux accolades fermantes, est-ce correct ? À priori il n'en faut qu'une mais comme l'indentation de ton code n'est pas tout à fait correcte, je ne suis pas certain (pas encore mon premier café ingurgité).

  6. #6
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Points : 412
    Points
    412
    Par défaut
    D'apres ton code
    $result = $mysqli-> query('SELECT user_login, user_password FROM user WHERE user_login ="' .$user_input_login.'"');
    A la ligne 28.Il faut avant la requette sql déclare $user_input_login .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $user_input_login = $_POST['user_input_login'];

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Alors du coup maintenant ça me met un "undefined index". Merci du coup de main en tout cas je comprend mieux maintenant (je pensais que même si la variable était déclarée après, le script la prenait en compte).

  8. #8
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Points : 412
    Points
    412
    Par défaut
    Il y a deux possibilités.
    Tester si la variable POST existe par la fonction isset($_POST["name"]),
    ou dans le champ de ton formulaire
    <input type='text' name='name ' required/>.
    Le required force l utilisateur à remplir le champ.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci à tous pour vos réponses

  10. #10
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Points : 412
    Points
    412
    Par défaut
    Tiens nous au courant.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Ca fonctionne, merci beaucoup^^

    Ps : Même si cet avis importe peu : quelle prise de tête le php

  12. #12
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Pour l'heure c'est la même chose quelque soit le langage. Utiliser une variable avant même sa déclaration est une erreur de conception (dans le chef du développeur, toi donc ;-))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur sur mon formulaire
    Par auroore dans le forum Langage
    Réponses: 2
    Dernier message: 16/03/2010, 17h35
  2. Réponses: 7
    Dernier message: 12/02/2010, 11h48
  3. [MySQL] Gestion d'erreur sur un formulaire
    Par kate59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/01/2009, 09h34
  4. Erreur sur mon formulaire de contact
    Par Angeldu74 dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2008, 01h06
  5. Message d'erreur sur un formulaire de recherche
    Par FCL31 dans le forum Modélisation
    Réponses: 1
    Dernier message: 17/08/2007, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo