PHP Erreurs de redirection

Fermé
pol64 Messages postés 8 Date d'inscription samedi 31 mars 2007 Statut Membre Dernière intervention 16 mai 2008 - 14 mai 2008 à 17:11
pol64 Messages postés 8 Date d'inscription samedi 31 mars 2007 Statut Membre Dernière intervention 16 mai 2008 - 16 mai 2008 à 22:37
Bonjour,
Suite a de nombreuses recherche a propos des erreurs de redirection, j'arrive pas a trouver une réponse a mon problème. En effet, dans mon cas ce n'est memepas php qui me dit la traditionnelle erreur headers already send by etc etc c'est firefox en personne qui m'annonce avoir détecté une erreur de redirection! et IE 7 lui ne peut pas afficher la page !

Voici le script en question.
En fait il s'agit d'un script inclus au tout début de chaques pages de mon site, qui permet de connecter la base de donnée et de gérer d'éventuelles erreurs. J'ai en plus décidé d'insérer dans mon serveur free un petit fichier qui contient 0 si je décide que l'accès a mon site est autorisé, ou 1 si l'accès est bloqué, quand je fais de la maintenance notamment (je sais pas si c'est la bonne méthode mais cela fonctionnait plutot bien avant que je fasse une nouvelle version du site). C'est là que tout bugue parceque ceci fonctionne 1 fois sur 2 . Donc j'ai décidé de rediriger la page quand le fichier est illisible , c'est cette redirection qui foire !


if($fichier=@fopen("acces.txt","r"))
{$fichier = fopen("acces.txt", "r");
$acces = fread($fichier, 1);
if($acces == 1 && $_SESSION['admin']!=1)
header("Location: http://monsite.free.fr/erreur.php?i=2");
elseif(@mysql_connect("blablabla"))
mysql_select_db("blablabla");
else
header("Location: http://monsite.free.fr/erreur.php?i=1");
}else
header("Location: http:/monsite.free.fr/erreur.php?i=5");


Merci de votre aide !!
A voir également:

3 réponses

Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
14 mai 2008 à 17:39
Je suis pas sûr, mais essaye ça :
<?
if($fichier == @fopen("acces.txt", "r")) 
	{
	$fichier = fopen("acces.txt", "r"); 
	$acces = fread($fichier, 1); 
	
	if($acces == 1 AND $_SESSION['admin'] !== 1) 
		{
		header("Location: http://monsite.free.fr/erreur.php?i=2"); 
		}
	
	elseif(@mysql_connect("blablabla")) 
		{
		mysql_select_db("blablabla"); 
		}

	else
		{
		header("Location: http://monsite.free.fr/erreur.php?i=1"); 
		}
	}
else
	{
	header("Location: http:/monsite.free.fr/erreur.php?i=5");
	}
?>
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
14 mai 2008 à 17:42
salut,
là où il faut faire attention avec la fonction header, c'est que tu ne dois avoir aucun affichage avant le moment où tu fais ta redirection : pas de phrase, pas de message d'erreur, pas d'espace, ni de saut à la ligne ... Parfois un retour chariot entre 2 ligne dans le code peut suffir à mettre la grouille.
0
pol64 Messages postés 8 Date d'inscription samedi 31 mars 2007 Statut Membre Dernière intervention 16 mai 2008
16 mai 2008 à 22:37
Non ça ne marche toujours pas ^^
Mais c'est je comprends pas pourquoi mettre un ==. Moi ce que je cherche a savoir dans le if c'est si la commande a été exécutée pas si la variable fichier contient le contenu de fopen etc et non pas une coparaison qui retourne un booléen... du coup là, vu que fichier n'est pas initialisée et que fopen ne fonctionne pas , hop, ça charge la page avec des erreurs !

et pour ce qui concerne les headers, aucun affichage avant j'y avais pensé !

au fait dans le code que j'ai donné j'ai fais une erreur au dernier header j'ai oublié un slash !au [http://] ^^ mais c'est pas ça le problème!
0