Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Sessioni e variabili

  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626

    Sessioni e variabili

    Ciao a tutti,
    In questi giorni mi è capitato una cosa strana e non capisco da cosa dipende.
    Mi è stato chiesto di aggiungere alcune sezioni ad un sito già creato (ver PHP 5.2.5). Dato che il sito è alquanto vecchio ho dato una sistemata al sistema di autenticazione.In pratica in ogni pagina veniva fatto
    un
    session_register($username);
    session_register($password);

    e si controllava se erano settate.
    Io ho invece cambiato con l'uso del classico $_SESSION (rimovendo i session_register)
    Codice PHP:
    login.php
    ...
    if(
    username e passwd sono nel db){
         
    $_SESSION['user'] = $row//la riga del db;

    e fatto una funzione che verifica se l'utente è loggato e se ha il ruolo giusto, da richiamare nelle pagine di amministrazione:
    Codice PHP:
    function requireRole($roles = array('admin')){
          if(!isset(
    $_SESSION['user']))
                return 
    false;
          if(!
    in_array($_SESSION['user']['role'], $roles))
                return 
    false;
          return 
    true;


    Tutto sembrava funzionare per il meglio, ma in una pagina php di amministrazione $_SESSION['user'] veniva cambiata (portando a fallire il login se si cambiava pagina)
    Ho scoperto che il codice in questione era:
    $user = mysql_fetch_assoc($query);

    infatti, cambiando nome alla variabile $user la variabile $_SESSION['user'] non veniva toccata.

    Qualcuno mi sa spiegare questa relazione tra $user e $_SESSION['user'] ? io proprio non ci arrivo
    Ultima modifica di boots; 28-01-2014 a 10:23

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Scusa, ma se fai
    $user = mysql_fetch_assoc($query);

    $row da dove viene? Io mi sarei aspettato che tu facessi su questa il mysql_fetch_assoc()

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Intanto, grazie della risposta.
    Forse non mi sono spiegato bene. io nella pagina di login assegno a $_SESSION['user'] la corrispondente riga (mysql_fetch_assoc) del db.
    In una seconda pagina php di amministrazione (non fatta da me, ma modificato il sistema di autenticazione come spiegato sopra) viene fatta un altra query ed assegnato a $user un valore (mysql_fetch_assoc($query)).
    In sintesi il problema è che questo valore oltre che alla variabile $user viene assegnato anche a $_SESSION['user'] !!! e non capisco perchè

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Secondo me, hai il register_globals ad on sulle impostazioni del server.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ho controllato...effettivamente register_gloablas è on.
    Dispende da questo, secondo te ?

  6. #6
    Mi scuso subito per l'intrusione.
    Vorrei fare una richiesta a boots
    Hai postato questa risposta in febbraio 2013:
    "---
    Per disabilitare la cache del browser, metti questi header all'inizio della pagina
    < ?php
    // Presi da php.net http://it.php.net/manual/en/function.header.php
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache"); // HTTP/1.0
    ?>
    Tieni presente che però il no-cache vale per tutta la pagina
    In alternativa potresti mettere nei src delle immagini un campo random
    < ?php echo $img_path ?>?t=<?php echo time() ?>
    Il browser dovrebbe credere che l'immagine non è in cache, visto che time() cambierà ad ogni caricamento della pagina
    ---"
    La cosa potrebbe essermi utile (la seconda parte) Me la potresti chiarire?
    Se cortesemente potresti rispondermi, ho aperto una discussione in PHP "Cache file pdf"

    Mi scuso di nuovo per l'intrusione ma non sapevo come contattare boots
    Grazie ciao a tutti

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Quote Originariamente inviata da boots Visualizza il messaggio
    Ho controllato...effettivamente register_gloablas è on.
    Dispende da questo, secondo te ?
    Si, il register globals fa in modo che (ad esempio) dopo una request $_SESSION['user'] possa essere chiamato con $user.
    Devi avere una versione di php vecchiotta dato che nelle ultime versioni è stato deprecato il default su on e dalla 5.4 è addirittura scomparso come comando. Online questa cosa è abbastanza pericolosa comunque...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.