0

HTMLで送信ページがあります。フォームデータを送信すると、phpページに移動し、データベースにデータが挿入されます。

私の質問は、JavaScriptを使用せずにhtmlページのデータがnullまたは空にならないようにするにはどうすればよいですか?とにかくこれはphpで行うことができますか?ありがとう!

4

4 に答える 4

1

PHPページ(フォームのaction属性でリンクしたページ)の最上部に、次のように入力します。

if (isset($_POST['submit_check']) && strlen($_POST['whatever'])) { // submit_check is a hidden form field
    insert_to_db();
    header('Location: success.php'); // redirect to another page to prevent double-submits
    exit;
}

したがって、HTMLは次のようになります。

<form action="" method="post"> 
    <input type="text" name="whatever"/>
    <input type="hidden" name="submit_check" value="1"/> 
</form>

空白のアクション値は同じページに投稿することを意味しますが、必要に応じて別のページに投稿できます。

于 2010-04-05T20:47:44.130 に答える
1

通常どおり、制御構造を使用するだけです。

$non_empties = array('name', 'email', 'address');

foreach ($non_empties as $field) {
    if (! isset($_POST[$field]) || $_POST[$field] == '') {
        show_error("Please fill your $field, thank you.");
    }
}

$db->insert();

より高度な例:

// Defined in your library
function validate_as_non_empty(Array $non_empties) {
    foreach ($non_empties as $field) {
        if (! isset($_POST[$field]) || $_POST[$field] == '') {
            throw new Exception("Please fill your $field, thank you.");
        }
    }
}

// Defined in your library
function validate_as_foo(Array $arr) { ... }

// Your request handler
try {
    validate_as_non_empty(array('name', 'address'));
    validate_as_foo(array('email'));
    $db->insert();
} catch (Exception $e) {
    show_error($e->getMessage());
}

検証を行うには、少なくとも100万の方法があります。通常、信頼できるフレームワークがあります。上記の例は、単にインスピレーションを得るためのものです。

于 2010-04-05T20:54:38.923 に答える
0

次のように、PHPファイルで$ _POSTスーパーグローバルを使用して、送信されたデータを取得します。

POSTされているHTML要素ごとに$_POST['firstname']。eaxmpleの場合、HTMLで:

<input type="text" name="firstname" />

次に、PHPを使用して、正規表現、issetなどを使用してデータを検証し、それに応じて成功ページにリダイレクトするか、HTMLフォームにリダイレクトします。

Ajaxを使用して同じことを行うこともできます(同じPHP検証が適用されますが、データ転送モデルがわずかに異なります)

于 2010-04-05T20:55:19.063 に答える
-1

あなたが求めているのが「javascriptなしでクライアント側でデータが有効であることを確認できますか」という場合、答えはノーです。

ただし、データベースに挿入する前にデータを検証するだけの場合は、確かにそうです。

foreach ($_POST as $key=> $value) {

  switch ($key) {
   case 'my_value_name':
      //test $value is not null and other validation;
      //insert into database function
      break;

   ...

  }

}
于 2010-04-05T20:54:04.343 に答える