Newsgroup: it.comp.www.php
Titolo: querystring dentro include

Salve a tutti. Ho un problema riguardante il metodo "include", cioè
devo passare una querystring all'interno del file che voglio includere
nella pagina. (premetto che non sono molto pratico di questo
linguaggio.)
Ho provato con varie strategie:
Prima ho intercettato la query con il metodo GET e passato il valore
in una variabile ($var):
include ("nomefile.php?&var")
Secondo tentativo ho provato ad usare $_SERVER['QUERY_STRING']
direttamente all'interno dell'include.
Ho provato anche modificando il path del file che voglio includere
nella pagina. Vale a dire ho tentato con percorsi assoluti e relativi.
(il file si trova in una sottodir)
C'e da dire che gli altri file che includo normalmente (senza nessun
statemant querystring) caricano perfettamente con percorsi relativi.
Ho provato ad utilizzare come ultima spiaggia INCLUDE VIRTUAL ma
ottengo solo un output di errore.
Approposito gli errori sono i seguenti:
metodo include:
failed to open stream: No such file or directory in ...
metodo include virtual:
(mentre sto scrivendo non mi dà piu' l'errore e sembra che effettui la
query nel DB con successo)
Grazie Newsgroup...  fai paura!!!!
Rimane cmq  l'errore "failed to open stream: No such file or directory
in ..." subito sotto la visualizzazione dei risultati, come mai?
Grazie ancora...

 
Include *non* sopporta la query string in quanto il suo scopo č 
includere un file per poi processarlo (parsing). Puoi risolvere 
utilizzando una variabile prima dell'inclusione (orribile), eseguire una 
chiamata ad un indirizzo HTTP passando in questo caso la query string, 
oppure riprogettare il tutto (OOP, libreria di funzioni etc.., visto che 
hai la necessitą di includere un qualcosa "parametrizzato").
Nel tuo caso, con l'istruzione include ("nomefile.php?&var") 
l'interprete va a cercare sul file system il file chiamato 
"nomefile.php?&var" e non trovandolo ritorna con failed to open stream: 
No such file or directory in ...
	Francesco

 includere un file per poi processarlo (parsing).
Ho risolto in parte con include virtual. Quello che dici è corretto ma
credo che include virtual sia progettato apposta per evitare che
l'interprete vada a cercare sul file system qualcosa che non esiste.
Infatti esegue la query.
Solo che mi da una sfilza di "failed to open stream: No such file or
directory in..." subito sotto. Come lo evito?
grazie

 Ho risolto in parte con include virtual.
Per completezza ho risolto così:
include virtual("nomefile.php?{$_SERVER['QUERY_STRING']}");

 directory in..." subito sotto. Come lo evito?
Risolto:
@include virtual("nomefile.php?{$_SERVER['QUERY_STRING']}");
Ciao!


Non hai risolto, hai solo nascosto gli errori!
	Francesco


la penso anch'io cosě...
ti conviene capire il motivo dei faile un codice che restituisce errori 
anche se funziona non č affidabile
ciao
Valter

 linguaggio.)
// test.php
<?php 
$_GET['var'] = 'test';
include(dirname(__FILE__) . '/file.php');
?>
// file.php
<?php 
echo($_GET['var']);
?>
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

 pagina. (premetto che non sono molto pratico di questo linguaggio.)
Visto che non sei pratico, allora sappi che non e` un bel modo di 
programmare.
Non dovresti mai passare query string ai file inclusi.
Definisci una funzione nel file incluso e richiamala dal file principale 
passandole dei parametri.
Bye.

 Vieni a fare uno stage con noi:
http://www.creativepark.it/stage/
e se io digito dall' url: 
http://localhost/file.php?var=www.remotefile.it/lollo.txt
?
sai che succede ?

 sai che succede ?
Ovviamente! Visualizza "
www.remotefile.it/lollo.txt
".
Occhio, Filippo nel suo esempio non ha "collegato" il file da includere 
con il parametro get, ma solo l'uso dell'array _GET nel file incluso 
(soluzione, come già riportata nel corso del thread, non consigliabile 
per manutenzione del codice)
	Francesco

 wrote:

esatto stampa ciò che gli mandi da get, ma se io invece del url,
metterri uno code javascript potrei fare qualcosine :)
ok non avevo letto attentamente il thread :)
ciauz

 sai che succede ?
Fa semplicemente un print della stringa 
www.remotefile.it/lollo.txt
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/


 metterri uno code javascript potrei fare qualcosine :)
Il codice proposto e' solo un esempio del metodo con cui si possono
passare delle variabili ad un file incluso, non certo un codice da
utilizzare su un server di produzione.
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/


 anche se funziona non è affidabile
Si mi rendo conto di aver mascherato un po' la situazione ma non
riesco proprio ad eliminare gli errori.
All'interno di un tag noscript ho del codice php:
<?php
switch($_GET['content'])
{
...
case 'cms': @include virtual("leggifile.php?
{$_SERVER['QUERY_STRING']}"); break;
...
}
?>
che ovviamente intercetta il valore della variabile content passatogli
tramite url (da un link in un'altra pagina a sua volta inclusa nel
documento principale):
<a href="index.php?content=cms&xxx=$idDinamico>
quindi il valore della var xxx cambia dinamicamente per estrapolare i
giusti dati dal DB.
Tutta la stringa è contenuta dentro $_SERVER['QUERY_STRING'] che
immetto nell'include virtual direttamente altrimenti non funziona più
nulla.
Non so proprio da dove cominciare per eliminare la sfilza di "failed
to open stream: No such file or
directory in...".
Mi sono accorto che passando la totalità del path nell'include tramite
$_SERVER['QUERY_STRING'] viene passata anche la variabile content (ed
il suo valore) che ormai risultano inutili ai fini della query. Ho
provato ad eliminare la parte inutile dell'url (?content=cms) e poi
ripassarla tramite una variabile all'interno dell'include ma poi non
funziona più di nuovo.
Mi sto dimenticando sicuro qualcosa, dei tentativi che ho fatto... ma
cmq non ho avuto esiti positivi.
Mi sà che non sono riuscito a spiegarmi proprio bene ma se volete
possiamo fare un quadro esatto insieme... mi aiutate?
Grazie intanto per le vostre risposte...