Posez votre question Signaler

PB syntaxe header [Résolu]

MISS97200 187Messages postés 21 juin 2007Date d'inscription - Dernière réponse le 15 mai 2008 à 22:45
Bonjour,
j'ai un soucis avec la syntaxe de mon header en php pour un serveur local.
j'utilise easyphp.
merci
Lire la suite 

PB syntaxe header »

42 réponses
Réponse
+0
moins plus
Bonjour,

Et donc, quelle est cette syntaxe ? Tu n'as pas un exemple à nous donner (ton code) ?

Sans rien d'autre comme indication je dirais que tu tente d'envoyer des headers alors que ceux-ci ont déjà été envoyés, c'est l'erreur la plus courante.
Ajouter un commentaire
Réponse
+0
moins plus
voici mon code :

<?php require_once('connexion.php'); ?>
<?php session_start();
$_SESSION['utilisateur']='';
$_SESSION['mdp']='';
$verif='';
$utilisateur='';
$uti='';
$motpass='';


if (isset($_POST['valider']) )
{
if (isset($_POST['user']))
{
$uti = $_POST['login'];
$motpass = md5($_POST['pass']);
mysql_select_db($database_dbmarchpub, $dbmarchpub);
$verif_query=sprintf("SELECT * FROM user WHERE user='$uti' AND mdp='$motpass'");
$verif = mysql_query($verif_query, $dbmarchpub) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);


if (isset($utilisateur))
{
$_SESSION['connexion'] = 'ok'
header("Location:menup.php");
exit;
}
else
{
header("Location:index.php?erreur=login");
}
}
?>

voila ce que j'ai essayé de faire
Ajouter un commentaire
Réponse
+0
moins plus
Il s'agit donc bien de cette erreur.

Dans ton code :
if (isset($utilisateur))
{
$_SESSION['connexion'] = 'ok'
header("Location:menup.php");
exit;
}
else
{
header("Location:index.php?erreur=login");
}


Tu ne peux utiliser la commande PHP header qu'en début de script PHP

Je te propose de faire la même chose mais en javascript :
if (isset($utilisateur))
{
$_SESSION['connexion'] = 'ok'
echo "<script language='javascript'>document.location.replace('menu.php');</script>";
exit;
}
else
{
echo "<script language='javascript'>document.location.replace('index.php?erreur=login');</script>";
}

Ajouter un commentaire
Réponse
+0
moins plus
Tu ne peux utiliser la commande PHP header qu'en début de script PHP

Faux, le header doit se faire avant tout affichage de type echo, print ou print_r ainsi qu'avant toutes balises html.

Il est donc possible d'avoir un header après une vérification des données en PHP :).
Ajouter un commentaire
Réponse
+0
moins plus
donc où est l'erreur dans ce que j'ai écris
Ajouter un commentaire
Réponse
+0
moins plus
Est-ce cette page est appelé dans une autre page ?

Proposition d'une solution :
if (isset($utilisateur))
{
$_SESSION['connexion'] = 'ok'
header("location: menup.php");
exi();
}
else
{
header("location: index.php?erreur=login");
exit();
}
Ajouter un commentaire
Réponse
+0
moins plus
oui.
Ajouter un commentaire
Réponse
+0
moins plus
en fait maintenant ma page s'affiche mais rien ne se passe.
il me manquait un ;
help, le désespoir s'emparre de moi.
Ajouter un commentaire
Réponse
+0
moins plus
Rien ne se passe, c'est donc qu'il y a bien une erreur, donc quelque chose se passe :)
Est ce que tu as firefox ? Si oui navigue sur ta page en ouvrant le dégugger (Outil->Console d'erreur)
Si un message d'erreur apparait peux-tu nous le mettre ici ?
(une erreur du genre "headers already sent" peut être)

Qu'est ce qu'il y a au juste dans le fichier que tu inclus (connexion.php)?
Ajouter un commentaire
Réponse
+0
moins plus
dans connexion.php, ce sont les paramètres de connexion. et non, il je n'ai pas firefox, je suis en stage.
Ajouter un commentaire
Réponse
+0
moins plus
je viens d'installer firefox, et je n'ai aucune erreur, que des avertissements.
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Je persiste à dire que Header doit être utiliser avant tout autre chose (si possible bien sur).
Regarde un exemple ici :
http://fr.php.net/header
Notemment le paragraphe suivant : Example#6 header() doit toujours être appelé en premier

Il ne faut pas qu'il y ai de sortie PHP avant son appel, ne serait-ce qu'une ligne blanche au niveau du code PHP. Du moins c'est comme ça que j'interprète ce qu'il est écrit.

Essai donc de supprimer les lignes blanches dans ton code (pas d'espace ni de ligne vide)
Ajouter un commentaire
Réponse
+0
moins plus
il n'y a pas ça dans mon code, que des lignes de commentaires.
je viens de les supprimer et cela ne fonctionne toujours pas.
Ajouter un commentaire
Réponse
+0
moins plus
Es-tu sur que le programme passe bien dans la condition :
(isset($_POST['valider'])
?

Peux tu mettre un echo "blabla"; dedans (juste apres) et un echo "toto"; dans un else si cette condition n'est pas validée.
Peux tu mettre des traces un peu partout (dans chaque condition ou tu programme peux passer) afin de savoir exactement par où passe ton programme et donc comprendre son comportement ?
Ajouter un commentaire
Réponse
+0
moins plus
ok, je le fais.
Ajouter un commentaire
Réponse
+0
moins plus
je l'ai fais et tu as raison, le seul echo ('je ne passe pas') que j'ai mis, c'est ce que ça m'affiche. c'est le echo de mon if pour (isset($_POST['valider']).
Ajouter un commentaire
Réponse
+0
moins plus
Fais voir le code du formulaire avec lequel tu accède à la page que tu as déjà donné.
L'erreur vient soit du fait que tu as mal nommé ton bouton submit, du coup la valeur "valider" n'est pas référencée dans la variable globale $_POST, soit la méthode utilisée par ton formulaire est GET au lieu de POST (soit autre chose bien sur^^)

Je reviens demain mais peut-être que d'ici tu aura résolu ton problème.
Bonne chance.
Ajouter un commentaire
Réponse
+0
moins plus
voici le code, je n'ai toujours pas de solutions :

<?php require_once('connexion.php'); ?>
<?php session_start();
$_SESSION['utilisateur']='';
$_SESSION['mdp']='';
$verif='';
$utilisateur='';
$uti='';
$motpass='';


if (isset($_POST['valider']) )
{
if (isset($_POST['user']))
{
$uti = mysql_real_escape_string($_POST['user']);//variable du nom d'utilisateur
$motpass = md5($_POST['mdp']); //variable du mot de passe crypté
$verif_query=("SELECT * FROM user WHERE uti='$uti' AND mdp='$motpass'"); // requête sur la table user
$verif = mysql_query($verif_query, $dbmarchpub) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);


if ($utilisateur ==1)
{// On test s'il y a un utilisateur correspondant
$_SESSION['connexion'] = "ok";
header("location:menup.php");// redirection si OK
exit;

}
else
{
header("location:index.php?erreur=login");// redirection si utilisateur non reconnu
exit;
}
}
}
?>


J'espère que vous pourez m'aider
djadito - 15 mai 2008 à 20:16
Salut est ce que ta résolu ton problème?
g le meme blèm que le tien voila mon code:
<?phpinclude ("config_connection_var.php");
if(isset($_POST['id']))
$LOGIN=$_POST['id'];
else
$LOGIN="";
if(isset($_POST['pwd']))
$PWD=$_POST['pwd'];
else
$PWD="";
if(empty($LOGIN) OR empty($PWD))
{ // REDIRECTION VERS LA PAGE AUTHENTIFICATION
header("Location: ".$relogin);
}
else
{ $query = "SELECT * FROM internal_index WHERE Name='$LOGIN' AND Password='$PWD'";
$result = mysql_query($query) or die('Erreur SQL');
$affected_rows = mysql_num_rows($result);
if($affected_rows == 0)
{ // REDIRECTION VERS LA PAGE ERREUR
header("Location: ".$pagelogin); }
else { $_SESSION['login'] = $LOGIN;
$req1 = "SELECT User_Profile_ID FROM internal_index WHERE Name='$LOGIN' AND Password='$PWD'";
$res1 = mysql_query($req1) or die('Erreur SQL');
$rows1 = mysql_fetch_array($res1);
$req2 = "SELECT User_Profile FROM user_profile WHERE User_Profile_ID='$rows1[0]'";
$res2 = mysql_query($req2) or die('Erreur SQL');
$rows2 = mysql_fetch_array($res2);
if($rows2[0]==6)
{ header("Location: ".$menu_admin);}
else
{ if($rows2[0]==11)
{header("Location: ".$menu_chargé);}
}
}
}
?>
SVP si ta une solution informe moi,merci
kij_82 - 15 mai 2008 à 22:45
Djadito, le problème est résolu, si tu as le même soucis je te prierai de lire la discussion jusqu'au bout.
Ajouter un commentaire
Réponse
+0
moins plus
Et si tu enlève les sauts de ligne dans ton code pour ne pas laisser d'espace ça donne quoi ?
Ajouter un commentaire
Réponse
+0
moins plus
cela m'a marqué aucune base sélectionnée donc j'ai rajouté ceci:
mysql_select_db('marche_public');

après la ligne $motpass = md5($_POST['mdp']);

et là, quand j'entre le nom de l'utilisateur et le mot de passe qui sont dans la base de données, cela réaffiche la page.
Ajouter un commentaire
Ce document intitulé « PB syntaxe header » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook
PB syntaxe header - page 2