1

これは、フォームの複数の入力をチェックするための私のコードです。

ただし、フォームが空の場合、エラーを解消することはできません。これまでのところ、index.php からこのページに入ろうとすると、再び index.php に戻ります。

(私の推測では、フォームに値を入力する前であっても、php はすでに値が空であると判断しているので、返送してください。)

最初にフォームを表示してから、POST が設定されていないかどうかを php にチェックさせ、セッションのエラーで index.php に戻すにはどうすればよいですか?

ありがとう!

   <?php

    // session for POST success and error messages
    session_start();

    require_once "db.php";

    if ( isset($_POST['a']) && isset($_POST['b']) 
         && isset($_POST['c'])) {

        $a = mysql_real_escape_string($_POST['a']);
        $b = mysql_real_escape_string($_POST['b']);
        $c = mysql_real_escape_string($_POST['c']);

        if (preg_match('/\-*\d+\.*\d*/',$b) && preg_match('/\-*\d+\.*\d*/',$c) &&
            (-10 <= $b && 10 >= $b) && (-20 <= $c && 20 >= $c)) {

            [some code checking for different conditions...]

    } elseif (!isset($_POST['a']) | !isset($_POST['b']) | !isset($_POST['c'])) {

            $_SESSION['error'] = $_POST['error0'];
            header('Location: index.php') ;
            return;
    }

    ?>


<form method="post">
<p>A:
<input type="text" name="a"></p>
<p>B:
<input type="text" name="b"></p>
<p>C:
<input type="text" name="c"></p>

<!--Sending POST for success-->
<input type="hidden" name="success" value="Record Added">

<input type="hidden" name="error0" value="All values are required">

<p><input type="submit" value="Add New"/>

<a href="index.php">Cancel</a></p>
</form>

解決済み:elseif を取り除き、if 内に別の条件を追加しました

} elseif (strlen($a) == 0 | strlen($b) == 0 | strlen($c) == 0) { 

    $_SESSION['error'] = $_POST['error0'];
    header('Location: index.php') ;
    return;
{
4

3 に答える 3

2

|| 1つだけではありません

elseif (!isset($_POST['a']) || !isset($_POST['b']) || !isset($_POST['c'])) {
于 2013-03-02T19:40:06.247 に答える
2

論理または代わりに使用する必要があります。それで:

elseif (!isset($_POST['a']) || !isset($_POST['b']) || !isset($_POST['c']))
于 2013-03-02T19:41:39.863 に答える
1

投稿変数は設定できますが空なので、長さだけでなく長さも確認してくださいisset

strlen(trim($_POST['a']))

もちろん、空の値は必要ないと仮定します。

if ( ( isset($_POST['a']) && strlen(trim($_POST['a'])) ) && ( isset($_POST['b'] && strlen(trim($_POST['b'])) ) ) 
于 2013-03-02T19:43:47.560 に答える