2012-03-15 10 views
5

Sto utilizzando un semplice strumento di autorizzazione pre-fatto per proteggere il mio sito. Lo strumento richiede che questa riga di codice venga applicata all'inizio di ogni pagina .php. Auth.php vive al livello principale.Percorso assoluto PHP in requireonce

<?php ${(require_once('Auth.php'))}->protectme(); ?> 

Devo essere in grado di aggiungere questa riga di codice a ogni file, inclusi i file nelle sottocartelle. Ma non sono sicuro di come applicare il metodo come mostrato in require_once in php per assicurarmi che sia sempre collegato in modo assoluto, insieme a protectme ​​(); funzione.

Qualsiasi illuminazione è apprezzata.

Cheers.

+0

Qual è lo scopo di questa funzione? – yoda

risposta

6

Impostare una variabile sul percorso assoluto. $ _SERVER ['DOCUMENT_ROOT'] è una variabile globale PHP che memorizza i server, percorso root. Hai solo bisogno di inserire il resto delle informazioni sul percorso per lo script. Ad esempio se il tuo sito web esiste su/var/www/e il tuo script esiste su/var/www/scripts, dovresti fare quanto segue.

$path = $_SERVER['DOCUMENT_ROOT'] . '/scripts/Auth.php'; 
require_once($path); 
2

È possibile utilizzare un percorso relativo per raggiungerlo.

un livello superiore: ../Auth.php

due livelli sopra: ../../Auth.php

ecc

+0

Il suggerimento è buono, ma non sempre funziona. Funziona in combinazione con ['__DIR__'] (http://www.php.net/manual/en/language.constants.predefined.php). – hakre

+0

Ciao. Grazie, ma sarà troppo dispendioso in termini di tempo per ordinarli singolarmente. – fitzilla

+0

@fitzilla, in tal caso, dovresti seguire le soluzioni di hakre o DampeS8N. Sono buone risposte al tuo problema. Ricorda che stai apportando una modifica INI, che dovrà essere modificata in qualsiasi altro punto del tuo codice. – Brad

1

Aggiungere la directory di livello root al vostro include_path - PHP farà il resto per voi. Nessuna variabile complicata, costanti o altro.

2

È necessario modificare php.ini per modificare il percorso di inclusione nel percorso di tali file (tutti gli altri) inclusi. Quindi puoi includerli senza un percorso su ogni pagina indipendentemente dalla loro posizione.

More Details

-1

perché non utilizzare un percorso assoluto?

require('/auth.php'); 

forse sono incomprensioni tua domanda

+0

perché non funzionerà –

0

Se non si ha accesso a php.ini, ho usato qualcosa di simile prima

include $_SERVER['DOCUMENT_ROOT']."/"."include_me.php"; 
1

In aggiunta a tutto ciò che è stato già detto, suggerisco di centralizzare tutte le funzionalità comuni. Crea un file, come common.php con tutto ciò che ti serve per l'applicazione e quindi includi quello da tutti i tuoi script.

Inoltre, un buon modo per fare parenti include utilizzando la funzione dirname() in combinazione con la costante magica __FILE__. Ad esempio:

require_once dirname(__FILE__) . '/../lib/common.php';