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

    Accesso login php+mysql errore...

    Salve a tutti, ho un problema probabilmente il problema risiede lato mysql, in ogni caso posto qua. Allora per il login utenti registrati uso questo:

    codice:
    <form action="login_verify.php" method="post">
            
            <td bgcolor="#016728"><span class="Stile4">Utente:
                <input name="utente" type="text" size="10" maxlength="5">
            </span></td>
            <td bgcolor="#016728"><span class="Stile4">PIN:
              <input name="password" type="password" size="10" maxlength="5">
            </span></td>
            <td bgcolor="#016728"><input type="submit" name="Submit" value="Accedi"></td>
    </form>
    codice:
    session_start();
    
    include("connessione_db.php"); //connetto al db e seleziono il database
    mysql_select_db("$db_name",$connessione); //seleziono il database ufficio usando lo script di connessione al mysql
    
    /*variabili POST*/
    $username=strip_tags($_POST['utente']);
    $password=strip_tags(sha1($_POST['password']));
    
    
     $query = "SELECT * FROM clienti WHERE utente = '$username' AND pass = '$password' ";
     $ris = mysql_query($query, $connessione) or die (mysql_error());
     $riga=mysql_fetch_array($ris);  
     
    /*Prelevo l’identificativo dell'utente */
    $cod=$riga['utente'];
    
    /* Effettuo il controllo */
    if ($cod == NULL) $trovato = 0 ;
    else $trovato = 1;  
    
    /* Username e password corrette */
    if($trovato === 1) {
    
     /*Registro la sessione*/
     
      session_register('autorizzato');
      $_SESSION["autorizzato"] = 1;
      /*Registro il codice dell'utente*/
      $_SESSION['cod'] = $cod;
      
      
     /*Redirect alla pagina riservata*/
      
       echo '<script language=javascript>document.location.href="pagina_riservata.php"</script>'; 
     
    } else {
    /*Username e password errati, redirect alla pagina di login*/
     echo '<script language=javascript>document.location.href="login.php"</script>';
    }
    ?>
    Via mysql ovviamente ho creato la tabella con relativi dati di accesso ma non funziona mi da sempre che non trova il nome utente.. può esere quesione di caratteri speciali? come si fa a filtrare?
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    86
    Ciao,

    prima di tutto, ti sconsiglio di utilizzare sha1() per proteggere le tue password: puoi controllare tranquillamente sul web, oppure cominciare leggendo questo articolo, molto interessante, su come proteggere nella maniera corretta le proprie password tramite PHP.

    Torniamo al tuo problema:

    Prima cosa, banale: prova a stampare a video il tuo nome utente che passi tramite la chiamata, così almeno controlli che sia corretto

    Vedi anche cosa ti restituisce utilizzando strip_tags().

  3. #3
    ho capito cos'è che non va... in pratica mettendo come nome utente e password dei numeri funziona... mi sapreste dire:

    x impostare il nome utente in mysql che campo devo scegliere? VARCHAR, INT o TEXT? che lunghezza? che opzioni aggiuntive?

    e per la password?
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il controllo se l'utente viene trovato o meno non si fa così
    Codice PHP:
    $query "SELECT * FROM clienti WHERE utente = '$username' AND pass = '$password' ";
     
    $ris mysql_query($query$connessione) or die (mysql_error());
     
    $riga=mysql_fetch_array($ris);  
     
    /*Prelevo l’identificativo dell'utente */
    $cod=$riga['utente'];

    /* Effettuo il controllo */
    if ($cod == NULL$trovato ;
    else 
    $trovato 1
    Perché così se non si trova niente mysql_fetch_array va in errore (invalid supplied argument) dato che non c'è niente di cui fare il fetch.

    Il controllo va fatto in quest'altro modo
    Codice PHP:
    $query "SELECT * FROM clienti WHERE utente = '$username' AND pass = '$password' ";
    $ris mysql_query($query$connessione) or die (mysql_error());

    if(
    mysql_num_rows($ris) > 0//trovato un riscontro
    {
        
    $riga=mysql_fetch_array($ris);
        
    $cod=$riga['utente'];
        
    session_register('autorizzato');
        
    $_SESSION["autorizzato"] = 1;
        
    /*Registro il codice dell'utente*/
        
    $_SESSION['cod'] = $cod;
      
      
        
    /*Redirect alla pagina riservata*/
        
    echo '<script language=javascript>document.location.href="pagina_riservata.php"</script>'
    }
    else
    {
        
    /*Username e password errati, redirect alla pagina di login*/
        
    echo '<script language=javascript>document.location.href="login.php"</script>';


  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    86
    Direi che un VARCHAR di 300 dovrebbe essere pienamente sufficiente (testo entro i 300 caratteri).

    Per la password, vedi il mio post sopra

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    300 caratteri per una password???
    Alla faccia...

  7. #7
    perchè mettendo numeri al posto di lettere come elementi funziona e se metto testo no?
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  8. #8
    ok risolto avevo limitato i caratteri XD
    http://www.targetweb.it - Web design, guide e risorse utili su Html5, jQuery, Css3

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    86
    No, 300 caratteri lo user name (preferisco sempre stare largo, per quanto mi riguarda)

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Beh, anche 300 caratteri per l'username sono un'infinità, chi è che quando deve fare il login sta lì a scrivere un nome di 300 caratteri?
    Tra l'altro puoi sempre obbligare gli utenti a sceglierne uno più corto.
    Secondo me per l'username, già 50 caratteri sono troppi.

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.