Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    percorso via include, il file non si trova.

    Come da titolo ho un problema con include(); mi spiego
    Devo creare una connesisone sicura, tra le altre cose devo verificare che il server non sia predisposto per inserire il SESSION_ID via GET nel caso che i cookie non siano abilitati sui browser, avviene un redirect ad una pagina che spiega l'errore e come ovviare.
    Per fare la verifica faccio:
    Codice PHP:
    if (ini_get('session.use_only_cookies') !== 1) {
        
    header('location: ../error.php?err=1');
        exit();

    Il problema è il path.
    La funzione che verifica il tutto è in un file dentro un'altra directory rispetto al file chiamante, in pratica... login.php --( include )--> /INC/sessioncheck.php nulla di strano, il problema è al solito che quando richiamo errore.php che si trova nella directory dove è anche login.php mi va un directory ancora più indietro dandomi di fatto ERRORE 404.
    Devo trovare un metodo facile e sicuro per inserire al posto di quel ../ il giusto path a seconda se chi chiama INC/sessioncheck.php si trovi fuori da INC, dentro INC o in un'altra cartella ancora.
    Ho provato con realpath() ma non sono riuscito a risolvere. Idee?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Non puoi semplicemente lavorare con delle funzioni anzichè includere dei files?

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da Webmaster76 Visualizza il messaggio
    Non puoi semplicemente lavorare con delle funzioni anzichè includere dei files?
    No perché i file sono tanti eppoi scusa perché avendo un problema invece di risolverlo dovrei aggirarlo?

  4. #4
    Prova a mettere il percorso assoluto partendo dalla root:

    Codice PHP:
    ...
    header('location: /dir1/dir2/.../dirN/error.php?err=1');
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Quote Originariamente inviata da Marcolino's Visualizza il messaggio
    No perché i file sono tanti eppoi scusa perché avendo un problema invece di risolverlo dovrei aggirarlo?
    Perchè avere un include che si comporta in modo diverso a seconda di dove viene incluso non è molto "bello"...

    Se proprio vuoi puoi risolvere semplicemente aggiungendo una variabile dai file che effettuano l'inclusione:

    $caller = "a"; (file 1)

    $caller = "b"; (file 2)

    Poi dal file che viene incluso, effettui un semplice controllo:

    if(isset($caller))
    {
    if($caller=="a") {...}
    elseif($caller=="b") {...}
    }
    else {...}

    ...che puoi usare per modificare i percorsi come ti servono.

  6. #6
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    No ma non si deve fare così, e ho quasi risolto tramite definire il percorso assoluto del file in modo automatico, anche perché scrivere un'applicazione generica che va installata su un server qualsiasi con impostazioni che possono cambiare di volta in volta.
    Quindi sto usando i metodi predefiniti del PHP, appena funziona ve la posto qui.

  7. #7
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Ok, allora non avevo capito...

    Quote Originariamente inviata da Marcolino's Visualizza il messaggio
    Devo trovare un metodo facile e sicuro per inserire al posto di quel ../ il giusto path a seconda se chi chiama INC/sessioncheck.php si trovi fuori da INC, dentro INC o in un'altra cartella ancora.
    Ho provato con realpath() ma non sono riuscito a risolvere.
    Buon lavoro!

  8. #8
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ecco:
    Codice PHP:
    <?php 
        
    /**
        *    pattern.php - Restituisce i pattern assoluti a partire dal percorso da cui viene chiamato
        *    uso: richiamarlo all'inizio di ogni file per avere due costanti, una ROOT_DIR da l'indirizzo
        *    assoluto della root dir, l'altra la cartella inc, ovviamente si possono aggiungere o modificare
        *    i nomi delle cartelle.
        *
        *    include 'pattern.php';
        *    header('location: ' . ROOT_DIR . 'index.php');
        *    include LIB_DIR . 'pippo.inc';
        *
        *    Il listato verifica anche che la versione del PHP sia superiore a 5.3 nela caso usa un
        *    metodo piuttosto che l'altro e infine verifica l'esistenza dello slash finale, se non c'è
        *    lo aggiunge.
        */
        
    if (PHP_MAJOR_VERSION == && PHP_MINOR_VERSION >= 3) {
            
    $dir __DIR__;
        } else {
            
    $dir dirname(__FILE__);
        }
        if (
    $dir[strlen($dir)-1] != '/'$dir .= '/';
        
    define ('ROOT_DIR'$dir);
        
    define ('LIB_DIR'ROOT_DIR 'bin/');
    ?>

  9. #9
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Alt! C'è un errore
    Non usarlo negli header().

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.