2012-02-06 9 views
0

私は以下のコードを使用していますが、問題はページを送信するだけでログイン機能の処理を行わずにリフレッシュしてもエラーメッセージが表示されないことです。理想的には自分のフォームが名前に小文字lを使用するように変更する必要があり、大文字L.に注意しますが、どちらかの方法は、あなたがそれらのいずれかを変更する必要がある -PHPログイン機能が動作しません

<? 

include("connection.php"); 
include("suction.php");//function file 

session_start(); 

    if(@$_POST['login'] == 'Login'){ 
    $log = login($_POST['username'], $_POST['password']); 
    if($log == true){ 
     //login good 
     header("Location: home.php"); 
    }elseif($log == false){ 
     //username/password invalid 
     die("error"); 
    } 
    } 


    ?> 


    <form action="login.php" method="post" enctype="multipart/form-data"> 

    Username:<input name="username" type="text"/> <br /> 
    Password:<input name="password" type="password"/> 
    <input name="Login" value="Login" type="submit"/> 

    </form> 
+0

$ _POST [@ login]の@を削除すると、何らかのエラーが発生しますか? –

+0

@sergiomichels私はそれを削除しましたが、他の時と同じように、同じページが表示されますが空白です。 –

答えて

2

あなたは$_POST['Login']をチェックする必要があります。

サイドノート:非常に特殊な場合を除いて、Locationヘッダーを設定した後は、常にexitまたはdie()に設定する必要があります。

+0

あなたが提案した通りクリスチャンが提案したように、動作しませんでした...送信ボタンを押すと、同じページ "login.php"がフォームがserver_selfに設定され、空白のページが表示されるので、リフレッシュされます。 –

+0

おそらく無関係ですが、 'enctype'を削除します。' multipart'を使う理由はありません。 –

2

$_POST['login']が存在するかどうかを確認しています。しかし、そのようなフィールドはありません。フォームにという名前のフィールドがあります(loginではありません)。

@接頭辞$_POST['login']を使用してエラーメッセージを抑制していない場合は、PHPから通知されたはずです。

送信ボタンのnameloginに変更してください。

+0

ちょっと!ありがとう。私はそれをしました。しかし、それは私に同じ質問をしても、間違った資格や正しい資格情報があってもログインすると同じページが表示されますが、空白になります。 –

+0

これは同じページですが空白ですか?フォームや空白のページが表示されますか? – kba

+0

同じページ "login.php"がフォームは存在しなくなりました。 –

1
enctype="multipart/form-data" 

これは何をすべきか? ithinkを削除する必要があります。 。

+0

私はそれを削除したが、それでも状況に役立たなかった! –

+0

login.phpはどこですか?フォームがあるこのページですか?もしそうならaction = "<?php echo $ _SERVER [" PHP_SELF "]?>" – tomexsans

0

私が使用して試みる:

if(isset($_POST['username']) && isset($_POST['password'])) 

その最初の引数で。それが動作しない場合は、より多くの情報をお願いします。あなたのlogin()機能のように。

関連する問題