あるページに別のページに送信するフォームがあります。そこに、入力メールが埋められているかどうかをチェックします。もしそうならそれから何かをし、それが満たされていなければ、他の何かをする空のフォームを送信しても、なぜそれが設定されていると常に表示されるのか理解できません。行方不明または間違っているものは何ですか?
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";
}
これに変更してください。
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";
}
isset
の代わりに!empty
を使用してください。 $_POST
配列はスーパーグローバルであり、常に存在する(set)ため、issetは$_POST
に対してtrueを返します。
それとも$_SERVER['REQUEST_METHOD'] == 'POST'
を使ってください
php.net から、isset
Varが存在し、NULL以外の値を持つ場合はTRUEを返し、そうでない場合はFALSEを返します。
空きスペースが設定されていると見なされます。 nullオプションをすべてチェックするにはempty()を使う必要があります。
空のフォームを送信しても$ _POST ['mail']は送信されますが、値は空です。フィールドが空かどうかを確認するには、確認する必要があります。
if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }
入力テキストフォームに次の属性を追加します: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";
}
あなたは単に使用することができます:
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'];
}
!empty()
の代わりにisset()
を使用してください。あなたのケースではisset()
は常にtrueを返すからです。
if (!empty($_POST["mail"])) {
echo "Yes, mail is entered";
} else {
echo "No, mail is not entered";
}
たぶん、あなたはこれを試すことができます:
if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }
<?php
if(isset($_POST['mail']) && $_POST['mail']!='') {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
?>
これは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はデータベース接続です。
あなたが試すことができます、
<?php
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
?>
これを試すことができます:
if (isset($_POST["mail"]) !== false) {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
投稿された質問に答えるには: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."!";
<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";
}
?>