probleme avec "header"

Répondre
Suta
le 01/03/2006 à 19:53
Suta
Bonjour,

j'ai un probleme avec la fonction "header".

voila mon code :

<?php

session_start();

if ($_SESSION['groupe']=="admin")
{

// on se connecte à notre base

include('../config.php');

// on teste si la variable du formulaire est bien déclarée
if (isset($_GET['id_del'])) {

// lancement de la requête pour effacer notre membre
$sql ='DELETE from forums WHERE id="'.$_GET['id_del'].'"';

// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// lancement de la requête pour effacer notre membre
$sql ='DELETE from forum_sujets WHERE correspondance_forum="'.$_GET['id_del'].'"';

// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// lancement de la requête pour effacer notre membre
$sql ='DELETE from forum_reponses WHERE correspondance_forum="'.$_GET['id_del'].'"';

// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on ferme la connexion à la base
mysql_close();

// on redirige vers l'accueil
header("Location: index.php");
exit;
}

else
{
echo 'variables non definies';
}

}

else
{
echo 'vous devez etre admin';
}
?>



mon header ne marche pas, la page reste toute blanche et bloqué sur elle meme.

par contre si je remplace le header par un echo ça marche (mais c'est pas ce que je veu :p)

merci d'avance pour votre aide
manu56
le 01/03/2006 à 20:31
manu56
Salut,
Soit ta un or die qui affiche une erreur, du coup le header marche plus, sinon soit p/e plus rigoureux dans l'écriture :
header('location:ta_page.php');

@+
black templar
le 01/03/2006 à 21:07
black templar
Exactement, tu ne peux plus mettre de header dès que php affiche quelque chose à l'écran. (avec "echo" ou "or die" ...)
Suta
le 01/03/2006 à 21:46
Suta
ok jai compris ou etait le probleme

apre mon ?> jai fait un retour a la ligne

donc ça marchait pas (c'est vicieu ^^)

merci a vous !
Bzh
le 02/03/2006 à 03:31
Bzh
Arf ! Les erreurs sont là plus par du temps toute bête !!!! On a beau passer 10 fois dessu, c'est pas pour cela qu'on la trouvera....

Je vois le exit() après la redirection, c'est typique du cas scolaire !!!!

On est pas à l'école, donc => exit() inutile !!!! Le script se termine forcement après la direction...

Bye...
LupusMic
le 02/03/2006 à 12:53
LupusMic
Non, le script continue l'exécution.

<?php

header('Location: /') ;

$fp = fopen('test', 'a') ;
fwrite($fp, 'Wrote...') ;
fclose($fp) ;

?>


J'ai bien une erreur de tentative d'accès au fichier (qui n'existe pas).

Regarde dans le error_log ;)

Par contre, la redirection s'effectue correctement.

Donc il faut bien sortir du script proprement.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Bzh
le 02/03/2006 à 19:15
Bzh
Nan ! Mais là je comprends pas du tout !!!!

$fp = fopen('test', 'a') ;
fwrite($fp, 'Wrote...') ;
fclose($fp) ;


Je ne vois pas comment sa peut s'exécuter si tu fais une redirection juste avant !!!

Lors d'unre redirection le script s'arrête et c'est bien normal !!!

Refais le test avec ça =>
<?php

header('Location: http://www.lephpfacile.com') ;

$fp = fopen('test', 'a') ;
fwrite($fp, 'Wrote...') ;
fclose($fp) ;

?>
LupusMic
le 02/03/2006 à 23:18
LupusMic
Pareil ;)

La ligne
header('Location: http://www.lephpfacile.com') ;

ne veut pas dire « redirige vers tel site », mais « modifie l'en-tête HTTP ».

Donc en toute logique, PHP ne fait que modifier l'en-tête.

N'oublions pas que PHP utilise un système de cache. Tant qu'une quantité de donnée n'est pas écrite sur la sortie standard, aucune données n'est envoyé.

Pour moi, c'est la logique même que la fonction header, quel que soit la valeur de son argument, n'entraîne pas la fin de l'exécution du script.

Pour t'en convaincre, fais le test !
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
zebden
le 03/03/2006 à 09:53
zebden
Lupus a raison, header n'entraine pas la fin d'execution du script.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre
LoadingChargement en cours