Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105

    [php LOGIN] Gestione messaggi di login errato

    Salve, ho una curiosità da togliermi
    Ho un sistema di Login: sulla home page c'e' il piccolo form che rimanda a checklogin.php dove effettuo i controlli su username password e permessi. Se è tutto ok rimanda l'utente loggato alla pagina dove deve andare MA se qualcosa non va (es. pass errata, user errato) rimando ad una pagina dove mostro a video la causa del fallito login.
    Ad esempio nel caso di password sbagliata ho un header("locationwerrata.php"); per l'username ho un header("location:userrato.php"); ecc ecc... Uso Header("location:blablabla") perchè utilizzando il semplice Print "password errata" mi apparirebbe il messaggio di errore su schermata bianca che francamente trovo poco carina, ecco che allora mi son creato le mie paginette userrato.php, pwerrata.php ecc ecc dove non c'e' la schermata bianca ma c'e' il sito con il suo bel template (spero di essere stato chiaro)

    Quello che mi chiedevo è se fosse possibile gestire questi messaggi di errore direttamente dalla pagina dove sta il form. Quindi in caso di pw errata non rimandare a nessuna pagina ma rimanere nella home e mostrare a video un alert "password errata".

    Avevo pensato di usare "ISSET" e quindi alla prima esecuzione della pagina home dove sta il form non succede nulla, quando riempio il modulo e lo invio lo script parte, controlla e in caso di errore spara un alert ma sempre stando su home.php. MA mi chiedo... è sicuro come login? e sopratutto è corretto come sistema? :master:

    Se qualcuno volesse cortesemente darmi la sua opinione sul mio sistema o volesse darmi qualche dritta sulla gestione dei messaggi di errore di login restando nella pagina principale
    ve ne sarei molto grato

    Grazie in anticipo per l'aiuto!

  2. #2
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Si, puoi caricare lo script nella stessa pagina dove hai la form: es:

    Codice PHP:
    <form action="#" method="POST">
       <input type="text" name="user" />
       <input type="password" name="pwd" />
       <input type="submit" value="login" name="log" />
    </form>

    <?php
       
    if(isset($_POST['log'])) {
          
    $_POST['user'];
          
    $_POST['pwd'];
          
    $msg login($user$pass);
          echo 
    $msg;
       }
    ?>
    O qualcosa del genere...certo non è il massimo dell'estetica, ma ho scritto di getto, sperando che più che il codice venga valutata l'idea


  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    105
    Ciao Gab, grazie per l'intervento Il mio non è un problema di codice, quello mi piace arrivarci da solo, piu' che altro cerco pareri... nel senso se la cosa è sicura, se è semplicemente una improponibile se è una buona idea o meno... ma GRAZIE lo stesso per il tuo intervento

  4. #4
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Altrimenti pensavo:

    Codice PHP:
    <form action="#" method="POST">
       <input type="text" name="user" />
       <input type="password" name="pwd" />
       <input type="submit" value="login" name="log" />
    </form>

    <?php
       
    if(isset($_POST['log'])) {
          
    $user $_POST['user'];
          
    $pass $_POST['pwd'];
          if(
    login($user$pass))
              
    header('Location: page.php');
          else
             echo 
    'Msg di errore';
       }
    ?>
    Ovviamente dentro login($user, $pass) metto il codice per la gestione del login


  5. #5
    Ciao Edonista =)

    Personalmente i controlli li faccio proprio all'interno della pagina logincheck.php che contiene il seguente codice php.

    Codice PHP:
    <?php
      
    //se è già presente il valore user in sessione significa che sei già loggato
      
    if(isset($_SESSION["user"])){
        print(
    "Hai già effettuato il login!");
      }
      else{
        
    //se è stato premuto il pulsante di invio del form nella pagina login.php
        
    if(isset($_POST["bAccedi"])){
        
    //verifico se sono stati completati entrambi i campi
        
    if(($_POST["tbUsername"] != "") && ($_POST["tbPassword"] != "")){
        
    //includo il file con le impostazioni del database
        
    include("../db.inc");

        
    //effettuo la mia select                                
        
    $sql "select * from tabella where username='".
        
    $_POST["tbUsername"] ."' and password='"$_POST["tbPassword"]."'";
        
    //var_dump($sql);
        
    $result $db->query($sql);

        
    //se restituisce un risultato allora lo salvo sul db
        
    if($db->affected_rows == 1){
          
    $row $result->fetch_assoc();
          
    $_SESSION["user"] = $row["username"];
          
    $result->free_result();
        }
        else{
          print(
    "Non è stata trovata alcuna corrispondenza!");
       }
     }
      
    //nel caso in cui non fossero stati compilati tutti i campi
      
    else{
        print(
    "Non hai inserito tutti i valori necessari!");
      }
    }
    }
    ?>
    Ovviamente questo è solo un esempio, che puoi farcire con tutti i controlli sull'integrità dei dati che vengono immessi.

    Quello che però non si può fare da una pagina simile è effettuare il redirect dopo aver visualizzato i messaggi in quanto vi è già un output.

    Spero di essere stato un pochino d'aiuto

    Saluti!

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.