PB syntaxe header

Résolu
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   -  
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un soucis avec la syntaxe de mon header en php pour un serveur local.
j'utilise easyphp.
merci

40 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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.
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
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
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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>";
}

0
Thamior Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   47
 
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 :).
0

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

Posez votre question
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
donc où est l'erreur dans ce que j'ai écris
0
Thamior Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   47
 
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();
}
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
oui.
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
en fait maintenant ma page s'affiche mais rien ne se passe.
il me manquait un ;
help, le désespoir s'emparre de moi.
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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)?
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
dans connexion.php, ce sont les paramètres de connexion. et non, il je n'ai pas firefox, je suis en stage.
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
je viens d'installer firefox, et je n'ai aucune erreur, que des avertissements.
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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)
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
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.
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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 ?
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
ok, je le fais.
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
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']).
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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.
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
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
0
djadito Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857 > djadito Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Djadito, le problème est résolu, si tu as le même soucis je te prierai de lire la discussion jusqu'au bout.
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Et si tu enlève les sauts de ligne dans ton code pour ne pas laisser d'espace ça donne quoi ?
0
MISS97200 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   11
 
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.
0