2012-05-02 14 views
0

は、私はデータベースと接続し、ログインとパスワードをチェックpost.phpで戻り失敗したログイン試行後PHP

<form method="post" action="Login.php" id="Log"> 
<select id="Login" name="Type"> 
<option value="Sel" selected="selected">Select Login type</option> 
<option value="Student">Student</option> 
<option value="Faculity">Faculity</option> 
</select> 
<div id="type"> 
<p id="Ch">Group Id: &nbsp;<input id="l" name="log" type="text"/></p> 
<p id="Pass">Password: &nbsp; <input id="p" name="Pass" type="password" /></p> 
<input id="Cond" type="Text" /> 
<input type="submit" value="Login" /> 
<p id="Invalid" style="padding-top:.75em; color:#FF0000;">Invalid Login Or Password</p> 
</form> 

を次のようにフォームがあるPHP でログインフォームを開発しています。

パスワードまたはログインが、その下の同じフォームで遅延なく一致しない場合は、<p id="invalid">タグを表示します。

<p id="invalid">がどのように私はこれを達成することができます/ PHPを介してデータベースに接続する?

を先頭に隠されていると、ログインまたはpaswordが誤っている場合にのみ表示され

+1

1つのオプションはajaxです。もう1つは、ログインに失敗した場合に無効なメッセージを表示することです。私はもっ​​と言えば、同じ基本を学ぶだけではないと思います... –

+0

あなたのデータベースはどのように見えるのですか?ありがとう! – think123

答えて

1

私はGalenの答えに同意します。同じページにログイン処理のものを置くべきです。あなたがそれを行う方法がわからない場合は、この作業を行う必要があります。

<?php 
$itswrong = false; 
if (isset($_POST['Pass']) && isset($_POST['log'])) { 
$sql = 'SELECT * FROM your_database_name WHERE group_id = '{$_POST['log']}' AND password = SHA1('{$_POST['Pass']}')"; 
$result = @mysql_query($sql) or die (mysql_error()); 
if (mysql_num_rows($result) == 1) { 
// Match was found! 
// Do whatever here, e.g. session registering (starting a session), etc. 
} else { 
// Oh damn, it's wrong! 
$itswrong = true; 
// Do stuff here 
} 
} else { 
// Move your form in here 
} 
?> 

あなたのフォームでやらなければならないことが// Move your form in here下に移動され、 これを変更:へ

<p id="Invalid" style="padding-top:.75em; color:#FF0000;">Invalid Login Or Password</p> 

この:

<?php 
if (isset($_POST['Pass']) && isset($_POST['log']) && $itswrong == true) { 
?> 
<p id="Invalid" style="padding-top:.75em; color:#FF0000;">Invalid Login Or Password</p> 
<?php 
} 
?> 

ともニーズに合わせてSQLクエリ内の値を変更します。その後、それは動作します。 // Move your form in hereの下にフォームを移動してください。フォームが送信されないと、そのフォームが表示されるためです。ページがちょうどにデータを投稿するようになります

<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="Log"> 

EDIT:はまた、フォームのタイトルを変更し、

このことから:これに

<form method="post" action="Login.php" id="Log"> 

それ自体、私のコードを可能にします。

JavaScriptはクライアント側で、PHPはサーバー側であるとして、ハッカーは、その後、PHPにはJavaScript関連の技術をハックすることがWAY困難であるとして、私は、AJAX示唆していません。

それでも問題が解決しない場合は私に連絡してください。

ルーカス

+0

フォームの投稿方法を以前に変更する方法はありますか?

アクションを変更してログインを評価する方法は? – user1366440

+0

私のコードを編集しました、今見てください。 – think123

+0

エラー報告を '@'でオフにしてはいけません。これは、特にテスト段階でのプログラミングの習慣が貧弱です。これはあなたの生産が良い方法があります。 –

1

これを行う正しい方法は、フォームのアクションをフォームを含む同じページに設定することです。 PHPページの初めに、ユーザー名/パスワードをチェックして、フォームhtmlが読み込まれたときにログイン結果を知っているので、エラーを表示できるようにしてください。

ページのリロードなしでそれをしたい場合はTHEN、あなたがAJAXスクリプトを書いて、送信ボタンにそれをフック(および提出からフォームを無効にする)

この方法ではJavaScriptが無効になっている場合、すべてのものはまだでしょう作業。

+0

しかし、各グループidは独自のPassowrdを持っています 私はグループIDを取得するまでデータベースからパスワードを取得できません – user1366440

0

ここは基本的な例です。これは一言で言えば、私が使用するものです。

$entered_password = $_POST['pword']; 
$php_self = $_SERVER['PHP_SELF']; 

if ($password != $entered_password) { 
    $error['pword'] = "<span class=\"errormess\">You entered wrong Password</span>"; 
} else { 
    $error['pword'] = ""; 
} 

私はエラーが発生した場合、配列に新しいキーを入力し、有効な答えをDBをチェックした後、すべての私のフィールドのためにこれを行います。そして、HTMLには:ない、何も表示されていない場合

<form method="post" action="<?php echo $php_self?>"> 
    <input type="password" name="pword" /> 
    <?php echo $error['pword']?> 
    <input type="submit" name="submit" /> 
</form> 

誤りがある場合は、それは、<input>の下に表示されます。私のCSSでは、クラスerrormessは赤色/太字です。私はすべての入力に対してこれを行います。いずれかのフィールドにエラーがある場合は、ページをphp_selfにします。エラーがなければ、header["Location: confirm.html"]はユーザーにログインする適切なページにリダイレクトされます。

これは非常に基本的なものですが、一言で言えばうまくいけば、あなたはそれの冗談を得るでしょう。

希望する

関連する問題