2011-08-05 4 views
0

私は次のログインフォームが '../exe/form-exec.php'というファイルを指しています。入力は&ログインパスワードログイン-exec.phpを検証する必要がありPHPログインフォームの検証に失敗しました

<form id="loginForm" name="loginForm" method="post" action="../exe/login-exec.php"> 
    <table width="300" border="0" align="center" cellpadding="2" cellspacing="0"> 
    <tr> 
     <td width="112"><b>Login</b></td> 
     <td width="188"><input name="login" type="text" class="textfield" id="login" /></td> 
    </tr> 
    <tr> 
     <td><b>Password</b></td> 
     <td><input name="password" type="password" class="textfield" id="password" /></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td><input type="submit" name="Submit" value="Login" /></td> 
    </tr> 
    </table> 
</form> 

は、フィールドされているとされていない場合は$errflagでフォームファイルに戻りました。

ファイルログイン-exec.php:

//Start session 
    session_start(); 

    //Include database connection details 
    require_once('../inc/config.php'); 

    //Array to store validation errors 
    $errmsg_arr = array(); 

    //Validation error flag 
    $errflag = false; 



..... 



//Input Validations 
    if($login == '') { 
     $errmsg_arr[] = 'Login ID missing'; 
     $errflag = true; 
    } 
    if($password == '') { 
     $errmsg_arr[] = 'Password missing'; 
     $errflag = true; 
    } 

    //If there are input validations, redirect back to the login form 
    if($errflag) { 
     $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
     session_write_close(); 
     header("location: ../form/login-form.php"); 
      exit(); 
} 

、一部が正常に機能している - それは、フォームに戻っている - しかし、エラーが表示されません。 どのような提案も大変ありがとうございます。 POST方法でフォームから送信されたデータを取得する場合register_globalsoffであれば、それは動作しませんので、

+0

エラーメッセージを表示するPHPコードはどこにありますか? –

+0

ありません。ごめんなさい。私はPHPでいくつかのエクササイズをしています - それは私にとって初めてのことです。 '$ errmsg_arr'の配列をチェックしているPHPは、login-form.phpの場所でなければなりません。 – Iladarsda

答えて

1

);)セッションパラメータを使用すると、

てみてくださいではなく、いくつかのdesign patternsに従うことを...重く落胆ですこれまで:

session_start(); 
foreach ($_SESSION['ERRMSG_ARR'] as $msg) { 
    echo $msg . "<br />"; 
} 
etc... 

メッセージを実際に表示するには

+0

これは動作しています。しかし、ログインページですぐに、データを入力しなくてもエラーが表示されます。以前のログイン失敗からアレイが保存されていると推測されます。それを変更するには? – Iladarsda

+0

どのようなエラーメッセージが表示されますか? –

+0

セッションが終了した場合: '未定義のインデックス:C:\ wamp \ www \ form \ login-form.phpの3行目のERRMSG_ARR' および'警告:C:\のforeach() wamp \ www \ form \ login-form.php on line 3 ' **セッションがライブであるが、ログアウト時にエラーメッセージが表示される。** セッションが終了して「サブミット」を押すとエラーを無視し、エラーメッセージはエラーなしで表示されます。 – Iladarsda

0

$loginの代わりに$_POST['login']を使用することをお勧めします。 これは問題の可能性があります。

+0

register_globals = off、私はそれを変更しようとします。 – Iladarsda

+1

@ Pete:いいえ、register_globalsをオフにします。この機能は、PHP 5.3.0以降では廃止されています。この機能に依存することはお勧めできません。 – scube

+0

もちろん、あなたはそれを離れるべきです! – Pierre

1

あなたがvalorizingさ$_SESSION['ERRMSG_ARR']が、その後、あなたがそれを使用して/チェックしていないフォームに戻ったときに...(とにかくフォームコード

<?php 
session_start(); 
if(!is_null($_SESSION['ERRMSG_ARR'])) { 
    echo '<div class="errmsg">Error...</div>'; 
} 
?> 
<form id="loginForm" name="loginForm" method="post" action="../exe/login-exec.php"> 
    <table width="300" border="0" align="center" cellpadding="2" cellspacing="0"> 
    <tr> 
... 

取り扱いこのタイプの検証にこれを追加しよう似た何かを、あなたのHTMLフォームと同じページに

+0

これは 'Notice:Undefined variable:_SESSION in C:\ wamp \ www \ form \ login-form.php in line 2'を返します。申し訳ありませんが、PHPの初心者です。 – Iladarsda

+0

の最初のログインシステムエラー処理のために他にどのようなオプションを提案できますか? – Iladarsda

+0

最初に任意のPHPフレームワークを使用することをお勧めします;)、またはajax検証を使用します。とにかく、これが "練習"目的のためのものであるならば、あなたは単に同じファイルにバリデーションとフォームコードを入れ、フォームをそれ自身に置くことができます。したがって、$ _POSTパラメータをチェックして、ページが正しいページに転送されているか(または直接エラーが表示されている) – VAShhh

関連する問題