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

    Personalizzare gli errori

    Salve a tutti.
    Una volta verificato che finalmente mi funziona il modulo di login, avrei una domanda ..

    Dunque, nel file che regola la connessione ho imposto delle condizioni. Ad esempio se l'user o la pass non sono specificati, viene automaticamente indirizzato di nuovo alla pagina di login :

    Codice PHP:
    if ((!$user) || (!$pass))
    {
    header ("location: ../login_utenti.php");
    exit;

    La mia domanda e' questa : posso personalizzare l'errore ?
    Nel senso, vorrei che venisse comunicato quale parametro non e' stato inserito .. oppure, se ad esempio non esiste alcun user con quel nome, dire che l'user in questione non esiste.
    E' possibile, in un'ipoteticapagina login_fallito.php, modificare l'echo a seconda del parametro non inserito ( o della mancata corrispondenza del user nel db ) ?
    Oppure devo rassegnarmi a fare tante pagine quanti errori prevede il modulo ed indirizzare quindi a diversi " location " errore1, "location" errore2 etc etc ?

  2. #2
    certo che puoi!
    un esempio moolto banale potrebbe essere:

    Codice PHP:
    if (!$user || !$pass) {
     
    $err = (!$user) ? '?err=user' '?err=pass';
     
    header ("location: ../login_utenti.php{$err}");

    in login_utenti.php controlli se in get è impostata la variabile err e posti un messaggio ad-hoc.
    ripeto, questo è un esempio piuttosto semplice, il controllo degli errori è una pagina su cui si potrebbero scrivere e si dovrebbero sapere molte cose
    ciao
    precipito

  3. #3
    Grazie per la risposta, purtroppo temo di non aver capito molto bene cosa possa realmente fare ... ti spiego :

    La mia pagina con cui gli utenti fanno login e' questa ( riporto solo il form ) : login_utenti.php

    Codice PHP:
    <form name="loginutenti" action="processi_php/log_user.php" method="post"
             <
    table id="login">
              <
    tr>
              <
    td colspan="2">Inserisci il tuo username e la tua password</td>
              </
    tr>
              <
    tr></tr>
              <
    td>Username</td>
              <
    td><input type="text" name="user"/></td>
              </
    tr>
              <
    tr>
              <
    td>Password</td>
              <
    td><input type="text" name="pass"/></td>
              </
    tr>
              <
    tr>
              <
    tr></tr>
              <
    td colspan="2"><input type="submit" value="Accedi" />
              </
    tr>
              </
    table>
             </
    form

    La pagina con cui viene elaborata la richiesta e' questa : log_user.php

    Codice PHP:
    <?php

    include ("config.php"); // ci sono i dati per la connessione al db

    //Username e password per il login
    // Rendo innocue le variabili inserite dall'utente

    $pass md5(mysql_real_escape_string($_POST['pass']));
    $user mysql_real_escape_string($_POST['user']);


    //Questo sarebbe il primo errore che vorrei personalizzare : se o user o pass non sono inserite, in questo caso rimanda a login utenti.

    if (!$user || !$pass) { 
    header ("location: ../login_utenti.php");
    exit;
    }

    //Mi connetto al server

    $db_conn mysql_connect($db_host$db_user$db_pass$db_name) or die ("Errore connessione:" mysql_error());
    mysql_select_db($db_name$db_conn);

    //Cerco corrispondenza nel db

    $query_login="SELECT * FROM utenti WHERE user='$user' AND pass='$pass'";
    $result mysql_query($query_login$db_conn); 

    //num1 restituisce il numero di righe in cui nick e password sono quelli inseriti.
    //Se c'è ne almeno una allora significa che sono stati inseriti i dati correttamente.

    $num1 mysql_num_rows($result);

    //Avvio una sessione e indirizzo all'index una volta che il login ha avuto successo.

    if ($num1 >0
            { 
         
    session_start(); 
         
    $_SESSION['user'] = $user
         
    $_SESSION['logged'] = 1
         
    header ("location: ../index.php");
    }

    // Questo e' il secondo errore che vorrei personalizzare. in questo caso, per comodita
    // grafica, stampo un messaggio informativo.

    else { 
         echo 
    "Login Fallito.Username o Password errati.";
    }

    ?>
    In entrambi i casi che ho elencato qui sopra, vorrei che l'utente fosse rimandato ad errorlogin_utenti.php ( pagina che devo ancora creare ) oppure se fosse possibile alla stessa login_utenti.php , ma con un messaggio di errore personalizzato.


    Ora, il codice che mi hai scritto te, devo inserirlo in log_user ( magari al posto del primo if di verifica che ho messo io ) o in login_utenti ? In quest'ultima pagina infatti, non esistono processi di controllo php ....

  4. #4
    Ciao, io di solito (ma mi piacerebbe sapere altre opinioni) faccio così:

    codice:
    if (!$user || !$pass) {
    header ("location: ../login_utenti.php?CHECK=0");
    exit;
    }
    Vedi quel CHECK nell'header?
    Quando sono in login_utenti.php faccio una verifica: se equivale a zero dico che ci sono problemi con user e pass. Puoi personalizzarlo, facendo in modo che sia 1 (per esempio) quando $user è inesistente, 2 se $user è un nome non permesso etc etc...

    Che ne dite/dici?

  5. #5
    Utente di HTML.it L'avatar di jappoz
    Registrato dal
    Dec 2007
    Messaggi
    114
    per il pprimo errore che vorresti gestire , quello di user e pass non inserite, non ti conviene un javascript? velocizza il tutto

    per quanto riguarda l' altro mi sembrava valida l' ultima soluzione che ti è stata data
    "Un film è, o dovrebbe essere, più simile alla musica che non alla fiction. Dovrebbe essere una progressione di stati d'animo e sentimenti. Il tema, ciò che è dietro all'emozione, il significato: tutto viene dopo"
    Stanley Kubrick

  6. #6
    Volevo evitare il js perchè nella traccia che ho ( e' un progetto universitario ) c'era scritto di limitarne al massimo l'uso ... nella prima versione della pagina infatti avevo realizzato un bel js per filtrare i dati e verificare se erano corretti, ma questa soluzione era stata " bocciata "

    Per quanto riguarda la soluzione proposta, e' proprio quello che cerco .. un'unica cosa : quella porzione di codice devo metterla nel mio file login_utenti.php giusto ?

    Le varie opzioni del check devo inserirle in log_user ? ( devo definire una funzione all'interno del file che processa il login oppure devo creare un file a parte ed includerlo sempre nel log_user ? ).

    E sopratutto, quale sintassi posso usare per farlo ?

  7. #7
    Penso di aver capito

    in login_utenti.php ho aggiunto

    Codice PHP:
    <?php
    if (isset($_GET['er']) and $_GET['er'] == 1)
    {
    $msg = <<<EOM
    <p class="avvisologin">Non hai inserito Username o Password: inserisci ancora i dati.</p> 
    EOM;
    }
    else {
    $msg '';
    }
    echo 
    $msg ?>
    mentre in log_user.php :

    Codice PHP:
    if (!$user or !$pass) { 
    header ("location: ../login_utenti.php?er=1");
    exit;

    Ora provo anche a verificare che l'username non sia contenuto nel db ... vi faro' sapere !!
    Grazie per le preziose risposte, mi rifaro' vivo ^_^

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.