Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/04/2006, 17h40   #1
Invité régulier
 
Inscription : février 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 39
Points : 7
Points : 7
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:
Citation:
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 ??
koueletbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 17h54   #2
Invité régulier
 
Inscription : février 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 39
Points : 7
Points : 7
Voici le code du fichier php:
Citation:
<!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 !!!
koueletbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 19h12   #3
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
as-tu vérifié les fichiers .htaccess, car on peut ainsi interdire le post


et en retirant le enctype...
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 19h34   #4
Invité régulier
 
Inscription : février 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 39
Points : 7
Points : 7
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 !
koueletbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 19h59   #5
Membre actif
 
Avatar de Belegkarnil
 
Inscription : juin 2005
Messages : 289
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : juin 2005
Messages : 289
Points : 159
Points : 159
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.
Belegkarnil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 10h11   #6
Invité régulier
 
Inscription : février 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 39
Points : 7
Points : 7
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 !!!
koueletbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 10h14   #7
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
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.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 10h15   #8
Membre régulier
 
Avatar de Vesperal
 
Inscription : avril 2006
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 81
Points : 75
Points : 75
Suffit simplement de remplacer ton $_SERVER["PHP_SELF"] par le nom de ta page php actuelle (ma_page.php)
Vesperal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 10h22   #9
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
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.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2006, 10h58   #10
Invité régulier
 
Inscription : février 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 39
Points : 7
Points : 7
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:

Citation:
<?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 !!!
koueletbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2006, 11h07   #11
Invité régulier
 
Inscription : février 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 39
Points : 7
Points : 7
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:
Citation:
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 !
koueletbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h16.


 
 
 
 
Partenaires

Hébergement Web