Include ne fonctionne pas ?

Résolu
Bonjour,

J'ai un concept de site internet un peu spécial, cependant, je ne parviens pas à déterminer la source de mon problème.

http://image.noelshack.com/fichiers/2017/26/7/1499000509-sans-titre.png

Je vous donne le lien de cette image pour comprendre la structure de mon site.

En faite, tout se passe parfaitement, jusqu'à la croix rouge indiquée. La page fonctionne parfaitement cependant, je ne peux pas interagir avec les pages que j'ai "include". Ma base de donnée ne fonctionne pas ou les fonctions que j'ai me retourne des erreurs comme ceci :


Fatal error: Call to undefined function verif_auth() in C:\xampp\htdocs\projet\views\accueil.php on line 3


Ce qui m'étonne c'est que si j'essais de déclarer cette fonction, il me fait comprendre que celle-ci existe déjà. Donc l' "inclusion" s'effectue bel et bien mais à moitié ? ...

Bonne journée, merci

5 réponses

  1. Modérateur
    Bonjour

    Sans voir ton code... impossible de t'aider
    1. J'ai mis mon code ci-dessous :x
  2. Contributeur
    bonjour,
    tu appelles verif_auth() à partir de accueil.php.
    y-a-t'il des includes dans accueil.php?
    ce que tu montres en "Résultat", où le vois-tu?
    1. J'ai mis mon code ci-dessous, je pensais facilité la compréhension de celui-ci par une image simple mais bon ^^, ce que j'appelle résultat c'est ma page chargé sur un navigateur chrome en localhost
  3. index.php

    <!doctype html>
    <html lang="fr">

    <head>

    <title>a</title>
    <meta charset="UTF-8">

    <!-- chargement de...
    jquery
    bootstrap
    -->
    <script src="https://code.jquery.com/jquery-2.2.4.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

    <!-- chargement de...
    services
    controleur
    css
    -->
    <script src="js/services/httpServ.js"></script>
    <script src="js/controllers/indexCtrl.js"></script>
    <link rel="stylesheet" href="css/main.css">

    </head>

    <body>

    <?php
    session_start();
    include("includes/database.php");
    include("includes/init.php");
    include("views/menu.php");
    ?>

    <div id="conteneur" class="container">
    <div id="view" class="col-sm-12"></div>
    </div>
    </body>

    </html>


    httpServ.js

    var httpServ = (function () {

    function _chargerVue(nomVue) {
    var nomFichierHtml = 'views/' + nomVue + '.php';
    var nomFichierCtrl = 'js/controllers/' + nomVue + 'Ctrl.js';

    $('#view').load(nomFichierHtml, function () {
    console.debug(nomFichierHtml + ' OK !');

    $.getScript(nomFichierCtrl, function () {
    console.debug(nomFichierCtrl + ' OK !');
    });

    });
    }

    return{
    chargerVue: _chargerVue
    };
    })();


    indexCtrl.js

    var indexCtrl = (function () {
    $(document).ready(function () {
    if (httpServ) {
    httpServ.chargerVue("accueil");
    }
    });
    })();


    accueil.php

    <!DOCTYPE html>
    <div id="accueil"><?php
    if (!verif_auth(INSCRIT)) erreur(ERR_IS_NOT_CO);
    ?>
    </div>


    init.php
    <?php 
    include("./includes/functions.php");
    ?>


    functions.php

    function verif_auth($auth_necessaire)
    {
    $level=(isset($_SESSION['level']))?$_SESSION['level']:1;
    return ($auth_necessaire <= intval($level));
    }


    Mon erreur
    Fatal error: Call to undefined function verif_auth() in C:\xampp\htdocs\ANIME STORAGE\views\accueil.php on line 3
    1. Contributeur
      je suggère d'ajouter
      session_start();
      include("includes/init.php");

      dans
      accueil.php
      1. Mais je le déclare déjà dans index.php
        accueil est chargé grâce à indexCtrl.js dans index.php (dans la balise <div id="view"/>)
      2. Je l'ai fais et sa semble fonctionner (j'ai d'autre erreur qui ne concerne pas le problème mais je vais pouvoir m'en sortir)

        Cependant, j'aimerais tout de même rester sur mon idée de base, c'est à dire garder mes includes dans index.php pour ne pas avoir à les rappeler dans chacune de mes pages accueil.php / contact.php etc...

        Et normalement ça devrait fonctionner car la base c'est index.php mais grâce à ma fonction js chargerVue() je charge le contenu de la page accueil dans index.php :/
      3. Contributeur
        @Shidooquand accueil.php est exécuté, il ne sait pas grâce à quoi il a été appelé.
      4. Contributeur
        @Shidooje pense que ton idée de base est incorrecte.
        chacun des appels à un url d'un site est indépendant des autres appels.
    2. Modérateur
      Bonjour,

      Je confirme la réponse de yg_be.
      Car .. tu passes par un LOAD (javascript) pour charger ta page ....
      Sauf que, le load ne transmet pas les variables ni les "fonctions" vers ta page .....
      Un load (javascript...) ne se comporte pas comme un include php !

      Il faut donc que dans ta page appelée (ici accueil.php) il y ait également les includes.

      1. D'accord, c'est bien dommage, car sa aurait été pratique :/
        Il me semblait qu'un truc comme ça m'en empêchait mais sans le connaître, je ne pouvais y mettre la main dessus :/

        Merci beaucoup