Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: problema con sessione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182

    problema con sessione

    Ho un problema con l'id delle sessioni.

    Quando vado in una pagina dove mi verifica l'esistenza della sessione, in alto nella barra degli indirizzi mi si aggiunge PHPSESSID=numero_della_sessione.
    Da notare che questo accade solo con aruba, mentre ad esempio con altervista non mi compare.

    C'è qualcosa che si può fare? Modificare php.ini in qualche maniera? E se si come?

    grazie.

  2. #2
    Come saprai, ci sono due metodi con cui il motore di sessione di php gestisce le sessioni: tramite i cookie di sessione e tramite il session id sulla url.

    i parametri che decidono questo comportamento in php sono questi:

    ini_set("session.use_cookies",1); //attiva l'uso dei cookies
    ini_set("session.use_only_cookies",1); //disabilita l'uso del sid sulla url

    tieni però presente che di solito gli hoster molto economici come altervista e aruba non permettono quasi nessun uso della ini_set, proprio perchè non vogliono che nessun parametro o quasi possa essere modificato.

    In più, usare le due istruzioni sopra farà si che se il server o il client non supportano/accettano i cookie di sessione, diventerà impossibile usare le sessioni.

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    scusate ma.. la funzione che disabilita la sid nella url, non è:

    session.use_trans_sid ?

    Se no, questa a cosa serve?

  4. #4
    Sono due cose diverse: session.use_trans_sid serve a dire a php se deve o non deve aggiungere automaticamente la SID sulle url, e nient'altro.

    Per capirci, se il tuo browser non accetta i cookie di sessione e tu metti session.use_trans_sid=0, se poi vuoi che il tuo sito continui a funzionare devi ricordarti tu di aggiungere il sid a ogni url, ma questo non ha nulla a che vedere con il fatto che il php usi o meno il sid sulla url come metodo per propagare la sessione...

    Insomma, se tu dici ini_set("session.use_only_cookies",1); stai dicendo a php di uasre solo i cookies per la sessione, mentre se dici session.use_trans_sid=0 NON gli stai dicendo di usare i cookies, gli stai solo dicendo che, ANCHE SE LUI DECIDESSE DI USARE LA SID, non dovrebbe aggiungerla automaticamente a tutti i link; questo avrebbe come diretta conseguenza che la sessione non funzionerebbe se non ti ricordassi di aggiungere tu la sid su ogni link...

    Spero di averti chiarito le idee!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    Non penso di aver capito troppo.. ma riassumendo brevemente.
    Io ho le seguenti variabili

    session.use_cookies
    session.use_only_cookies
    session.use_trans_sid

    Ho notato che durante la sessione nell'url mi compare l'id della sessione.
    Domanda: quale variabile devo settare a true e quale a false per far sì che questa non compaia?

    Altra domanda: e come dovrei fare eventualmente per aggiungerla a mano? Da dove la pesco?
    :master:

  6. #6
    Per fare si che non compaia basta:

    session.use_trans_sid=0

    E fin qui tutto ok.

    Solo che se compare, vuol dire che:

    a) session.use_trans_sid=1
    E
    b) php non è riuscito ad usare un cookie per la sessione.

    Il che significa che se si imposta session.use_trans_sid=0 , LE SESSIONI SMETTONO DI FUNZIONARE.

    Ora è più chiaro?

    Insomma, se il php ha fatto apparire il SID sulle url, è PERCHE' GLI SERVIVA! Il fatto di chiedergli di non metterlo disabilitando session.use_trans_sid ha quindi come effetto immediato il disabilitare le sessioni, a meno che... tu non aggiunga il SID sulle url manualmente nel tuo codice PHP, cosa che ha lo stesso effetto di riattivare session.use_trans_sid, ma è molto più scomodo.

    Concludendo: se il sid sulla url appare è perchè php non è riuscito ad usare il cookie di sessione, e se tu gli disabiliti anche il sid, NIENTE SESSIONI.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    ma se io non uso cookie, ma solo sessioni?

    Il problema - in poche parole - è che la sid, oltre a comparirmi nella barra url del browser, mi compare anche nelle textarea che prelevano un testo da un database, e ciò mi è scomodo.

    Poi sinceramente non ho capito come mai se imposto session.use_trans_sid a OFF le sessioni smettono di funzionare..

  8. #8
    Perdonami, ma non importa se TU usi cookies, li usa php senza neanche dirtelo!

    Come credi che posso funzionare la sessione in quei casi in cui PHP non aggiunge il sid sulla url?

    Prova a controllare nei cookies del tuo browser, vedrai che quando non c'è il sid c'è però un cookie che si chiama PHPSESSID...

    E' proprio tramite quel cookie lì, che php imposta da solo dietro le quinte quando tu fai session_start(), che php riconosce la sessione del browser; se però il browser o il firewall o il server web sono impostati per non usare i cookie di sessione, allora php è costretto ad usare il sid sulla url, perchè altrimenti la sessione non funzionerebbe...

    Ma il tuo problema non sembra essere questo, dici che la sid ti appare nelle input? Non potresti linkarmi una pagina che mostri il problema?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    il problema era generale, ma posso specificare ancora meglio.

    ho una pagina1.php che accede alla pagina2.php tramite password. Entrando nella pagina2 si avvierà una sessione che a sua volta mi servirà per accedere alle pagina3, pagina4 e pagina5. Se in queste pagine la sessione non esiste allora mi rimanda alla pagina1.

    Fin qui tutto ok. Nella pagina3.php ho una textarea che richiama un testo dal database. In questo testo c'è incluso un codice <a>link</a> dell'html ed è proprio nell'href (oltre che nella barra degli indirizzi) che mi compare la sid.

    Su server semplici (altervista) ho notato che la sid non compare e che la sessione funziona. Mi domando dunque dove stia l'inghippo e che variabili eventualmente devo attivare/disattivare. (e mi par di capire che session.use_cookies deve essere attivata per forza, altrimenti la sessione non funziona).

  10. #10
    Perdonami, ma qui il problema è che non fai un corretto escaping dell'html che metti nella textarea: per capirci, è NECESSARIO che tu faccia:

    <textarea name="pippo"><?=htmlspecialchars($valorechevieneda ldb);?></textarea>

    e NON:

    <textarea name="pippo"><?=$valorechevienedaldb;?></textarea>

    e questo a prescindere dal fatto che tu usi o meno le sessioni... questo perchè qualsiasi testo che NON vuoi venga interpretato dal browser come html deve essere sotto escape per i caratteri speciali dell'html...

    Questo avrà anche l'effetto collaterale di evitare che php aggiunga il SID ai link presenti in quel testo, visto che, appunto, non saranno interpretati come link, ma come puro testo.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.