Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [php] sessioni chiarimento

    Non so se ora sono fulminato, oppure non ho capito nulla delle sessioni. Un una pagina php apro una sessione e ci metto dentro un valore numerico. Poi in una pagina successiva faccio una cosa del genere

    $id=$_SESSION['id']

    e poi in un'altra pagina successiva scriva, che non centra nulla con le altre due faccio

    $id=10;

    ora mi ritrovo la $_SESSION['id'] modificato, è possibile?

    ho fatto questa prova
    Codice PHP:
    print_r($_SESSION);
    //stampa id=>1
    $id=10;
    print_r($_SESSION);
    //stampa id=>10 
    ditemi che non è possibile e che c'è qulcosa che non riesco a vedere

  2. #2
    devi settare register_globals su off altrimenti si crea confusione tra $_SESSION['id'] e $id


  3. #3
    intanto ti ringrazio della risposta, ma non ho accesso diretto al server, quindi che mi consigli di fare? è meglio che cambio il nome alla variabile?

  4. #4
    puoi usare .htaccess?

  5. #5
    sinceramente non lo so, ora vedo

  6. #6
    Originariamente inviato da jeck
    intanto ti ringrazio della risposta, ma non ho accesso diretto al server, quindi che mi consigli di fare? è meglio che cambio il nome alla variabile?
    Le variabili che passi via post, get session e cookie dovrebbero aver "sempre" tutti nomi diversi a prescindere dal register_globals. Perche' possono (anzi vengono) sovrascritte se l'indice e' uguale. C'e' un ordine di lettura stabilito nel php.ini alla voce:

    variables_order = "GPCS"

    in questo caso l'ordine e' GET, POST, COOKIE, SESSION. Se tu avessi per esempio $_GET[id], $_POST[id], $_SESSION[id] ti troveresti in get ed in post il valore di session.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da piero.mac
    Le variabili che passi via post, get session e cookie dovrebbero aver "sempre" tutti nomi diversi a prescindere dal register_globals. Perche' possono (anzi vengono) sovrascritte se l'indice e' uguale. C'e' un ordine di lettura stabilito nel php.ini alla voce:

    variables_order = "GPCS"

    in questo caso l'ordine e' GET, POST, COOKIE, SESSION. Se tu avessi per esempio $_GET[id], $_POST[id], $_SESSION[id] ti troveresti in get ed in post il valore di session.

    Si ma io metto $id=$_SESSION in una pagina, poi in un'altra pagina solo $id=10, non c'è nessun post o get con variabile di nome id, faccio solo una query e utilizzo $_SESSION['id'], ma non la metto in nessuna variabile, è uguale?

  8. #8
    Originariamente inviato da jeck
    Si ma io metto $id=$_SESSION in una pagina, poi in un'altra pagina solo $id=10, non c'è nessun post o get con variabile di nome id, faccio solo una query e utilizzo $_SESSION['id'], ma non la metto in nessuna variabile, è uguale?
    con register_globals su off $_SESION['id'] e $id sono la solita cosa cmq
    Se avvii la sessione modificare $id o $_SESSION['id'] è indifferente

    Ti ricordi come si faceva prima della 4.2.0
    session_start();
    session_register('id');
    $id = 'bubu';

    se tieni register_globals su off è la solita cosa con
    $id = 'bubu';
    modifichi le variabili registrate in sessione altrimenti non ci sarebbe retrocompatibilità

  9. #9
    Il register_globals sta su on, comunque credo che modifico solo il nome della variabile, tanto è solo una pagina, ora non ho tempo vedere .htaccess
    grazie a tutti

  10. #10
    Originariamente inviato da jeck
    Si ma io metto $id=$_SESSION in una pagina, poi in un'altra pagina solo $id=10, non c'è nessun post o get con variabile di nome id, faccio solo una query e utilizzo $_SESSION['id'], ma non la metto in nessuna variabile, è uguale?
    Non saprei che dirti. Credo poco probabile il caso che tu nella stessa pagina metta il valore in una variabile e questa poi ti modifichi un array. Forse nel passaggio da una pagina ad un altra potrebbe sovrascrivere la variabile passata con register_globals ON con un altro dato di var superglobale.

    Per es.:

    da form invii <input type=text name=id value=2>

    in $_SESSION[id] = 10

    Nella pagina di arrivo potresti trovare $_SESSION[id] = 2, perche' il dato $id (like superglobale) ha sovrascritto l'indice id di SESSION. Uguale come se usassi $_REQUEST. Una volta dichiarati globali puoi utilizzare direttamente la variabile senza estrarla dall'array. Pero' nel tuo caso bisognerebbe vedere tutto il codice.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.