2011-12-03 8 views
0

私は登録ページを持っており、javascriptとPHPの各フィールドの値をチェックします。問題は、別のファイルに登録コードがあることです。私はデータベースに照会しているので、それを別のファイルに入れて、ずっと私は自分自身に投稿することを排除しました。私は別のエラーページにリダイレクトすることは過度のことであると考えました。PHP別のファイルから空の値を確認

私がしたいのは、自分自身にフォームを投稿していた場合のように、エラーメッセージが表示された登録ページにリダイレクトすることです。これをやり遂げるにはどうすればいいですか?

答えて

1

登録コードは別ファイルにしても問題ありません。
ただし、このファイルは登録ページそのものでなければなりません。
フォームは別のファイルに保存され、含まれるだけです。ここで

は、登録コード

<? 
include 'config.php'; 
if ($_SERVER['REQUEST_METHOD']=='POST') { 

    $err = array(); 
    //performing all validations and raising corresponding errors 
    if (empty($_POST['name']) $err[] = "Username field is required"; 
    if (empty($_POST['text']) $err[] = "Comments field is required"; 

    if (!$err) { 
    // if no errors - saving data 
    // and then redirect: 
    header("Location: ".$_SERVER['PHP_SELF']); 
    exit; 
    } else { 
    // all field values should be escaped according to HTML standard 
    foreach ($_POST as $key => $val) { 
     $form[$key] = htmlspecialchars($val); 
    } 
} else { 
    $form['name'] = $form['comments'] = ''; 
} 
include 'form.tpl.php'; 
?> 

のスケッチとは、フォームを含むテンプレートとこれは、フォーム処理の最も一般的な方法が呼ばれ

<? if ($err): ?> 
    <? foreach($err as $e): ?> 
<div class="err"><?=$e?></div> 
    <? endforeach ?> 
<? endif ?> 
<form> 
    <input type="text" name="name" value="<?=$form['name']?>"> 
    <textarea name="comments"><?=$form['comments']?></textarea> 
    <input type="submit"> 
</form> 

エラーmesagesあるPOST/Redirect/GET

+0

はデータベース情報を含むも​​のが悪いことではありませんか?ある時点では、これをすべてデータベースに提出しなければならないことを意味するので、別のファイルが入ってくるところです。 –

+0

何ですか? "データベース情報を持つものを含めて悪い習慣"?どういう意味ですか?どのような情報とそれが悪い習慣であるのはなぜですか? –

+0

@ Howdy私が正しくあなたを得たら、それはデータベースの資格情報であり、接続していますか?それは常に別のファイルに格納され、データベース接続が必要なすべてのスクリプトに組み込まれます。私はちょうど私のコードにそのようなインクルードを追加しました。 –

-1

はその後、元のページへ

header(Location:<your url here>?error=1); 

を経由してリダイレクトし、彼らは空白のフィールドまたは何を持っているかどうかを確認、あなたの認証ページに投稿し、GET変数$_GET['error']ため、そのページのチェックを持つことができます。その変数が1の場合は、何らかのエラーを表示します。

これはあなたが探しているものですか?

0

あなたは自分自身に投稿してみませんか?一度検証し、それはデータの電気ショック療法を挿入するようにあなたはまだこの方法はまだユーザーをリダイレクトするために)(ヘッダーを使用し、それを行う上で主張する場合、あなたがしなければならないすべては...

if(isset($_POST[ 'submit' ])){ 
//Do checks 
// if all checks pass do your thing. 
//  redirect.... header(); 
exit; 
} 
// you could then do if(isset($_POST['name'])){ echo 'name'; } to repopulate the fields so you don't irritate the user. 

PHPの構造体です。 (私の意見では、有望なユーザーエクスペリエンスではなく...ユーザーはすべてのデータをもう一度補充する必要があります)。

+0

データベースのクエリ/データベース情報をhtml/formsと同じファイルに保存するのは悪いことではありませんか? –

関連する問題