Elimininare il session ID dall’url


Questo capita solo quando utilizzate le sessioni di PHP, per intenderci se usate la funzione session_start();, se il browser del client non ha i cookie abilitati (come succede per gli spider dei motori di ricerca), php si occupa di riscrivere il parametro identificativo della sessione direttamente nell’URL.
Infatti vi troverete un URL di questo tipo: http:/www.tuosito.com/index.php?id==2da6f0b4ac11f8e23609c297ef241204.

Vi do due buonissimi motivi per evitare che ciò acada:
   – I motori di ricerca non gradiscono molto i parametri;
   – I log del vostro web server assumeranno dimensioni spropositate.

vi do un chiaro e semplice motivo per lasciare tutto così come vuole PHP:
    – I client senza cookie non riusciranno ad utilizzare le sessioni, quindi perderanno le informazioni in esse contenute.

Si può agire in due modi fondamentalmente:
   – facilitare solo i motori di ricerca e lasciare che i log si riempiano
   – debilitare solo alcuni utenti ed eliminare i parametri di sessione sull’URL.

Io su questo sito ho preferito impartire l’ordine a PHP di non visualizzare/passare il parametro di sessione direttamente sull’URL, ogni qual volta ne avessi bisogno potrei comunque riabilitare il passaggio del parametro.
Per disabilitare direttamente da PHP dobbiamo editare il file php.ini che su linux solitamente si trova su /etc/php.ini ed in windows come da istruzioni di installazione di PHP4 su iis 5.0 si trova nella cartella c:WINNTphp.ini.
Una volta trovato il file in questione (vedi Ricerca di un file in linux) lo si può editare ed andare alla ricerca del paramentro session.use_trans_sid. Di default PHP imposta questo parametro a 1, cioè a vero, basta cambiare l’uno in zero session.use_trans_sid = 0 e ogni volta che php troverĂ  un browser con i cookie disabilitati ignorerĂ  le sessioni.

Si può adottare una soluziona alternativa che è quella di lasciare in pace il file php.ini se se ne ha una paura primordiale ed invece si può agire direttamente da programmazione.
Intendo che ogni qual volta si debba aprire una sessione col comando session_start(); si può intervenire intercettando se l’agent del client è un "bot" e nel caso in cui il controllo risulti vero si può impostare per la pagina in esecuzione temporaneamente il parametro succitato a zero. Questo farĂ  in modo che tutti quegli utenti che di cookie non ne vogliono sapere possano tranquillamente intergire con le sessioni senza perdersi nulla ed al contempo i motori di ricerca intercettati avranno il loro bel da fare ad indicizzare senza parametro di sessione specificato.
Di seguito riporto uno spezzone di codice per intercettare l’agent e disabilitare il parametro in questione.

    if(preg_match(‘/googlebot/’,$_SERVER[‘HTTP_USER_AGENT’])) {
        ini_set(“session.use_trans_sid”, 0);
    }

Testato su Red Hat 9, Apache 2.0.4 e PHP 4.1.3

Elimininare il session ID dall’url ultima modifica: 2004-08-19T00:00:00+00:00 da Enrico

Related Posts

Comments are closed.