Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    check login che non funziona più

    Ciao a tutti,
    premetto che non sono super esperto di PHP.
    Ho un codice che ha sempre funzionato bene, nel cambiare server (con l'aggiornamento alla versione PHP 5.5.12) mi dà problemi.

    In sostanza è uno script per il check login, prende user e pass inserite dall'utente, fa una select sul db mysql tramite odbc e se questo restituisce un valore allora l'utente entra. Sul db la pass è criptata sha1.

    Il problema è che adesso si collega al db ma quando verifico che il numero di righe del risultato siano diverse da 1 tale check non funziona bene......

    Ho provato a usare "mysqli" perchè mi diceva che era superato come codice ma nulla da fare.....non so se c'entra.

    Qualcuno ha dei suggerimenti? GRAZIE MILLE.




    Codice PHP:

    <?php
    ob_start
    ();
    if(!isset(
    $_SESSION))  {session_start();}

    $log=mysqli_connect("localhost","xxxxxx","xxxxxx","sito")or die("Connessione non riuscita con il server MySql");

    // se esistono i cookie verifico che l'user e la pas salvate siano ancora esistenti nel db

    if(isset($_COOKIE['nome']) && isset($_COOKIE['nome2'])){
        
    $nick $_COOKIE['nome'];    
        
    $pass $_COOKIE['nome2']; 
       }
    else{    
    // i cookie non esistono quindi verifico i dati del form di login  
    if (!isset($_POST['nick']) || !isset($_POST['pass'])) {
           
    header("location:main_login.php");       die;  
      }  
    if (empty(
    $_POST['nick']) || empty($_POST['pass'])) {       
         
    header("location:main_login.php");        die;    
    }
        
    // username and password inviati dal form
    $nick=strip_tags($_POST['nick']);    //rimuove eventuali tag html
    $pass=strip_tags($_POST['pass']);
     
    // protezione MySQL injection
    $nick stripslashes($nick);  //rimuove le backslash
     
    $pass stripslashes($pass);   
    $nick mysql_real_escape_string($nick);    
    $pass mysql_real_escape_string($pass);    
    $pass sha1($pass);
    }

    // cerco le credenziali nel db su mysql
    $sql="SELECT * FROM users WHERE nickname='$nick' and password='$pass'";
    $result=mysqli_query($log$sql);

    # SE NON TROVA TALE OCCORRENZA EFFETTUA REDIRECT AL LOGIN

    if(mysql_num_rows($result) != 1)
    {    
    // cancello eventuali cookie che esistevano ma non sono più validi  
      
    if(isset($_COOKIE['nome']) && isset($_COOKIE['nome2'])){ 
           
    setcookie ("nome"""time() - 3600);     
           
    setcookie ("nome2"""time() - 3600);    }   
     
    mysql_close();    
    header("location:main_login.php");  
      die;}

    # CREDENZIALI OK - NEL CASO IN CUI L'OCCORRENZA ESISTE CREA LA SESSIONE

    $_SESSION["autorizzato"] = 1;
    $_SESSION['nick'] = $nick;
    if(isset(
    $_POST['ricorda']) && $_POST['ricorda']=="R"){  
      
    setcookie("nome"$nicktime()+60*60*24*365*2);     // 2 anni 
     
    setcookie("nome2"$passtime()+60*60*24*365*2);
    }

    // Redirect alla pagina riservata (con check ogni pag)   
     
    header("location:index.php");

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    cosa significa "quando verifico che il numero di righe del risultato siano diverse da 1 tale check non funziona bene"?
    esattamente cosa fa?

  3. #3
    Con l'istruzione
    if(mysql_num_rows($result) != 1)

    verifico che il numero delle righe presenti nel risultato della select sia diverso da uno (se con la select trovo user e pass nel db il risultato sarà composto da 1 riga quindi se non corrisponde a 1 vul dire che non ha trovato user e pass nel db).

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    A parte che dovresti usare mysqli_num_rows(), visto che tutta la connessione è mysqli, perché non funziona il controllo? Non cancella i cookie? Non setta la sessione? Va in errore?

    Comunque, secondo me il tuo codice può essere notevolmente efficientato

  5. #5
    l'errore era proprio il mysql al posto di mysqli, il codice l'avevo fatto molto tempo fa e riconosco non sia dei migliori ma le mie conoscenze sono limitate aimè.
    avete per caso degli esempi di script x la verifica utente da un db mysql o da altri db?

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.