Visualizzazione dei risultati da 1 a 9 su 9

Discussione: POST + SESSION = bug?

  1. #1

    POST + SESSION = bug?

    Ciao a tutti.

    Ho notato una cosa molto strana, sia con php 4 che 5.
    Mettiamo che io abbia una variabile POST chiamata "nome" e nella sessione ho anche una SESSION con lo stesso nome.
    Nel momento in cui per qualsiasi motivo faccia

    $nome = $_POST['nome']

    anche la variabile di sessione acquisirà il valore che c'era in quella POST!
    Per risolvere chiamo tutte le variabili di sessione con due underscore davanti ($_SESSION['__nome'] per intenderci).
    Strano, non trovate?

  2. #2
    credo che dipenda dalla configurazione del php...
    altrimenti nessuno dei miei programmi andrebbe...
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Non ricordo bene ma se hanno lo stesso nome vanno a scalare, non so se ha precedenza $_SESSION o $_POST.
    Io come hai già fatto tu le chamo in modo diverso.

  4. #4
    Originariamente inviato da michelepi
    Non ricordo bene ma se hanno lo stesso nome vanno a scalare, non so se ha precedenza $_SESSION o $_POST.
    Io come hai già fatto tu le chamo in modo diverso.
    Incredibile, pensavo fossero due tipi di variabili completamente diverse VVoVe:

  5. #5

    Re: POST + SESSION = bug?

    Originariamente inviato da Tobler
    Mettiamo che io abbia una variabile POST chiamata "nome" e nella sessione ho anche una SESSION con lo stesso nome.
    Nel momento in cui per qualsiasi motivo faccia

    $nome = $_POST['nome']

    anche la variabile di sessione acquisirà il valore che c'era in quella POST!
    Per risolvere chiamo tutte le variabili di sessione con due underscore davanti ($_SESSION['__nome'] per intenderci).
    Strano, non trovate?
    Potresti postare un esempio di codice che riproduce il problema?

    Ho provato a simularlo, ma non ci sono riuscito:

    Codice PHP:
    <?php 

    error_reporting
    (E_ALL E_NOTICE); // disabilito i notice, giusto per risparmiare codice;

    session_start();

    $_SESSION['test'] = isset($_SESSION['test']) ? $_SESSION['test'] : 'session';

    print(
    '$test = ' $test '
    '
    );
    print(
    '$_POST["test"] = ' $_POST["test"] . '
    '
    );
    print(
    '$_SESSION["test"] = ' $_SESSION["test"] . '
    '
    );
    print(
    '$_GET["test"] = ' $_GET["test"] . '
    '
    );

    print(
    '
    '
    );

    $test $_POST['test'];

    print(
    '$test = ' $test '
    '
    );
    print(
    '$_POST["test"] = ' $_POST["test"] . '
    '
    );
    print(
    '$_SESSION["test"] = ' $_SESSION["test"] . '
    '
    );
    print(
    '$_GET["test"] = ' $_GET["test"] . '
    '
    );

    ?>
    <form method="post" action="?test=get">
    <input type="hidden" name="test" value="post" />
    <input type="submit" />
    </form>
    Originariamente inviato da michelepi
    Non ricordo bene ma se hanno lo stesso nome vanno a scalare, non so se ha precedenza $_SESSION o $_POST.
    Forse ti riferisci a $_REQUEST (di cui sconsiglio l'utilizzo) e non a $_POST.

  6. #6
    Spero di non dire cavolate... ma se controlli dovresti avere il Register Globals del php su ON.

    Praticamente fa si che se hai $_SESSION['nome'] la pui richiamare anche con $nome...
    ovviamente questo funziona anche per POST e GET... ed ovviamente se tu hai $_SESSION['nome'] e $_POST['nome'].. usando $nome le setti entrambe!


  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da StefanoV
    Spero di non dire cavolate... ma se controlli dovresti avere il Register Globals del php su ON.

    Praticamente fa si che se hai $_SESSION['nome'] la pui richiamare anche con $nome...
    ovviamente questo funziona anche per POST e GET... ed ovviamente se tu hai $_SESSION['nome'] e $_POST['nome'].. usando $nome le setti entrambe!

    Confermo la "cavolata"

  8. #8
    Originariamente inviato da gianiaz
    Confermo la "cavolata"

  9. #9
    Ok ragazzi grazie a tutti per le risposte

    Per quanto riguarda quello che chiedeva Filippo.toso, il mio codice ha due differenze con il suo:

    1) uso indifferentemente su get, post, session i nomi con il singolo apice (ma credo non cambi nulla)

    2) lo scherzo avviene quando passo da una pagina all'altra, ovvero da un session_start() ad un altro session_start().

    Eppure la "cavolata" di stefanoV è esattamente quello che mi succede

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.