Je souhaiterais avoir un éclaircissement sur mon code, en effet, je ne comprends pas, en étant chez OXYD mon code fonctionnait, et en migrant sur OVH, mon code merde serait-ce un problème de compatibilité ???
Voici mon code :
<?php $page_to_check = "_" . $_GET['page'] . ".inc.php"; // La page existe if(fopen($page_to_check, "r")) { ?>
<?php exit(0); } // La page n'existe pas else { header("Location: accueil.html"); exit(0); } ?>
Petites précisions :
Mes pages "includes" sont nommées comme ceux-ci : _monfichier1.inc.php
Et ce système était compatible URL Rewriting ce qui explique le "else" sur accueil.html
Question pourquoi sur mon site, ça m'affiche ce message :
Warning: fopen(_.inc.php) [function.fopen]: failed to open stream: No such file or directory in /home.10.3/nouvelle/www/index.php on line 4
Warning: Cannot modify header information - headers already sent by (output started at /home.10.3/nouvelle/www/index.php:4) in /home.10.3/nouvelle/www/index.php on line 66
fopen() ? Tu veux lire le contenu de ce fichier, ou tu veux juste tester s'il existe ?
Il me semble que file_exists() est BEAUCOUP plus adapté... Et te retournera false si la page n'existe pas (Donc te redirigera sur l'index).
Je suppose que le problème vient d'un changement de version de Php... Avec fopen() qui retournait false si la page n'existait pas sur ton ancien hébergeur, et qui, chez OVH, retourne simplement une erreur.
Bref : if (file_exists($page_to_check)), et non pas if (fopen($page_to_check,'r'))
Tu fais un fopen() d'un fichier qui n'existe pas. Ton va renvoi une erreur de type WARNING, et le script continu à être executé.
Comme le fichier n'existe pas, tu va arrier sur ta redirection: le header("location: ....").
Comme tu le sais surement, aucun bout de html doit être la Avant le header. Or la tu as du HTML qui a été envoyé avec le WARNING !
Solution:
if(isset($_GET['page']) { //code pour ouvrir ton fichier... bla bla fopen($page_to_check, "r"); // le reste du code .... //..... } else// Tu n'as pas de $_GET[page], donc tu va rediriger. { header("Location: accueil.html"); exit(0); }
Avec ca, tu ne devrais plus avoir d'erreur
A+
EDIT: Sinon, une solution moin propre qui peut marcher mais que je déconseil. Mettre un @ devant une fonction permet de ne pas afficher d'erreur, donc, toi ca donnera: @fopen($page_to_check, "r");
EDIT2: Exacte, j'avais oublié ste fonction. file_exists() est très bien adapté à ta situation !
Ah l'abruti que je suis !!! , j'ai pas enlever le "r"
Merci ! ça fonctionne maintenant !!!
Petite question qui n'a rien à voir !
J'ai installé un forum avec un sous-domaine, je veux qu'il soit exécutable que via "http://forum.monsite.tld" et pas "http://www.monsite.tld/forum"
fOpen ? php ? Ovh ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
https://www.youtube-notify.com/
https://www.youtube-notify.com/