[PHP] probleme méthode post

Fermé
lord seregon Messages postés 52 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 29 janvier 2018 - 23 févr. 2011 à 11:05
lord seregon Messages postés 52 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 29 janvier 2018 - 24 févr. 2011 à 13:19
Bonjour,

Je suis en train de codez un site PHP, mais j'ai un problème sur la connexion je n'arrive pas à récupérer mes champs en méthode POST, alors qu'en méthode GET il n'y a aucun problème !

Voici mon code :
If(!isset($_SESSION['utilisateur']) && !isset($_POST['Nom']))
        {
            // on affiche le formulaire
            echo '<div id="connexion">';
            echo "<!-- formulaire de connexion -->";
            echo '<form name="connect" method=POST Action = '.$page.'>';
            ?>

            <!-- Champs pour le Login -->
            Login&nbsp;: <br />
            <input type="text" name="Nom" value="" /><br />

            <!-- Champs pour le mot de passe -->
            Mot de Passe&nbsp;:<br />
            <input type="password" name="mdp" value="" /><br />

            <!-- Validation-->
            <input type="submit" value="Envoyer" />


            // on referme les balise
            </form> </div>

   <?php     }



A voir également:

6 réponses

Mayous29 Messages postés 38 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 25 février 2011
23 févr. 2011 à 15:26
Bonjour,

Dans la déclaration de ton formulaire, met des guillemets autour POST :

echo '<form name="connect" method="POST" Action = '.$page.'>';

Je pense que ça devrait normalement régler ton problème...
0
lord seregon Messages postés 52 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 29 janvier 2018
23 févr. 2011 à 15:45
J'ai déjà essayer avec des guillemet autour de POST sa marche pas mieux alors que GET fonctionne avec et sans !
0
Mayous29 Messages postés 38 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 25 février 2011
23 févr. 2011 à 16:02
Comme l'a dit Reivax962,

Met aussi des guillemets autour de $page : "'.$page.'"
Et ça serait en effet pas mal de voir le code $page.
D'ailleurs y'a quoi dans ta variable $page?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
23 févr. 2011 à 15:47
Bonjour,

Avec les guillemets, c'est quand même plus propre, y compris autour de $page.
Quant à ton problème, peux-tu nous montrer de quelle façon tu récupères ces variables dans $page ?

Xavier
0
Bonjour,

essai comme ça :

echo "<form name=\"connect\" method=\"POST\" Action=\".$page.\">";

Aurél.
0
lord seregon Messages postés 52 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 29 janvier 2018
Modifié par lord seregon le 24/02/2011 à 09:41
J'ai essayer ta méthode bob633, mais pas plus de résultat, Reivax962 même en les affichant avec un echo simple, ça ne fonctionne pas, une fois que je pourrais les affiché je pourrait me débrouiller pour la suite.

Ce que je n'est pas préciser c'est que j'ai mis sa dans une fonction que j'inclus dans toute mes pages, c'est la qu'intervient ma variable $page : c'est l'adresse de ma page courante

Je viens d'essayer en récupérant ma variable dans ma page 'principale', celle qui est affiché dans laquelle j'appelle ma fonction connexion, et sa fonctionne sa veut dire que je ne peut pas la récupérer dans une fonction ?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
24 févr. 2011 à 09:49
Donne-nous le code complet d'une page, s'il te plait...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lord seregon Messages postés 52 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 29 janvier 2018
24 févr. 2011 à 10:03
Voila le code, c'est la page index, depuis mon dernier message il a évoluer.

<!DOCTYPE html>
<html>
    <?php
        session_start();
        // on se connecte à la BDD
        include('connexion_db.php');
        $connexion = connexion();
    ?>
    <head>
            <title>Covoiturer sur Fleyriat</title>
            <link rel="stylesheet" type="text/css" href="MonCss.css">
    </head>
    <body>
        <p id="bandeau">
                Mon Bandeau
                <?php
                    include('Connexion_champs.php');
                    If(!isset($_SESSION['utilisateur']) && !isset($_POST['login']))
                    {
                        connect("Index.php");
                    }
                    else
                    {
                        If(isset($_POST['login']) && !isset($_SESSION['utilisateur']))
                        {
                            connecting($_POST['login'], $_POST['pw'], $connexion, "Index.php");
                        }
                        else
                        {
                            connected($_SESSION['nom']);
                        }
                    }
                ?>
        </p>


        <div id="menu">
            <?php
                include("menu.php");
            ?>

        </div>

        <div id="corps">
                <h1> Bienvenue sur le site de covoiturage </h1>

                <?php
                    // on compte le nombre d'utilisateur
                    $resultat = mysql_query("Select count(Util_Code) from utilisateur;", $connexion);
                    // si il y a une r?ponse, on l'affiche
                    if($ligne = mysql_fetch_array($resultat))
                    {
                            echo ("Il y a ".$ligne[0]." utilisateurs enregistr?s.");
                            echo ("<br />");
                    }
                    $resultat = mysql_query("Select count(T_Code) from trajet;", $connexion);
                    if($ligne = mysql_fetch_array($resultat))
                    {
                            echo("Il y a ".$ligne[0]." trajets ajout?s.");
                            echo ("<br />");
                    }
                ?>
        </div>
    </body>
</html>


Et voila mes fonctions :

<?php
// fonction pour afficher le formulaire de connexion
    function connect($page)
    {        
        // alors on affiche le formulaire
        echo '<div id="connexion">';
        echo "<!-- formulaire de connexion -->";
        echo "<form name=\"connect\" Action =".$page." method=\"POST\" >";
        ?>
        <!-- Champs pour le Login -->
        Login&nbsp;: <br />
        <input type="text" name="login" value="" /><br />
        <!-- Champs pour le mot de passe -->
        Mot de Passe&nbsp;:<br />
        <input type="password" name="pw" value="" /><br />
        <!-- Validation-->
        <input type="submit" value="Envoyer" />
        <?php
        // on referme les balise
        echo "</form> </div>";
    }
    // sinon
    Function connecting($login, $pw, $connexion,$page)
    {
        //si on essaye de se connecter
        // on assgigne la requete
        $requete="Select Util_Code, Util_Nom FROM Utilisateur where util_nom = ".$login." AND util_mdp = ".md5($pw).";";
        // on execute la requete
        $resultat=mysql_query($requete, $connexion);
        // si il y a des lignes retourné
        if(mysql_num_rows($resultat)<>false)
        {
            // on lit les resultat
            $ligne=mysql_fetch_array($resultat);
            // on récupère le nom et le numero de l'utilisateur dans la variable session
            $_SESSION["utilisateur"]=$ligne[0];
            $_SESSION["Nom"]=$ligne[1];
            // et on affiche un message de bienvenue
            echo "Bienvenue ".$_SESSION['nom'];
        }
        else
        {
            // si il y a une erreur on affiche un message
                    // puis on se recharge la page
                    header('location:'.$page);
        }
    }
    Function connected($Nom)
    {
        // si on est connecté on affiche un message de bienvenue
        echo "Bienvenue ".$Nom;
    }

?>
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
24 févr. 2011 à 11:39
OK, alors j'ai deux remarques :

1 - attention, ton code est sujet aux attaques par injection SQL, car ut utilise directement $_POST['login'] dans ta requête SQL. Pour s'en prémunir, tu dois y appliquer la fonction mysql_real_escape_string() https://www.php.net/manual/fr/function.mysql-real-escape-string.php

2 - je crois que j'ai compris d'où vient le problème.
C'est vraiment idiot : il y a une espace entre Action et le = : il n'en faut pas !
Cela devient donc :
echo "<form name='connect' action='$page' method='POST' >";


Xavier
0
lord seregon Messages postés 52 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 29 janvier 2018
Modifié par lord seregon le 24/02/2011 à 13:20
Merci pour ces conseil.

Mais même en enlevant l'espace il n'a pas envie !

Pour les injections sql je suis au courant mais vu que je viens de reprendre le PHP donc je voulais y aller pas à pas !
0