Page 1 sur 1
ouvrir une page
Posté : 03 nov. 2006, 16:49
par sophie2097
Bonjour à tous,
Voilà je voudrais ouvrir une nouvelle page .php à partir d'une page .php:
Code : Tout sélectionner
if(test==1)
{
header("Location: http://www.monsite.com/membre.php/");
}
else
{
echo "vous n'êtes pas autorisé à rentrer!"
}
voilà l'erreur affichée :
Warning: Cannot modify header information - headers already sent
quelqu'un sait-il m'aider? merci.
Posté : 03 nov. 2006, 16:52
par Vikchill
Pour utiliser header(), il faut que rien n'ait été envoyé au client (echo, print, etc...), pas même un petit espace.
Posté : 03 nov. 2006, 16:57
par sophie2097
ok je comprend. comment puis je alors faire pour ouvrir une nouvelle page à partir du code ci-dessus?
Posté : 03 nov. 2006, 17:07
par Vikchill
ok je comprend. comment puis je alors faire pour ouvrir une nouvelle page à partir du code ci-dessus?
Ben comme dit, le mettre avant tout envoi d'affichage vers le poste client, tu comprends? Il ne faut pas que tu aies d'echo, de print, ou tout autre fonction d'affichage avant, ni d'html.
Posté : 03 nov. 2006, 17:09
par albat
Peux-tu nous montrer le code de ta page ?
Posté : 03 nov. 2006, 17:25
par sophie2097
mais puisque je dois faire un test IF avant, je ne saurais pas le mettre avant. je suis perdue là
Posté : 03 nov. 2006, 17:30
par albat
Ce n'est pas le IF qui est en cause.
On peut tout à fait effectuer un test avant de rediriger une page avec un header.
Avec ton code, ce sera tout de même lus facile pour t'expliquer...
Posté : 03 nov. 2006, 17:39
par sophie2097
Code : Tout sélectionner
<?php
session_start();
require ('connect.php');
?>
<html>
<head>
<title><?php echo $connexion ?></title>
</head>
<body>
<?php
// on récupère les données pour la connexion
$nom = $_GET['Nom'];
$query_connexion = "SELECT * FROM GENERALISTE WHERE nom='$nom' ";
$mysql_result = mysql_query($query_connexion) or die(mysql_error());
if ($ligne = mysql_fetch_array($mysql_result))
{
// on récupère les infos du membre connecté
$_SESSION['nom'] = ($ligne["nom"]);
if(test==1)
{
header("Location: http://www.monsite.com/membre.php/");
}
else
{
echo "vous n'êtes pas autorisé à rentrer!"
}
Posté : 03 nov. 2006, 17:49
par albat
Pour utiliser header(), il faut que rien n'ait été envoyé au client (echo, print, etc...),
pas même un petit espace.
ok je comprend
Quand je vois ton code, je ne suis pas certain que tu aies bien compris...
La règle est : Ne rien envoyer au client avant l'appel du header() !
Et ça alors ? [-X
<html>
<head>
<title><?php echo $connexion ?></title>
</head>
<body>

Un truc : Place toujours le script contenant un header au sommet de ta page.
Tu verras, ça marche beaucoup mieux...

Posté : 03 nov. 2006, 18:04
par sophie2097
oui en effet, c'est une erreur de ma part. tt à l'heure jai essayé en supprimant le echo. et ca n'a rien changé. c'est pourquoi je l'ai ensuite remis.
Posté : 03 nov. 2006, 18:21
par albat
Visiblement, on ne se comprend pas...
Certes, un echo avant un header() provoque une erreur.
Mais la présence de la moindre balise HTML (<html>, <head>, <body>, etc.),
le moindre saut de ligne ou la moindre espace provoque aussi une erreur !
C'est donc toute la partie du code que j'ai recopiée dans mon message précédent qui pose problème.
Posté : 03 nov. 2006, 18:27
par albat
Pour aller plus vite, voici ton code corrigé.
Regarde bien les commentaires que j'y ai insérés...
<?php
session_start();
require ('connect.php');
$nom = $_GET['Nom'];
$query_connexion = "SELECT * FROM generaliste WHERE nom='".$nom."'"; // On extrait les variables de la chaîne de caractères
$result = mysql_query($query_connexion) or die(mysql_error()); // mysql_result est un mot réservé, il ne peut être utilisé pour nommer une variable
if ($ligne = mysql_fetch_array($mysql_result))
{ $_SESSION['nom'] = ($ligne["nom"]); // Où se ferme cette accolade ?
if (test==1)
{ header("Location: http://www.monsite.com/membre.php/");
}
else
{ echo "vous n'êtes pas autorisé à rentrer!"
}
?>
<html>
<head>
<title><?php echo $connexion ?></title>
</head>
<body>
...
PS : Le SELECT * est à proscrire...