Partage
  • Partager sur Facebook
  • Partager sur Twitter

fOpen ? php ? Ovh ?

    30 août 2006 à 23:40:28

    Bonjour,

    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") )
    {
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Mon site</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta name="keywords" content="mes mots clés">
    <meta name="robots" content="index, follow, all">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta name="revisit-after" CONTENT="7 days">
    <meta name="language" CONTENT="fr">
    <meta name="resource-type" CONTENT="document">
    <link href="style.css" rel="stylesheet" type="text/css">
    </head>

    <body>
    <table border="1" cellpadding="0" cellspacing="0" class="general">
      <tr>
        <td><?php include ("_haut.inc.php"); ?></td>
      </tr>
      <tr>
        <td>
          <script type="text/javascript" src="js/menu.js"></script>
        </td>
      </tr>
      <tr>
        <td>
            <?php
            if ( $_GET['page'] == "accueil")
            {
            include ("swf/_overview.inc.php");
            }
            else
            {
            echo ("<img src='img/header_" . $_GET['page'] . ".gif' alt='' width='700' height='85'>");
            }
            ?>
            </td>
      </tr>
      <tr>
        <td width="700" class="contenu"><?php include($page_to_check); ?></td>
      </tr>
      <tr>
        <td colspan="2" class="basdepage"><?php include ("_bas.inc.php"); ?>
            </td>
      </tr>
    </table>
    </body>
    </html>

    <?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


    Y aurait un "hic" avec la fonction FOPEN ?

    Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2006 à 23:59:44

      Salut,

      En regardant l'erreur, on voit que le fichier que php cherche s'appelle "_.inc.php"
      Vu ton code: $page_to_check = "_" . $_GET['page'] . ".inc.php";

      On peut dire que $_GET['page'] n'existe pas !

      Il faut que tu précise la valeur de $_GET['page'] dans ton URL sinon ca plante !

      A+ ;)
      • Partager sur Facebook
      • Partager sur Twitter
        31 août 2006 à 0:13:58

        Bein je pige pas, car d'habitude si une page n'existe pas, il redirige directement sur la page "accueil.html"
        Là, j'pige pas vraiment rien !!!
        • Partager sur Facebook
        • Partager sur Twitter
          31 août 2006 à 0:21:22

          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'))
          • Partager sur Facebook
          • Partager sur Twitter
            31 août 2006 à 0:24:21

            Au contraire, la c'est normal.

            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 !
            • Partager sur Facebook
            • Partager sur Twitter
              31 août 2006 à 0:26:41

              Arf, en mettant "file_exists", ça m'affiche ça :

              Warning: Wrong parameter count for file_exists() in /home.10.3/nouvelle/www/index.php on line 4
              • Partager sur Facebook
              • Partager sur Twitter
                31 août 2006 à 0:30:48

                Tu as bien enlevé le "r" dans la fonction file_exists ?

                Remplace bien fopen($var,'r') par file_exists($var)
                • Partager sur Facebook
                • Partager sur Twitter
                  31 août 2006 à 1:01:49

                  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"
                  • Partager sur Facebook
                  • Partager sur Twitter

                  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.
                  • Editeur
                  • Markdown