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

    non mi funzionano le sessioni in remoto

    ciao, ho un problema... ho impostato un semplice metodo di login che su locale funziona ma in remoto no...vi posto il codice:

    codice:
    <?php session_start (); 
    
    
    $username = $_POST['username'];
    $password = sha1 ($_POST['password']);
    $query = "SELECT user_id, username FROM utenti WHERE username = ('$username') AND password = ('$password')";
    $result =  mysql_query ($query, $conn);
    $indirizzo =  base64_decode ($_POST['indirizzo']);
    
    if (!$result) {  echo ("Username inesistente" . mysql_error ()); }
    		
    if  (mysql_num_rows ($result) == 1 )  { $messaggio =  "<h3>login effettuato</h3>";
    										$utentetrovato = mysql_fetch_array ($result); 
    										$_SESSION ['user_id'] =  $utentetrovato ['user_id'] ;
    										$_SESSION ['username'] =  $utentetrovato ['username'] ;
    										redirect( $indirizzo , 0);
    										}
    
    else { $messaggio = '<h3 class="centrato">Nome utente e/o Passord errati</h3>'; echo ($messaggio);	}	
    
    ?>
    e non funziona...premesso che ho incluso il session_start(); all'inizio di ogni pagina e che la versione php del server è la 5.2... la sessione non funziona...o meglio... ho incluso in una pagina di prova questo codice:

    codice:
    <?php if(!isset($_SESSION['user_id'])){ echo('<h3>user_id non trovato</h3>');}
     if(!isset($_SESSION)){ echo('<h3>sessione non avviata 2</h3>');} ?>
    il primo echo è visibile mentre il secondo no... quindi significa che la sessione è avviata ma non ha registrato la variabile... però su easyphp funziona tutto ok mentre su server no...come mai? non so dove sbattere la testa...

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    e se tu provassi a distruggerla sempre quando non torna il risultato?

    Codice PHP:
    if (!$result) {  echo ("Username inesistente" mysql_error ()); session_destroy(); } 
    probabilmente nelle prove sei incappato in questa situazione e il sistema ti vedeva sempre loggato...

    inoltre per la sessione verifica sempre che non ci siano eventuali spazi bianchi o altro tra l'ionizo dello script e il tag <?php


    infine se devi fare debug ti consiglio di settare la visualizzazione degli errori e mettere magari a inizio script (nol config, nell' init , bootstrap o altro questo

    Codice PHP:
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors',1); 
    vedrai eventuali NOTICE e WARNING che altrimenti l'eventuale configurazione di default non ti fà vedere

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    e' un errore di valutazione. $_SESSION e' sempre settato dopo il session start, anche se vuoto.

    Invece di usare isset() usa empty();

    prova con session_start() e senza session_start e vedi la differenza:

    Codice PHP:
    <?php
    session_start
    ();

    if(empty(
    $_SESSION)) echo 'sessione vuota con empty';

    if(isset(
    $_SESSION)){ echo 'sessione settata con isset';}
    else echo 
    '
     sessione vuota con isset'
    ;

    ?>

    @edit ... dimenticavo. Se le parentesi non servono non le mettere sono solo una cosa in piu' inutile che deve valutare il parser.

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

  4. #4
    grazie della tempestiva risposta, ho provato a inserire quel codice che restituisce gli errori e mi stampa questi numeri: 6135
    e solo questi...cosa significa?

    poi ho provato a mettere il session destroy e adesso mi restituisce entrambi gli echo se sbaglio il login...ma penso sia normale...

  5. #5
    facendo come dice piero mac mi dice che la sessione è settata ma è vuota se vista nella pagina normale, e se provo a fare login rimane sempre vuota... qui credo che sia un problema di codice che non inserisce le variabili in sessione...ma non so dove!!!

  6. #6
    Originariamente inviato da giorda86
    facendo come dice piero mac mi dice che la sessione è settata ma è vuota se vista nella pagina normale, e se provo a fare login rimane sempre vuota... qui credo che sia un problema di codice che non inserisce le variabili in sessione...ma non so dove!!!
    prima di uscire dalla pagina stampa $_SESSION.

    print_r($_SESSION);

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

  7. #7
    avevo già provato e mi restituisce in ogni caso array()

    allora ho fatto un'altra prova... facendo un cosa del genere nell'index:

    codice:
    $_SESSION ['prova'] =   'prova';
    cosi non mi da più array() ma mi dice che la variabile è stata inserita nella session... quindi penso che l'errore stia qui:

    codice:
    
    $username = $_POST['username'];
    $password = sha1 ($_POST['password']);
    $query = "SELECT user_id, username FROM utenti WHERE username = ('$username') AND password = ('$password')";
    $result =  mysql_query ($query, $conn);
    $indirizzo =  base64_decode ($_POST['indirizzo']);
    
    if (!$result) {  echo ("Username inesistente" . mysql_error ()); }
    		
    if  (mysql_num_rows ($result) == 1 )  { $messaggio =  "<h3>login effettuato</h3>";
    										$utentetrovato = mysql_fetch_array ($result); 
    										$_SESSION ['user_id'] =  $utentetrovato ['user_id'] ;
    										$_SESSION ['username'] =  $utentetrovato ['username'] ;
    										$_SESSION ['prova'] =   'prova';
    										redirect( $indirizzo , 0);
    										}
    
    else { $messaggio = '<h3 class="centrato">Nome utente e/o Passord errati</h3>'; echo ($messaggio);	}
    come potete vedere ho inserito la prova anche qui, ma in questa pagina non la inserisce in sessione, quindi non è un errore di query...la cosa strana è che in locale funziona...

  8. #8
    Originariamente inviato da giorda86
    avevo già provato e mi restituisce in ogni caso array()
    quindi non valorizzi $_SESSION

    metti degli echo per vedere cosa stampa il result set....

    ma cos'e' quella funzione redirect()?
    e quando lo stampi il "login effettuato" ????

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

  9. #9
    allora...ho provato tutto sia in locale che in remoto...in entrambi i casi se faccio l'echo di $result mi da 'Resource id #8 ' però in locale se faccio print_r($_SESSION); mi da i valori che voglio dentro l'array di sessione...in remoto niente, rimane sempre vuoto...

    quella cosa del redirect è un metodo che mi sono inventato per far si che un utente che fa login (il form login è incluso nell'header della pagina) ritorni nella pagina in cui stava... praticamente passo l'url della pagina corrente codificata alla pagina di risultato del login e reindirizzo a quella pagina automaticamente se il login è stato effettuato... login effettuato effettivamente è inutile...dovrei toglierlo...

  10. #10
    veramente non intendevo la stampa del resource id# ma del result set.

    $utentetrovato = mysql_fetch_array ($result);

    print_r($utentetrovato);

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