Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500

    $_SESSION cambia valore

    Salve, sto effettuando un login, quando clicca sul bottone per effettuare il login, se corretto do valore alla session['user'] con il nome di chi ha effettuato il login.

    Dopodichè faccio un redirect alla pagina principale dell'utente e il problema nasce perchè il valore della sessione cambia, in uno sensato(Nome sito) e quindi non ho più il valore dell'utente..

    come posso capire da che parte nasce l'errore? Ecco il codice:

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    include(
    "menu.php");
    $script.='<title>' $nome '</title>';


    if(!isset(
    $_SESSION['user']) ){
       if(!isset(
    $_GET['action']) ){
           
        
    $content.='<div id="bodyArea">
        <div id="contentPanel">
          <p style="margin-bottom: 20px;">PAGINA VISITATORI</p>
        </div>'
    ;
        include(
    'panel.php');
        
    $content.='  </div>';
        
       }elseif(
    $_GET['action']=="attendere"){
            
    $login=addslashes(htmlspecialchars($_POST['login']));
            
    $passw=addslashes(htmlspecialchars($_POST['passw']));
           
            
    $link=mysql_connect($server,$user,$pass)or die(mysql_error());
            
    $sel_db=mysql_select_db($db,$link)or die(mysql_error());
            
            
    //RICERCA NEL DB
            
    $query="SELECT * FROM users";
            
    $exec=mysql_query($query,$link)or die(mysql_error());
            
            
    $loggato=FALSE;
            while(
    $temp=mysql_fetch_array($exec)){
                if(
    $login == $temp['user_login'] && $passw == $temp['user_pass'] && !$loggato){
                    
    $loggato TRUE;
                    
    $_SESSION['user'] = $temp['user_login'];
                    
    $content.='
    <div class="success">

    [i]Login effettuato correttamente, ora verrai reindrizzato alla pagina principale[/i]</p></div>
    '
    ;
                    
    $content.='<script type="text/javascript">
                    function reindirizzamento(){
                        window.location = "' 
    $sito '/"
                    }
                    setTimeout(\'reindirizzamento()\', ' 
    $tempo ')
                    </script>'
    ;
                }
            }
            
            if(!
    $loggato){
                    
    $content.='
    <div class="error">

    [i]Login non riuscito, riprova[/i]</p></div>
    '
    ;
                    
    $content.='<script type="text/javascript">
                    function reindirizzamento(){
                        window.location = "' 
    $sito '/"
                    }
                    setTimeout(\'reindirizzamento()\', ' 
    $tempo ')
                    </script>'
    ;

            }
       }
    }else{
    $content.='<div id="bodyArea">
        <div id="contentPanel">
          <p style="margin-bottom: 20px;">PAGINA LOGGATI</p>
        </div>'
    ;
        include(
    'panel.php');
        
    $content.='  </div>';
    };


            
    include(
    'footer.php');
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <?=$script?>
    </head>
    <body>
    <?=$content?>
    </body>
    </html>

  2. #2
    nello script non ho trovato session_start()

    se non apri la sessione $_SESSION non e' disponibile.

    dovresti poi cambiare tutti i short tag php con il tag esteso visto che cosi' deve essere.

    <? diventa <?php
    <?= diventa <?php echo

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500
    session start è inclusa nella pagina menu che la richiamo all'inizio

  4. #4
    Originariamente inviato da Vicar
    session start è inclusa nella pagina menu che la richiamo all'inizio
    bene, allora spiega con un esempio cosa vuoi dire con:
    Dopodichè faccio un redirect alla pagina principale dell'utente e il problema nasce perchè il valore della sessione cambia, in uno sensato(Nome sito) e quindi non ho più il valore dell'utente..
    potresti anche stampare $_SESSION

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    ma anzichè fare
    Codice PHP:
    $query="SELECT * FROM users"
    perchè non fai

    Codice PHP:
    $query="SELECT * FROM users WHERE user_login='" addslashes(htmlspecialchars($_POST['login'])) . "' AND user_pass='" addslashes(htmlspecialchars($_POST['passw'])) . "'"
    così ti eviti un inutile ciclo no?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500
    Il problema non è tanto la struttura dewl codice, il problema nasce nel momento che:

    Se effettua il login e tutto corretto
    la sessione utente prende valore coem il nome dell'utente loggato
    altrimenti non ha valore.

    Io gli do valore dell'utente loggato ma dopo il refresh della pagina cambia nome...

    E' quello il problema..

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    come ti ha suggerito piero.mac metti una stampa della sessione prima della chiusura del php, così vedi a quel punto la variabile cosa contiene....

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500
    Ho provato a mettere dei print e funziona tutto, una volta che aggiorno la pagina però cambia il nome delle sessione..

  9. #9
    Originariamente inviato da Vicar
    Ho provato a mettere dei print e funziona tutto, una volta che aggiorno la pagina però cambia il nome delle sessione..
    guarda che quel codice che hai postato dovresti profondamente rivederlo.

    Usa lo username e password per verificare la presenza nel db. Nessuna comparazione in php e sopratutto nessun while per scorrere i risultati visto che il risultato atteso dovrebbe essere o 1 record o nessun record, ed aggiungi un exit dopo il redirect in modo da stoppare sicuramente lo script.

    Pero' vale la prima indicazione. Rivedi "profondamente" la logica del tuo script.

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

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    500
    La logica è incasinata ma funziona, l'ho fatto appositamente per il sito che sto creando, aiuti riguardanti la session?

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.