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

    Disattivazione form in alcuni casi

    Salve a tutti , stavo provando a svolgere un compito di un esame di php.
    Il compito richiede quanto segue :
    Date due form utente e password , bisogna verificare che la password sia l'inversa dell'username. In caso affermativo bisogna stampare a video login effettuata, in caso contrario password errata.

    Es. (username abc , password cba : login effettuata)
    (username abc, passowrd aaa : login errata)

    Sono risciuto a fare tutto , ma appena clicco sul tasto invia , ovviamente stampo il risultato sotto le due form. Vorrei invece che una volta fatto il controllo le form spariscono ed esce solo il messaggio "login effettuata" o "login errata"

    Come posso risolvere?

    Vi posto comunque il mio codice

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
    <head>
    <title>Login</title>
    </head>
    <body>
    <form name="f1" action="log.php" method="post">
    <table border="0">
    <tr>
    <td>Login:</td><td><input type="text" name="user" /></td>
    </tr>
    <tr>
    <td>Password:&nbsp&nbsp</td><td><input type="password" name="pwd" /></td>
    </tr>
    </table>
    <br/>
    <input type="submit" name="Ok" value="Entra" />
    </form>
    <?php

    if(isset($_POST['user'])&& ($_POST['pwd'])){



    if($_POST['user']==(strrev($_POST['pwd']))){


    print"Login effettuata";

    }
    else {
    print"Credenzili errate";
    }

    }
    else {
    print "Non hai inserito password e username correttamente";
    }
    ?>
    </body>

    </html>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Intanto la prima cosa: di form ce n'è uno solo, tant'è che hai un solo tag <form> ciò di cui parli sono 2 campi del form.

    Ciò che devi fare è mostrare il form solo nel caso in cui
    Codice PHP:
    if ( ! isset( $_POST['Ok'] ) ) 
    cioè se ancora non ci sono dati inviati dal tuo form, così quando premi il pulsante submit, al ricaricamento della pagina il form non apparirà perché la condizione è falsa.
    Ultima modifica di Alhazred; 09-12-2017 a 12:10

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Intanto la prima cosa: di form ce n'è uno solo, tant'è che hai un solo tag <form> ciò di cui parli sono 2 campi del form.

    Ciò che devi fare è mostrare il form solo nel caso in cui
    Codice PHP:
    if ( ! isset( $_POST['user'] ) ) 
    cioè se ancora non ci sono dati inviati dal tuo form, così quando premi il pulsante submit, al ricaricamento della pagina il form non apparirà perché la condizione è falsa.
    Ti ringrazio per la risposta. Ma la stringa del controllo , la metto prima del form?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Certo, il form deve essere contenuto all'interno di quell'if, così il codice che lo crea verrà eseguito solo se lì ci entri.

  5. #5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Certo, il form deve essere contenuto all'interno di quell'if, così il codice che lo crea verrà eseguito solo se lì ci entri.
    diventa quindi cosi il codice?
    codice:
    < if ( ! isset( $_POST['user'] ) ) form name="f1" action="log.php" method="post">
            <table border="0">
                <tr>
                    <td>Login:</td><td><input type="text" name="user" /></td>
                </tr>
                <tr>
                    <td>Password:&nbsp&nbsp</td><td><input type="password" name="pwd" /></td>
                </tr>
            </table>
            <br/>
            <input type="submit" name="Ok" value="Entra" /> 
        </form>

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Non proprio, l'if deve racchiudere tutto il codice del form, messo lì non servirebbe a niente
    Codice PHP:
    <?php
    if ( ! isset( $_POST['Ok'] ) )
    {
    ?>
        <form ... >
            ...
        </form>
    <?php
    }
    ?>
    Nella condizione ho messo Ok invece di user, il motivo è che se un utente inserisse la password, ma non l'username, il form verrebbe mostrato comunque perché $_POST['user'] non esiste, anche se il form è comunque stato inviato, il pulsante submit invece viene per forza premuto e il suo dato inviato.

    Fatto questo, se capisci come funziona mettere le condizioni e far stampare o meno il codice html in base a ciò che invia l'utente, potresti raffinare un po' il tuo form, per esempio facendo sparire il form solo se il login va a buon fine e continuando a mostrarlo in caso di errori, così che l'utente possa provvedere ad inserirli correttamente senza dover ricaricare la pagina.
    Un'altra cosa fattibile visto che resti sulla stessa pagina inviando il form sarebbe mostrare messaggi d'errore specifici sotto i campi user e pass, per esempio "username obbligatorio" sotto il campo user in caso non venisse inserito, stessa cosa per il campo pass.
    Non so a che livello sei con la programmazione, ma è solo tutto questione di logica e capire dove vanno messi i pezzi, c'è solo da usare degli if nei posti giusti.
    Ultima modifica di Alhazred; 09-12-2017 a 12:37

  7. #7
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Non proprio, l'if deve racchiudere tutto il codice del form, messo l� non servirebbe a niente
    Codice PHP:
    <?php
    if ( ! isset( $_POST['Ok'] ) )
    {
    ?>
        <form ... >
            ...
        </form>
    <?php
    }
    ?>
    Nella condizione ho messo Ok invece di user, il motivo � che se un utente inserisse la password, ma non l'username, il form verrebbe mostrato comunque perch� $_POST['user'] non esiste, anche se il form � comunque stato inviato, il pulsante submit invece viene per forza premuto e il suo dato inviato.

    Fatto questo, se capisci come funziona mettere le condizioni e far stampare o meno il codice html in base a ci� che invia l'utente, potresti raffinare un po' il tuo form, per esempio facendo sparire il form solo se il login va a buon fine e continuando a mostrarlo in caso di errori, cos� che l'utente possa provvedere ad inserirli correttamente senza dover ricaricare la pagina.
    Un'altra cosa fattibile visto che resti sulla stessa pagina inviando il form sarebbe mostrare messaggi d'errore specifici sotto i campi user e pass, per esempio "username obbligatorio" sotto il campo user in caso non venisse inserito, stessa cosa per il campo pass.
    Non so a che livello sei con la programmazione, ma � solo tutto questione di logica e capire dove vanno messi i pezzi, c'� solo da usare degli if nei posti giusti.
    mi da errore cosi
    codice:
    if ( ! isset( $_POST['user']) && ($_POST['pwd']))
    {
    ?>
        <form name="f1" action="log.php" method="post">
            <table border="0">
                <tr>
                    <td>Login:</td><td><input type="text" name="user" /></td>
                </tr>
                <tr>
                    <td>Password:&nbsp&nbsp</td><td><input type="password" name="pwd" /></td>
                </tr>
            </table>
            <br/>
            <input type="submit" name="Ok" value="Entra" /> 
        </form>
    <?php
    }
    ?>

  8. #8
    Il mio problema è che se inserisco qualcosa in una delle due form, le due form scompaiono , e io invece vorrei che non scomparissero. Vorrei che scomparissero soltanto se entrambe le due form contengono qualche lettera

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ti ripeto, non hai 2 form, hai 1 form con 2 campi.

    Qui hai un problema
    if ( ! isset( $_POST['user']) && ($_POST['pwd']))

    isset() controlla solo $_POST['user'], $_POST['pwd'] non è passato alla funzione isset(), sta solo tra parentesi, cosa che non ha alcun effetto.
    La condizione come l'hai scritta vuol dire: se $_POST['user'] non è settato e $_POST['pwd'] != false

    $_POST['pwd'] da solo equivale a controllare se è diverso da false perché qualsiasi valore che non sia false in una condizione if è considerato true, se però è null ti da errore ed è null se il campo del form relativo viene lasciato vuoto.
    Quindi
    if ( ! isset($_POST['user']) && ! isset($_POST['pwd']) )

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 © 2024 vBulletin Solutions, Inc. All rights reserved.