2017-05-04 22 views
0

私はGUMP https://github.com/Wixel/GUMPを使用してサーバーサイドフォームの検証を行い、リダイレクト後のメッセージの表示に関する質問があります。GUMPを使用したPHPフォームの検証

送信後にフォームデータを検証し、エラーがあった場合はフォームにリダイレクトしますが、リダイレクト後にフォームにエラーを渡す最善の方法はわかりません。

私はこれを行うための二つの方法を提案し、この質問Header Redirect after form Validation in PHP読んだ:答えの作者は、方法1であると考えて

1.

$message="Some message for the next page."; 
$message=urlencode($message); 
header("Location:page.php?message=".$message); 

2.

$_SESSION['message']='some other message'; 

をより安全ですが、それがどうして私に伝えられますか?

は、私もそれはPHP-フォームビルダークラスhttps://github.com/lkorth/php-form-builder-classで行うのかを見て持っていた、と彼らは方法2を使用するように見える:

/*Valldation errors are saved in the session after the form submission, and will be displayed to the user 
when redirected back to the form.*/ 
public static function setError($id, $errors, $element = "") { 
    if(!is_array($errors)) 
     $errors = array($errors); 
    if(empty($_SESSION["pfbc"][$id]["errors"][$element])) 
     $_SESSION["pfbc"][$id]["errors"][$element] = array(); 
    foreach($errors as $error) 
     $_SESSION["pfbc"][$id]["errors"][$element][] = $error; 
} 

だから、私の質問があり、最良の方法でありますこれについて行く? $_GETまたはセッション変数にエラーを渡しますか?

P.S.私が何かを見逃してしまった場合、それを行う方法があります。これは簡単です/ GUMPに組み込まれています、それを指摘してください!

答えて

0

2つのファイル(そのうちの1つにすべてのPHPビジネスロジックが含まれ、もう1つはフォーム(最初のファイルに含める)が含まれています。最初のファイルは2つのことを行います。フォームが送信されたかどうかを確認し、フォームを表示します。最初の実行では、フォームがまだ送信されていないため、エラーメッセージは表示されません。フォームが送信され、検証されない場合、フォームにエラーメッセージ(例:<?php echo $gump->get_readable_errors(true) ?>)が表示されます。エラーメッセージをセッションに格納する必要はありません。以前に送信されたデータでフォームを再入力することもできます。

form.php

<?php 
$_error_messages = ''; 
if (isset($_POST) && !empty($_POST)) : 
    $gump = new GUMP(); 
    // Let's sanitize the POST data 
    $_POST = $gump->sanitize($_POST); 
    $gump->validation_rules(array(
     // your validationm rules here 
    )); 
    $gump->filter_rules(array(
     // your filter rules here 
    )); 
    // Validate the form data 
    $validated_data = $gump->run($_POST); 
    if ($validated_data === false) : 
     // The submitted data did not validate, 
     // display the errors in the form 
     $_error_messages = $gump->get_readable_errors(true); 
    else : 
     // The submitted data validated successfully 
     . . . 
    endif; 
endif; 
// Display your form 
include 'form-view.php'; 

フォームview.php

<!DOCTYPE html> 
    <html> 
    <head> 
     // . . . 
    </head> 
    <body> 
     <section> 
      <?php echo $_error_messages ?> 
      <form 
       action = '<?php echo htmlentities('form.php'); ?>' 
       method = 'post' 
       name = 'my_form' 
      > 
       // The rest of your form here 
      </form> 
     </section> 
    </body> 
    </html> 
関連する問題