Newsgroup: it.comp.www.php
Titolo: Eliminare le variabili

Ciao a tutto il newsgroup..
Scusate la domanda banale, ma é possibile eliminare le variabili
dall'indirizzo trasformandole in directory fittizie?
Esempio:
 
http://www.dominio.net/index.php?var=1&var=2
in 
http://www.dominio.net/1/2/index.php
o anche
http://www.dominio.net/var1/var2/index.php
Grazie a chi mi rispondera'!
Roberta

Forse, e dico forse se usi apache potresti usare i rewrite
che ti permettono di creare URL "falsi" che puntano ad "url veri"...
Non so come , ma sicuramente potresti provare a vedere
sul sito di Apache...
Se ci riesci però devi pubblicare la soluzione , così noi tutti ti
ringrazieremo ;D
Bye


 dall'indirizzo trasformandole in directory fittizie?
Proprio banale non e', comunque e' gia' stata risolta :)..allora,
vediamo: ci sono due modi (o forse anche di piu') di risolvere il
problema, di cui uno e' spiegato alla url
http://www.phpbuilder.com/columns/tim20000526.php3
, dove si usa
una soluzione che forza apache a chiamare uno script php per ogni
pagina all'interno di una certa dir, script che poi interpreta la
url (finta) passata.
L'altro metodo e' l'uso di mod_rewrite, e anch'esso coinvolge
ovviamente l'uso dell'httpd.conf di apache o di un file .htaccess,
dove inserire direttive tipo:
-----------
# attiva il motore di rewrite
RewriteEngine on
# match e remap interno url
RewriteRule ^pagina/([^/]+)/([^/]+)/index.php$ showpage.php?var1=$1&var2=$2 [T=application/x-httpd-php,last]
-----------
Qui diciamo a mod_rewrite di controllare se la url richiesta corrisponde
all'espressione regolare scritta dopo RewriteRule, e in tal caso di
richiamare, in modo trasparente all'utente, lo script showpage con le
variabili che erano nascoste nella url.
Qui $1 e $2 corrispondono al primo gruppo di lettere racchiuso tra le
prime due parentesi e al secondo gruppo di lettere.
Se ad es. metti quel testo che ho scritto sopra in un file .htaccess
nella dir /pippo, allora se un utente richiede la url
/pippo/pagina/abra/cadabra/index.php
verra' richiamata in realta' la url
/pippo/showpage.php?var1=abra&var2=cadabra
con tipo application/x-httpd-php, che deve essere forzato tramite l'ultima
direttiva sulla riga rewriterule per non mi ricordo quale motivo
-- 
Ciao,
 Francesco

Si puo' fare tutto, ma se ti da noia passare variabili da una pagina
all'altra in chiaro, perchè non usi le variabili di sessione ??
Cfr. man. Handling Sessions Functions
Ciao ciao
--------
Paolo Dell'Unto
gab...@tiscalinet.it
ICQ # 770759
On Tue, 25 Sep 2001 23:23:54 GMT, "Roberta" <n...@spam.please> wrote:


 ovviamente l'uso dell'httpd.conf di apache o di un file .htaccess,
Grazie mille!
Solo che ho un altro dubbio.. Se modifico l'http.conf del server, non
rischio di compromettere anche gli altri siti pubblicati sullo stesso
server?
Grazie ancora!
Roberta

 all'altra in chiaro, perchè non usi le variabili di sessione ??
Non mi danno noia in termini di sicurezza, ma solamente in termini di
registrazione ai motori di ricerca, lunghezza della URL e usabilità del
sito..
Grazie a tutti!
Che bel newsgroup!
Roberta

On Tue, 25 Sep 2001 23:23:54 GMT, "Roberta" <n...@spam.please> wrote:



Se ti accontenti di:
 
http://www.dominio.net/tuoscript.php/pippo/pluto/paperino?ID=7
basta fare un parsing su $REQUEST_URI, ed e' equivalente a
 
http://www.dominio.net/tuoscript.php?pippo=&pluto=&paperino=&ID=7
...poi sperimenta un po', e...
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

 sito..
Apunto, ascolta quello che dice Paolo, se usi variabili di sessione risolvi
tutto in una volta e non devi modificare nessun server. Compatibile con
Unix, Linux e IIS.
Cosi puoi anche usare le variabili passati in un modo piu mirato. Trovo ad
esempio comodo di poter bookmarcare un URL tipo:
www.tuosito.it/search.php?cerca=parolachiave
anche se magari usa all'interno (varibile di sessione) altri dati passati
(tipo ordinamento, utente che cerca ecc.)
Cmq. dipende da caso in caso.
J.

 server?
Beh, tutto dipende da cosa si scrive nell'httpd.conf.
Non ho capito se per altri siti intendi siti virtuali ospitati
su uno stesso server http o semplicemente altre directory, comunque
in entrambi i casi basta mettere le direttive di mod_rewrite
all'interno degli specifici tag, tipo <directory> </directory>
o non ricordo come si chiama quello dei siti virtuali.
Mettendo le istruzioni all'interno delle sezioni specifiche
i comandi varranno solo per le sezioni che ti interessano.
Se cerchi qualcosa tipo "using mod_rewrite", troverai la guida
con gli esempi di mod_rewrite che fornisce molti esempi
-- 
Ciao,           | Sostituisci "dontspam" con "softhome"
 Francesco      | nell'indirizzo email per avere quello corretto

 basta fare un parsing su $REQUEST_URI, ed e' equivalente a
Ciao Leonardo..
Fosse facile!
Potresti farmi un esempio o spedirmi a qualche pagina che potrebbe aiutarmi?
Grazie ancora
Roberta

 
http://www.phpbuilder.com/columns/tim20000526.php3
, dove si usa
Ciao Francesco..
Scusa se rompo ancora, ma questa e' la prima ipotesi che ho vagliato tra le
tante..
Ho letto tutto, e ho provato ad applicare lo script che in effetti funziona,
ed anche bene!
Solo che le directory che passano le variabili sono vere, non fittizie!
Quindi se ho 150 variabili devo creare 150 directory sul server, e dentro
ognuna uploadare i relativi files!
E se dovessi aggiornare anche solo uno dei files, chiamo te! :-P
Spero di aver capito male io e di aver applicato lo script in modo errato..
Aiuto!
Roberta

Potresti farmi un esempio
Diciamo che un tuo utente accede a questo indirizzo:
 
http://localhost/test.php/a/b/c/d?p=q
allora, se test.php e'
<?
	// Decodifica dell'URI richiesto
        preg_match_all("|[\?/]*([^\?/]+)[\?/]*|", $REQUEST_URI, $dummy);
	// Estrazione delle subcomponenti
        $matches = $dummy[1];
	// Eliminazione delle subcomponenti spurie
        while(($goo=array_shift($matches))!=NULL)
                if ($SCRIPT_NAME == "/$goo")
                        break;
	// Ciclo di verifica. Se è stato inviato anche un "p=q", assegniamo
	// il valore q alla variabile p.
        for ($i=0; $i < count($matches); $i++)
        {
                print("<TT>Parametro $i: $matches[$i]</TT><BR>");
                if (ereg("(.*)=(.*)", $matches[$i], $gregs))
                {
                        ${$gregs[1]}=$gregs[2];
                        print "\$$gregs[1] ora vale '$gregs[2]'<TT>";
                }
        }
?>
~
ottieni:
Parametro 0: a
Parametro 1: b
Parametro 2: c
Parametro 3: d
Parametro 4: p=q
$p ora vale 'q'


 Spero di aver capito male io e di aver applicato lo script in modo errato..
Non so, ho questa impressione..


 giusto?
Ciao Francesco!
Mamma mia quanta pazienza avete in questo NG! :-)
Purtroppo sono niubba in fatto di configurazione del server Apache, ma
vorrei davvero risolvere questo tedioso problema..
Ho valutato che lo script di PhpBuilder funziona..
Ora il mio problema rimane modificare il file httpd.conf  o il file
.htaccess di tutte le mie directory..
Escludendo httpd.conf (il mio provider non mi permette di metterci mano)
devo passare al file .htaccess..
Ho provato a fare un copia&incolla del tuo script, ma mi da' errore 500
(interno server).
Ho provato a cercare con Google qualche documento che tratti la modifica del
file .htaccess, ma niente da fare, parlano tutti delle restrizioni
password/utente...
Cosa mi consigli di scrivere dentro questo maledetto file? :-)
Grazie per l'infinita pazienza!
Roberta

 Cosa mi consigli di scrivere dentro questo maledetto file? :-)
Guarda, se segui alla lettera quello che c'e' scritto su
phpbuilder, compresa la sezione del .htaccess, funzionera'.
