Newsgroup: it.comp.www.php
Titolo: form con campo vuoto .. non lo gestisco!

vi risulta un errore nel seguente pezzo di codice?
in pratica vorrei che:
1- immessa nome utente e password corretta l'utente venisse reindirizzato 
alla pagina administrator_page
2-immessa nome utente e password non corrette l'utente venisse "rispedito" 
alla pagina di login
3- in caso di campo vuoto venisse soltanto visualizzato il messaggio "non 
sono state inserite entrambi i campi nel form"
la 1 e la 2 funzionano, la 3 no! In particolare in caso di campo vuoto nel 
form lo script mi reindirizza alla pagina di login come se riconoscesse i 
campi del form non vuoti e con valori sbagliati.
<?PHP
$nome_utente="peppino";
$password="password";
//se sono state impostate sia nome utente che password
if ((ISSET($_POST['utente']))&&(ISSET($_POST['password']))) {
//controlla che siano coincidenti con quelle richieste e quindi reindirizza 
la navigazione all'area riservata
if(($_POST['utente']==$nome_utente)&&($_POST['password']==$password))
{
session_start();
$_SESSION['login']="ok";
header("location:administrator_page.php");
}
else{
header("location:autenticazione.php");
}
}
else {
echo "non sono state inserite entrambi i campi nel form";
}
?>
Non capisco per quale motivo, qualora un campo o entrambi i campi del form a 
cui passo nome utente e password siano vuoti, non mi venga restituito l'echo 
presente nell'else. E' come se non funzionasse la funzione isset o forse 
come se dal form venga passata di default un valore(o i valori) e quindi 
l'isset riconoscesse sempre il settaggio delle variabili che controlla e 
quindi anche con il campo vuoto del form mi reindirizza alla pagina di login 
come se avessi immesso nome utente e password sbagliati. Congiuntivi a parte 
mi sapreste aiutare ;-)
per completezza vi posto anche il form anche se non ha nulla di particolare:
<form name="authentication_form" action="controllo.php" method="POST">
<input type="text" name="utente"><br>
<input type="text" name="password"><br>
<input type="submit" value="login">
</form>

 if ((ISSET($_POST['utente']))&&(ISSET($_POST['password']))) {
Questa riga controlla solo se gli elementi 'utenti' e 'password'
dell'array $_POST esistono, ma non fanno alcun test sul loro valore. Il
controllo per verificare che non siano vuoti lo devi aggiungere, per
esempio così:
if (isset($_POST['utente']) && isset($_POST['password'])) {
    // I campi esistono
    if (trim($_POST['utente']) != '' && trim($_POST['password']) != '') {
        // I campi non sono vuoti
        // Esegui il controllo user/password...
        ...
    } else {
        // Uno dei campi è vuoto
        ...
    }
} else {
    // Uno dei campi non esiste
    ...
}
P.S. Cerca di indentare il codice, altrimenti è poco leggibile.
Ciao.
-- 
Federico

 P.S. Cerca di indentare il codice, altrimenti č poco leggibile.
Si hai ragione, ho fatto un copia incolla da wordpad di un file php creato 
con linux su altro pc...e nell'apertura s'e' perso le indentazioni..(con il 
blocco note, peggio che andar di notte)
Grazie ancora, sei stato chiarissimo.

 succedere qlc per cui ecc ecc)
Dipende. La funzione isset() restituisce true o false a seconda che il
parametro passatole esista oppure no. Non tutti gli elementi di un form
vengono passati alla pagina di destinazione, come ad esempio un
checkbox non selezionato.
Ciao.
-- 
Federico

 Vedi http:/
www.php.net/trim
.
Ops, ovviamente è 
http://www.php.net/trim
.
-- 
Federico