$_SERVER['PHP_SELF'] postato il 11/11/2012 02:32:02 nel forum programmazione, gdrcd e open source e modificato da ilgrandeinverno il 11/11/2012 02:34:16
Ecco alla prima grana incontrata durante il cambio di servizio hosting... (Aruba -> Netsons).
Se nell'ipotetico script collocato su "www.nomesito.it/sito/directory/pagina.php" uso la variabile $_SERVER['PHP_SELF'], la variabile assume due valori diversi:
Su aruba valorizza: -> pagina.php
Su netsons valorizza: -> /sito/directory/pagina.php
Con ovvie, sgradevoli, conseguenze in termini di redirect errati se uso la variabile all'interno di un link o come destinazione di un form. In effetti il comportamento anomalo sembrerebbe quello di aruba, dato che di default dovrebbe restituire anche il path e non solo il filename.
Inoltre su aruba vengono passati anche gli eventuali parametri GET che seguono il nome dello script, mentre su netsons sembra sia conveniente passarli esplicitamente ad ogni invio tramite form come valori input hidden, perché PHP_SELF non se li porta dietro.
Qualcuno sa dirmi se di conseguenza é possibile modificare la valorizzazione della variabile dal php.ini?
Viceversa ho come uniche soluzioni usare esplicitamente il nome della pagina, oppure fare una sostituzione massiva con una funzioncina che "esploda" il valore e mi restituisca solo il filename senza il path?
ps: insulti e ortaggi per aver "approfittato" dell'anomalia di aruba, in privato, grazie.... -.-
Pagine → 1
11/11/2012 09:31:05
prova
echo "<pre>";
print_r($_SERVER);
cosi vedi cosa è associato a ogni variabile.. comunque si credo che si possa modificare da php.ini anche se nn lo ho mai fatto...
hai provato a prendere il php.ini e fare tipo 'trova' mettendo come parola $_SERVER o php_self ?
11/11/2012 14:08:40
L'implementazione del contenuto della variabile $_SERVER è delegata completamente al webserver, non è modificabile da php.ini.
Sulla pagina della documentazione ufficiale di PHP è scritto di non affidarsi ciecamente ai contenuti di $_SERVER, proprio perchè dipende dal server web che c'è dietro.
Beh...sinceramente la soluzione più giusta e pulita sarebbe iniziare a utilizzare la variabile nel modo utilizzato più comunemente, cioè quello fornito da netsons. Cambiando cioè tutti i punti in cui viene usata. Magari anche usando una funzione che prepara l'url in modo corretto, così devi farlo una sola volta e devi solo sostituire tutti i punti in cui viene usata PHP_SELF con la nuova funzione.
è giusto che i valori GET non siano riportati in PHP_SELF, perchè non si possono fare assunzioni su dove verrà usata la variabile. Per esempio se usi PHP_SELF in un form che ha method="get" i valori get passati in PHP_SELF saranno completamente scartati al momento dell'invio del form. Devi riportarli tu, solo quando ti servono.
Prova a vedere se netsons implementa qualche variabile equivalente in $_SERVER. Ma dipendere dall'implementazione specifica di un host non è una cosa bellissima.
12/11/2012 16:52:26
13/11/2012 12:05:07
dipende dalla struttura del tuo sito. Io uso sempre URL relativi alla root, quindi il path mi serve o uso PHP_SELF direttamente senza rielaborarla.
Se tu usi URL relativi alla tua pagina specifica dovrai metterti a rielaborare ogni volta PHP_SELF in base alla destinazione prescelta.
Se usi la riscrittura degli url...boh dipende XD
13/11/2012 17:46:48
13/11/2012 18:58:33
Non sono sicuro del perchè ti serva solo il basename nel campo action dei form....ma se dici che ti funziona ok
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
I dati del generatore di rank sono stati aggiornati!