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

    Problema strano login (sessioni)

    Salve a tutti,

    da una settimana ho cambiato server dove ospitavo il mio sito e alcuni miei amici mi dicono che a volte non riescono a far andare a buon fine l'autenticazione.
    In pratica se i dati sono esatti, dovrebbe memorizzare su sessioni nomeutente, password, email ecc...
    e poi ad ogni pagina protetta faccio un controllo in questa maniera:
    Codice PHP:
    session_start();
    if (!isset(
    $_SESSION['username']) { header("Location: login.php?pagina=".$_SERVER['PHP_SELF']); die(); } 
    in locale mi funziona sempre, ma altri miei amici mi dicono che spesso, se non sempre, anche se inseriscono i dati esatti, non memorizza le sessioni e devono fare l'autenticazione all'infinito...
    Strano perché non è mai successo sul server precedente, cmq il nuovo server ha la stessa versione di PHP del vecchio;

    per sicurezza vi mando anche la parte che fa il login:
    Codice PHP:
    $connection mysql_pconnect("$dbhost","$dbusername","$dbpasswd")
        or die (
    "Impossibile connettersi al server MySQL.");
    $db mysql_select_db("$database_name"$connection)
        or die(
    "Impossibile selezionare il database.");
    if (!empty(
    $_POST['username']) and !empty($_POST['password'])) {
        
    $sql mysql_query("SELECT * FROM login WHERE username='".$_POST['username']."' AND password='".$_POST['password']."'");
        
    $login_check mysql_num_rows($sql);
        if(
    $login_check 0){
            while(
    $row mysql_fetch_array($sql)){
                foreach( 
    $row AS $key => $val ){
                    $
    $key stripslashes$val );
                }
                
    // Registrazione variabili in sessioni
                
    session_register('username');
                
    $_SESSION['username'] = $row['username'];
                
    session_register('password');
                
    $_SESSION['password'] = $row['password'];
                
    session_register('admin');
                
    $_SESSION['admin'] = $row['admin'];
                
    session_register('nome');
                
    $_SESSION['nome'] = $row['nome'];
                
    $loggato 1;
                  if (!empty(
    $_GET['pagina'])) { header("Location: ".$_GET['pagina']); die(); }
            }
        } else { 
    $errore "I dati inseriti non sono corretti!";
        }
    } else { 
    $errore "Compilare tutti i campi!";

    Aiutatemi vi prego, è di vitale importanza!!!
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  2. #2
    Un paio di annotazioni.

    Se usi $_SESSION e' deprecato l'uso di session_register()

    http://www.php.net/manual/it/ref.session.php


    Se l'aspettativa dalla query e' una sola riga... non mettere if risultato > 0 e nemmeno fare il ciclo while.

    if($login_check == 1){
    $row = mysql_fetch_array($sql);

    Lasci la possibilita' di scorrere tutta la tabella nel caso di una sql injection (ammesso e non concesso si possa fare)...


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

  3. #3
    quindi cosa dovrei cambiare? togliere il session_register?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  4. #4
    [supersaibal]Originariamente inviato da hacker_nait
    quindi cosa dovrei cambiare? togliere il session_register? [/supersaibal]
    Se hai register_globals = Off dovresti usare $_SESSION.

    oltretutto session_register() non ti servirebbe piu'.


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

  5. #5
    io preferirei il session_register al $_SESSION
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  6. #6
    si ma se uso session_register, poi come faccio a dire che in una variabile deve andare una stringa?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  7. #7
    [supersaibal]Originariamente inviato da Manuelandro
    io preferirei il session_register al $_SESSION [/supersaibal]
    Non e' una questione di gusti, ma di indicazione del manuale.

    Puoi anche usarlo, salvo poi rivedere tutti i tuoi script. "Funzione deprecata" detto dal manuale significa l'anticamera della radiazione della funzione. Fai tu...

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

  8. #8
    [supersaibal]Originariamente inviato da piero.mac
    Non e' una questione di gusti, ma di indicazione del manuale.

    Puoi anche usarlo, salvo poi rivedere tutti i tuoi script. "Funzione deprecata" detto dal manuale significa l'anticamera della radiazione della funzione. Fai tu... [/supersaibal]
    ok, allora mi correggo!!
    Io uso session_register();
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  9. #9
    comunque forse questo problema è dato dal fatto che alcuni miei amici hanno il blocco cookies, quindi non ci sarebbe un modo per evitare ke la sessione non venga memorizzata?
    ho visto su php.ini che c'è session.use_cookies = 1, e se la mettessi su 0
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  10. #10
    [supersaibal]Originariamente inviato da Manuelandro
    ok, allora mi correggo!!
    Io uso session_register(); [/supersaibal]
    Cautela
    Se state usando $HTTP_SESSION_VARS/$_SESSION e register_globals non è attiva, non usate session_register(), session_is_registered() e session_unregister().

    Se attivate register_globals, session_unregister() dovrebbe essere usata dal momento in cui le variabili di sessione vengono registrate come variabili globali quando i dati di sessione vengono deserializzati. Disattivare register_globals è raccomandato sia per motivi di sicurezza che di prestazione.
    @hacker_nait

    leggi la pagina del manuale postato.


    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.