Visualizzazione risultati 1 fino 6 di 6

Discussione: [php] Sessioni: problema misterioso!

  1. #1
    siweb non è connesso Neofita
    Data registrazione
    06-09-2008
    Messaggi
    18

    Predefinito [php] Sessioni: problema misterioso!

    Non riesco a capire questo malfunzionamento che non si verifica sul mio server locale (PHP4.3.10 - Easyphp1.8) ma si verifica su AV.
    Ho un file (aggiorna_db.php) tramite il quale modifico i campi di un record e che mi permette, oltre a salvare le modifiche, anche di inserire i dati di chi le ha effettuate.
    I dati dell'utente (ad. es. Paolo Rossi) sono inseriti nella variabile $firma_db (che li prende da $_SESSION['firma']).
    La parte che riguarda la visualizzazione e modifica dei dati è svolta all'interno della funzione dblib(...) che, alla fine, invia gli stessi via POST allo stesso aggiorna_db.php ed invia anche la password che (ed è qui probabilmente il problema) ha nome "firma" e, supponiamo, abbia valore "pollo".

    Quando in aggiorna_db.php cerco di effettuare la query che mi permette di inserire i dati dell'utente, trovo che la variabile $firma_db invece di valere "Paolo Rossi" vale "pollo".
    Di seguito un sunto estremo del programma.

    Grazie a chi mi potrà dare qualche dritta!

    Alberto

    _______________________________________________

    aggiorna_db.php

    Codice PHP:
    <?php
    SESSION_START
    ();
    $_SESSION['firma']=$firma_db;

    function
    dblib(....)
    {
    echo
    "<form method=post action=aggiorna_db.php name='autenticazione' id='autenticazione'>
    .........
    //vengono visualizzati i campi del record da modificare
    .........

    echo"
    <br><br>Password <input name='firma' type='password'>
    <
    input type=submit name=vai value=accetta>";

    }


    .........
    // per inserire il nominativo dell'utente che ha effettuato la modifica
    $sql = "UPDATE ".$tabella." SET CHIUSO='".$firma_db." ".date('Y-m-d H:i:s')."' WHERE ".$n." = '".$v[0]."'";
    .........
    ?>
    Ultima modifica di darkwolf : 02-02-2010 alle ore 14.10.49 Motivo: +php

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Nel codice che hai postato l'unico errore evidente è "$_SESSION['firma']=$firma_db;". Se vuoi assegnare un valore a $firma_db dovresti posizionarla a sinistra.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    sarà una sciocchezza ma cambia
    Codice PHP:
    echo"<br><br>Password <input name='firma' type='password'>
    <input type=submit name=vai value=accetta>"
    ;

    }
    in

    Codice PHP:
    echo"<br><br>Password <input name='firma' type='password'>
    <input type='submit' name='vai' value='accetta'>"
    ;

    }

  4. #4
    siweb2 non è connesso Neofita
    Data registrazione
    17-10-2008
    Messaggi
    5

    Predefinito Bo!

    In effetti ho sbagliato a scrivere nel riepilogo, non è $_SESSION['firma']=$firma_db; ma $firma_db=$_SESSION['firma'];
    Quello che non capisco è come mai lo stesso codice in locale funziona benissimo e su altervista no!
    Non è il primo problema che ho avuto con le sessioni e, sarà un caso, ma sempre con variabili con nome simile.
    Ho risolto, brutalmente, riassegnando $_SESSION['firma']=$firma_db; in un punto dove poi non cambia più. Ma il mistero rimane...
    Grazie

    Alberto

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    se cerchi di usare il valore di $firma_db dentro una funzione, non puoi raggiungere la variabile, perché questa è definita fuori di essa, nello scope globale.

    Per utilizzarla, devi aggiungere nella tua funzione la riga global $firma_db;
    Codice PHP:
    function dblib(....)
    {
    global
    $firma_db;
    echo
    "<form method=post action=aggiorna_db.php name='autenticazione' id='autenticazione'>
    ...
    Facendo l'assegnazione dentro la funzione non avevi invece problemi perché $_SESSION è superglobale, e quindi raggiungibile sempre e ovunque.

  6. #6
    siweb2 non è connesso Neofita
    Data registrazione
    17-10-2008
    Messaggi
    5

    Predefinito Grazie

    Sicuramente hai ragione, il problema è la mancanza della definizione della variabile $firma_db come global.
    Strano però che $_SESSION['firma'] assuma il valore della variabile $firma, tieni presente che in locale questo non succede.
    Comunque scrivendo correttamente il codice non dovrebbero esserci problemi.
    Grazie

    Alberto

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •