2012-10-24 15 views
66

जारी करना मेरे पास एक पृष्ठ पर एक फॉर्म है जो किसी अन्य पृष्ठ पर सबमिट करता है। वहां, यह जांचता है कि इनपुट मेल भर गया है या नहीं। यदि ऐसा है तो कुछ करें और यदि यह भरा नहीं है, तो कुछ और करें। मुझे समझ में नहीं आता कि यह हमेशा क्यों कहता है कि यह सेट है, भले ही मैं एक खाली फॉर्म भेजूं। क्या गुम या गलत है?

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"; 
} 
+4

सभी पाठ की तरह आदानों और अपने रूप में मौजूद textareas सर्वर भले ही उनके मूल्यों रिक्त स्ट्रिंग हैं को सौंपी जाएगी। – hypeJunction

उत्तर

173

बदलें यह जांच करने की आवश्यकता:

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

तो $ _POST हमेशा सेट कर दिया जाता है, लेकिन इसकी सामग्री रिक्त हो सकता है। !

के बाद से खाली() पहले से ही जांच करता है मूल्य सेट कर दिया जाता है, आप भी इस संस्करण का उपयोग कर सकते हैं: यदि वर मौजूद है और अन्य की तुलना में मूल्य है

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

दोनों विकल्प ठीक काम करते हैं। बहुत स्पष्ट और अच्छी तरह से समझाया। धन्यवाद! – Nrc

+7

यह तुलना तालिका इस http://php.net/manual/en/types.comparisons.php –

+1

जैसी चीज़ों के लिए बहुत उपयोगी है ... मुझे लगता है कि इस तरह के मामलों में '!' ऑपरेटर से बचने के लिए बेहतर है (पढ़ने में आसान, त्रुटि का कम मौका, आदि) और तर्क को उलट दें ... 'if (खाली()) {/ * नहीं * /} अन्य {/ * हां * /}' – MrWhite

18

उपयोग !empty बजाय isset$_POST के लिए जारीकर्ता वापसी सही है क्योंकि $_POST सरणी सुपरग्लोबल है और हमेशा मौजूद है (सेट)।

या बेहतर इस्तेमाल $_SERVER['REQUEST_METHOD'] == 'POST'

+2

आपको उल्लेख करना चाहिए कि त्रुटि को रोकने के लिए दोनों 'जारीकर्ता' और 'खाली 'का उपयोग करें। संपादित करें: ओह, यह स्पष्ट रूप से हर दिन सीख रहा है [रेफरी] (http://kunststube.net/isset/) – Touki

+1

क्या त्रुटि? 'खाली' त्रुटियों को दबाता है – Nemoden

+0

खाली त्रुटियों को फेंक नहीं देता है (अनसेट चर के लिए) @Touki – PeeHaa

2

आप प्रपत्र खाली, $ _POST भेजते हैं [ 'मेल'] अभी भी भेजा जाएगा, लेकिन मान रिक्त है। यदि फ़ील्ड रिक्त है देखने के लिए कि यह करने के लिए

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

मैं कोड पेस्ट कॉपी करता हूं और मुझे लगता है कि यह काम नहीं करता है? क्या आपने इसे देखा है? – Nrc

4

From php.net, isset

रिटर्न सही नल, गलत अन्यथा।

रिक्त स्थान को सेट के रूप में माना जाता है। आपको सभी शून्य विकल्पों की जांच के लिए खाली() का उपयोग करने की आवश्यकता है।

1

हो सकता है कि आप इस एक कोशिश कर सकते हैं:

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

2

इनपुट पाठ प्रपत्र के लिए निम्न विशेषता जोड़ें: 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";  
} 
0

तैनात सवाल का जवाब करने के लिए: isset और एक साथ खाली तीन शर्तों देता है। इसका उपयोग जावास्क्रिप्ट द्वारा एजेक्स कमांड के साथ भी किया जा सकता है।

$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."!"; 
2

आप बस का उपयोग कर सकते हैं:

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']; 
} 
+0

[PHP प्रकार तुलना के अनुसार टेबल] (http://php.net/manual/hi/types.comparisons.php) आप बिल्कुल सही हैं। खाली स्ट्रिंग को जांचने के लिए एक खाली बूलियन खाली फ़ंक्शन का काम करता है। – viery365

0

आप इस कोशिश कर सकते हैं:

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

आपको अपने उत्तर की व्याख्या करने की आवश्यकता है। इसलिए केवल सवालों का जवाब देने के लिए मौजूद नहीं है बल्कि लोगों को शिक्षित करने के लिए – Machavity

0
<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

आप कोशिश कर सकते हैं,

<?php 

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

उपयोग !empty() बजाय isset()। क्योंकि isset() हमेशा आपके मामले में सच होगा।

if (!empty($_POST["mail"])) { 
    echo "Yes, mail is entered";  
} else { 
    echo "No, mail is not entered"; 
} 
0
<?php 
    if(isset($_POST['mail']) && $_POST['mail']!='') { 
     echo "Yes, mail is set"; 
    }else{ 
     echo "N0, mail is not set"; 
    } 
?> 
+3

आपको यह समझाया जाना चाहिए कि आपका कोड ओपी के प्रश्न का उत्तर क्यों देता है। – Markus

संबंधित मुद्दे