web-dev-qa-db-ja.com

isset $ _POSTの場合

あるページに別のページに送信するフォームがあります。そこに、入力メールが埋められているかどうかをチェックします。もしそうならそれから何かをし、それが満たされていなければ、他の何かをする空のフォームを送信しても、なぜそれが設定されていると常に表示されるのか理解できません。行方不明または間違っているものは何ですか?

step2.php:

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

step2_check:

if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {    
    echo "N0, mail is not set";
}
89
Nrc

これに変更してください。

if (isset($_POST["mail"]) && !empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "N0, mail is not set";
}

そのため$_POSTは常に設定されていますが、その内容は空の可能性があります。

!empty()は値が設定されているかどうかをすでにチェックしているので、このバージョンを使うこともできます。

if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "N0, mail is not set";
}
207
oopbase

issetの代わりに!emptyを使用してください。 $_POST配列はスーパーグローバルであり、常に存在する(set)ため、issetは$_POSTに対してtrueを返します。

それとも$_SERVER['REQUEST_METHOD'] == 'POST'を使ってください

21
Nemoden

php.net から、isset

Varが存在し、NULL以外の値を持つ場合はTRUEを返し、そうでない場合はFALSEを返します。

空きスペースが設定されていると見なされます。 nullオプションをすべてチェックするにはempty()を使う必要があります。

5
janenz00

空のフォームを送信しても$ _POST ['mail']は送信されますが、値は空です。フィールドが空かどうかを確認するには、確認する必要があります。

if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }
2
mboldt

入力テキストフォームに次の属性を追加します:required="required"。フォームに記入されていないと、ユーザーはフォームを送信できません。

新しいコードは次のようになります。

<form name="new user" method="post" action="step2_check.php"> 
<input type="text" name="mail" required="required"/> <br />
<input type="password" name="password" required="required"/><br />
<input type="submit"  value="continue"/>
if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
}
2
Kushan Mehta

あなたは単に使用することができます:

if($_POST['username'] and $_POST['password']){
  $username = $_POST['username'];
  $password = $_POST['password'];
}

または、 empty()を使用します

if(!empty($_POST['username']) and !empty($_POST['password'])){
  $username = $_POST['username'];
  $password = $_POST['password'];
}
2
Pedro Lobito

!empty()の代わりにisset()を使用してください。あなたのケースではisset()は常にtrueを返すからです。

if (!empty($_POST["mail"])) {
    echo "Yes, mail is entered";    
} else {  
    echo "No, mail is not entered";
}
2
Nadim Tareq

たぶん、あなたはこれを試すことができます:

if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }

1
Nica
<?php
    if(isset($_POST['mail']) && $_POST['mail']!='') {
        echo "Yes, mail is set";
    }else{
        echo "N0, mail is not set";
    }
?>
1
Asep Nurjaman

これはstep2.phpのあなたのHTMLフォームだと思います

step2.php

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

私はあなたがあなたのデータベースのためにそれを必要としていると思うので、あなたはあなたのHTMLフォーム値をphp変数に割り当てることができます。

step2_check.php

if(isset($_POST['mail']) && !empty($_POST['mail']))
{
$mail = mysqli_real_escape_string($db, $_POST['mail']);
}

$ dbはデータベース接続です。

0

あなたが試すことができます、

 <?php

     if (isset($_POST["mail"])) {
            echo "Yes, mail is set";    
        }else{  
            echo "N0, mail is not set";
        }
  ?>
0
Vimukthi Guruge

これを試すことができます:

if (isset($_POST["mail"]) !== false) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
0
akash ujjwal

投稿された質問に答えるには:issetとemptyを一緒にすると、3つの条件が与えられます。これは、JavaScriptによってajaxコマンドと一緒に使用することもできます。

$errMess="Didn't test";   // This message should not show
if(isset($_POST["foo"])){ // does it exist or not
    $foo = $_POST["foo"]; // save $foo from POST made by HTTP request
    if(empty($foo)){      // exist but it's null
        $errMess="Empty"; // #1 Nothing in $foo it's emtpy

    } else {              // exist and has data
        $errMess="None";  // #2 Something in $foo use it now
      }
} else {                  // couldn't find ?foo=dataHere
     $errMess="Missing";  // #3 There's no foo in request data
  }

echo "Was there a problem: ".$errMess."!";
0
Vinnarian
<form name="new user" method="post" action="step2_check.php"> 
  <input type="text" name="mail" required="required"/> <br />
  <input type="password" name="password" required="required"/><br />
  <input type="submit"  value="continue"/>
</form>

<?php
if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
?>
0
Thilina