Domanda

Sono un po 'in imbarazzo a dire, ma ho incontrato problema con la creazione di un sistema di accesso basato su PHP. Io sto usando un modello di sito per gestire l'aspetto del processo di login, quindi Vi risparmio il codice. Qui è il mio processo di pensiero su come gestire il login:

Creare un file semplice login.php. In poi ci sarà una forma la cui azione è impostata su se stesso. Si verificherà se il presentare è stato cliccato, e in caso affermativo Convalida per assicurarsi che l'utente ha immesso una password / nome utente corretto. Se lo fanno, impostare una variabile di sessione risparmiare un po 'di login informazioni (nome utente, la password non), e li reindirizza ad un'area riservata. Se le informazioni di accesso non è valido, salvare un messaggio di errore in una variabile di sessione, il messaggio di errore di visualizzazione dare ulteriori istruzioni, e attendere che l'utente di ripresentare. Ecco un pezzo di quello che ho - si spera di voi esperti in grado di vedere dove ho sbagliato andato, e mi danno una certa comprensione:

<?php
session_start();

if(isset($_POST['submit'])) {
    if(!empty($_POST['username']) AND !empty(!$_POST['password']))
    {
        header("Location: http://www.google.com");
    } else {
        $err = 'All the fields must be filled in!';
    }
}

if($err) {
    $_SESSION['msg']['login-err'] = $err;
}
?>

Ora quanto sopra è solo un esempio - l'intento del codice di cui sopra è quello di input dell'utente di processo, con lo script di validazione semplicemente che l'utente ha dato input per username e password. Se hanno, li vorrei, in questo caso, per essere reindirizzati a google.com (per il bene di questo esempio). In caso contrario, salvare un messaggio di errore. Dato il mio codice attuale, il messaggio di errore verrà visualizzato perfettamente, se le sottomette utente e ha qualcosa immesso per il nome utente e la password, la pagina semplicemente non reindirizza. Sono sicuro che questa è una domanda stupida, ma io sono un principiante, e bene, ad essere onesti, un po 'ronzavano in questo momento. Grazie mille!

È stato utile?

Soluzione

Bene, senza guardare il resto del codice è difficile da dire. Ma con le intestazioni, l'intestazione deve essere inviata prima di tutto viene scritto nel flusso di risposta (cioè prima che le dichiarazioni echo o qualsiasi codice che non è incluso all'interno dei tag <?php ... ?>) in modo che potrebbe essere il motivo per cui non viene reindirizzato. Il codice è fornito sembra buono per me.

Altri suggerimenti

if(!empty($_POST['username']) AND !empty(!$_POST['password']))
                                         ^--- negating a string = pointless

Questa logica è molto brutto da leggere, si dovrebbe rifare come:

if(empty($_POST['username']) OR empty($_POST['password'])) {
   die("Fill in both fields");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top