Problème avec HEADER et $_SERVER['PHP_SELF']

Signaler
Messages postés
7
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
9 juin 2005
-
Messages postés
83
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
17 mai 2005
-
salut à tous,
voilà je developpe un petit script en php qui est le suivant :

<?php
if (isset($_POST['submit']))
{
//Mon fichier "mysql_connect2.php" contient la fonction de Connexion à la base de données
require_once ('mysql_connect2.php');

//Je crée une fonction pour échapper les données.
function echappement ($data)
{
if (ini_get('magic_quotes_gpc'))
{
$data = stripslashes($data);
}

return mysql_escape_string($data);
} //fin de la fonction !!


//traitement du formulaire
$message = NULL;


//et je commence les vérifications, en commençant par le nom d'utilisateur.
if (empty($_POST['login']))
{
$l = FALSE;
$message .= 'Tu as oublié de saisir ton Pseudo.

';
}

else
{
$l = echappement($_POST['login']);
}



//je vérifie l'existence de l'ancien mot de passe
if (empty($_POST['mot_de_passe']))
{
$mdp = FALSE;
$message .= 'Tu as oublié de saisir ton mot de passe.

';
}

else
{
$mdp = echappement($_POST['mot_de_passe']);
}



if ($l && $mdp)
{
//Si tout est correct, j'enregistre l'utilisateur dans la base de données



// je vérifie si l'utilisateur existe déjà $rq "SELECT id_utilisateur, prenom FROM utilisateurs WHERE (login '$l' AND mot_de_passe = PASSWORD('$mdp'))";


//executer la requête
$result = mysql_query ($rq);
$ligne = mysql_fetch_array($result, MYSQL_NUM);
setcookie('nom', $ligne[1], time()+3600, '/', 0);
setcookie('id_user', $ligne[0], time()+3600, '/', 0);
header ("location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) ."/accueil.php");
exit(); //et je termine le script
}
else
{
$message = "Le nom d'utilisateur et le mot de passe que tu a entré ne correspondent à aucun utilisateur enregistré.

";
}



//je referme la connexion avec la base de données
mysql_close();
}


$titre_page = "login";
include ('entete.inc');



// ici j'affiche éventuellement de nouveau message d'erreur
if (isset($message))
{
echo "$message";
}
//Ensuite on affiche le formulaire
?>


<form action="<? echo $_SERVER['PHP_SELF'] ; ?>" method ="post">
<fieldset>
<legend>Tu dois remplir ce formulaire pour changer ton mot de passe.</legend>



Pseudo :
"/>


Saisi ton Mot de passe:



</fieldset>




</form>
<!-- Fin du formulaire -->


<?
// fin de l'instruction conditionnelle principale
include ('pied_page.inc'); //j'ai inclu le pied de page
?>

mais mon problème est que qu'a chaque fois que je valide le formulaire, (toute condition réuni) ça m'affiche une page disant que la page est introuvable et tout , en fait je pense que l'erreur vient des occurences à $_SERVER ['PHP_SELF'] et
$_SERVER[' HTTP_POST'], (je les ai mis en rouge), ou bien même qu'elle provient de mon '' HEADER'' mais je ne vois pas comment la corrigée.

Est-ce que quelqu'un peut m'aider stp ? paske c'est vraiment casse tête

2 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,



pourquoit u n'affiches pas le resultat de ton header, pour voir ce que ca donnne ?

Parce que moi il me parait curieux lol...
Messages postés
83
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
17 mai 2005

Salut



Il me semble que les header doivent être les premiers à être envoyé à la page

Si tu veux faire d'autres traitements avant d'envoyer les entêtes, utilise les fonctions ob_start et ob_end_flush.

Ils te permette de mettre le contenu de ta page en cache et seul les
entêtes sont envoyées. Une fois les traitements réalisés, tu libère
avec ob_end_flush qui envoie le reste de la page au navigateur.



Avec cette méthode, tu est sur que les entêtes sont bien envoyés en premier à la page



A bientôt et bon code

Vapula