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 :

PHP5: difficulté avec la méthode post


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 22
    Points
    22
    Par défaut PHP5: difficulté avec la méthode post
    Bonjour,
    je débute avec php en essayant de tester des codes récupérés à l'aide de google. Mon probleme survient lorsque j'exécute un formulaire qui implémente la méthode post. Voila le message renvoyé par le navigateur firefox:
    Forbidden

    You don't have permission to access /source-php5/C6form/< on this server.
    Ce probleme ne survient pas lorsque le formulaire utilise la get ! C'est dû à quoi ??? Pouvez-vous m'aider SVP ??

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Voici le code du fichier php:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http:// www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Formulaire traité par PHP</title>
    </head>
    <body>
    <form action= "<?= $_SERVER["PHP_SELF"] ?>" method="post" enctype="application/x-www-form-urlencoded">
    <fieldset>
    <legend><b>Infos</b></legend>
    Nom : <input type="text" name="nom" size="40" />
    <br />
    Débutant : <input type="radio" name="niveau" value="débutant" />
    Initié : <input type="radio" name="niveau" value="initié" /><br />
    <input type="reset" value="Effacer">
    <input type="submit" value="Envoyer">
    </fieldset>
    </form>
    <?php
    if(isset($_POST["nom"]) && isset($_POST["niveau"]))
    {
    echo "<h2> Bonjour ". $_POST["nom"]. " vous êtes ".$_POST["niveau"]." en PHP</h2>";
    }
    ?>
    </body>
    </html>
    O s'cour !!!

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    as-tu vérifié les fichiers .htaccess, car on peut ainsi interdire le post


    et en retirant le enctype...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Non il n'y a pas de fichiers .htaccess. En fait le pb survient lorsque la méthode post est utilisée avec la variable $_SERVER['PHP_SELF'] en action. Si l'action fait référence à un fichier php il n'y a pas de pb !!!! C'est vraiment bizarre !!!! Je n'y comprends pas grand chose !

  5. #5
    Membre actif Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Points : 205
    Points
    205
    Par défaut
    Enlève la variable $_SERVER['PHP_SELF'], normalement ca doit donner les valeur de POST dans la page en cours. Si ca ne marche pas, c'est que ton serveur doit refuser la méthode POST.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Et si j'enlève $_SERVER["PHP_SELF"], qu'est-ce-que je met à la place ? vu que le code php et le html sont dans le meme fichier ?? Dans tous les cas en ne mettant rien il ne fait rien !!!

  7. #7
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Pour ma part il me semble que l'enctype application/x-www-form-urlencoded est spécifique à la méthode GET... Vires-le pour voir, surtout qu'il ne sert à rien.

    Puis cette écriture <?= $var ?> est à proscrire.
    Consultant idéaliste.

  8. #8
    Membre régulier Avatar de Vesperal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Points : 81
    Points
    81
    Par défaut
    Suffit simplement de remplacer ton $_SERVER["PHP_SELF"] par le nom de ta page php actuelle (ma_page.php)

  9. #9
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Citation Envoyé par Vesperal
    Suffit simplement de remplacer ton $_SERVER["PHP_SELF"] par le nom de ta page php actuelle (ma_page.php)
    Rien à voir.

    L'idéal serait de passer par un $_SERVER['REQUEST_URI'] pour conserver d'éventuel paramètres d'url.
    Consultant idéaliste.

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    C'est génial !! ça marche en enlevant $_SERVER["PHP_SELF"] complètement c'est à dire avec balises de début et de fin de php !! (ce que je n'avais pas fait avant !)
    Maintenant j'ai un autre problème ! Un formulaire de connexion à une base de données avec ouverture de session. Lorsque je clique sur le bouton de connexion rien ne se passe! Voici le code:

    <?php

    require 'config.inc.php';
    //require 'functions.php';


    // Connexion à la base de données
    $db_link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
    // Echec lors de la connexion ?
    if( !$db_link ) trigger_error('Connexion à la base de donnée sur `'.DB_HOST.'` échouée pour \''.DB_USER.':'.DB_PASS.'\'', E_USER_ERROR);
    // Sélection de la base
    mysql_select_db($BD,$db_link) or die("Impossible de sélectionner la base ".$BD);



    function login($login, $password) {
    //if ( strlen($login) < 4 ) return false; // Si le login est inférieur à 4 charactères, on arrète tout.
    $password = md5($password);
    $login = trim($login);
    // Le plus important : la commande de query. J'utilise strtolower pour supprimer la casse.
    $query = mysql_query("SELECT COUNT(*) FROM utilisateur WHERE pseudo = '$login' AND mdp = '$password'");
    $data = mysql_fetch_row($query);

    // Si il existe un enregistrement (le login étant unique pour chaque personne), alors c'est bon
    return ( $data[0] == 1 ) ? true : false;

    }

    // Si le formulaire est soumis
    if ( isset($_POST["submit"]) ) {
    if ( login($_POST["login"], $_POST["password"] )) { // Si la fonction ci-dessus est TRUE (vrai)
    session_start();
    $_SESSION["logged_in"] = true; // On met ca en session
    header('Location: private.php');
    die(); // Etre sûr que la fin de cette page ne sera pas pris en compte
    } else {
    $warning = "Le couple login/password que vous avez entrez est incorrect"; // si la fonction renvoit false, on se fait une variable d'erreur
    echo '<p>'.$warning.'</p>';
    }
    }

    if ( isset($warning) ) { // Test de présence de la variable d'erreur
    echo '<p>'.$warning.'</p>';
    }

    // Affichage du formulaire
    ?>

    <html>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http:// www.w3.org/TR/html4/strict.dtd">
    <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Formulaire traité par PHP</title>
    <TITLE> Formulaire de connexion</TITLE>
    </HEAD>
    <BODY>
    <form action="" method="POST">
    <fieldset>
    <legend>Login</legend>
    <label for="login">Login :</label>
    <input type="text" name="login" id="login"/>
    <label for="password">Mot de passe :</label>
    <input type="password" name="password" id="password"/>
    <input type="submit" name="log" value="Se connecter"/>
    </fieldset>
    </form>
    </BODY>
    </html>
    Qu'en pensez vous ?? Ou est le probleme ?? Merci d'avance !!!

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Génial !!! Le pb est qu'il n'y a pas transfert de données entre le formulaire et le fichier php: résultat il ne fait rien !! Jai changé le code concerné comme suit:
    if(isset($_POST["login"]) && isset($_POST["password"])) {//VOILA OU ETAIT LE PROBLEME
    $login = mysql_escape_string($_POST['login']);
    $password = mysql_escape_string($_POST['password']);
    echo $login," ",$password;
    if (login($_POST["login"], $_POST["password"] )) { // Si la fonction ci-dessus est TRUE (vrai)
    session_start();
    $_SESSION["logged_in"] = true; // On met ca en session
    header('Location: private.php');
    die(); // Etre sûr que la fin de cette page ne sera pas pris en compte
    } else {
    $warning = "Le couple login/password que vous avez entrez est incorrect"; // si la fonction renvoit false, on se fait une variable d'erreur
    // echo '<p>'.$warning.'</p>';
    }
    }
    et plus de problemes, enfin pour le moment !

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

Discussions similaires

  1. [Mail] Pb avec la méthode post dans un mail
    Par viny dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2006, 11h59
  2. Plusieurs formulaires dans un fichier avec plusieurs méthodes post
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2006, 15h04
  3. Réponses: 7
    Dernier message: 08/06/2006, 14h26
  4. Réponses: 1
    Dernier message: 15/05/2006, 18h05
  5. php5: difficulté avec la fonction header
    Par koueletbak dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2006, 19h44

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