Include ne fonctionne pas ?

Résolu
Shidoo -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour

    Sans voir ton code... impossible de t'aider
    0
    1. Shidoo
       
      J'ai mis mon code ci-dessous :x
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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?
    0
    1. Shidoo
       
      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
      0
  3. Shidoo
     
    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
    0
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    je suggère d'ajouter
    session_start();
    include("includes/init.php");

    dans
    accueil.php
    0
    1. Shidoo
       
      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"/>)
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Shidoo
         
        quand accueil.php est exécuté, il ne sait pas grâce à quoi il a été appelé.
        0
    2. Shidoo
       
      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 :/
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Shidoo
         
        je pense que ton idée de base est incorrecte.
        chacun des appels à un url d'un site est indépendant des autres appels.
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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.

    0
    1. Shidoo
       
      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
      0