2010-07-06 12 views
27

वहाँ कुछ इस तरह का एक सरल समारोह है:पीएचपी: जाँच लें कि किसी भी पोस्ट वार्स खाली हैं - प्रपत्र: सभी फ़ील्ड आवश्यक

if (isset($_POST['Submit'])) { 
    if ($_POST['login'] == "" || $_POST['password'] == "" || $_POST['confirm'] == "" || $_POST['name'] == "" || $_POST['phone'] == "" || $_POST['email'] == "") { 
     echo "error: all fields are required"; 
    } else { 
     echo "proceed..."; 
    } 
} 

उत्तर

58

कुछ इस तरह भरें गूंज ($ लॉगिन || $ पासवर्ड!):

// Required field names 
$required = array('login', 'password', 'confirm', 'name', 'phone', 'email'); 

// Loop over field names, make sure each one exists and is not empty 
$error = false; 
foreach($required as $field) { 
    if (empty($_POST[$field])) { 
    $error = true; 
    } 
} 

if ($error) { 
    echo "All fields are required."; 
} else { 
    echo "Proceed..."; 
} 
+3

फिर से, मैं एक आईएससेट ($ _ POST [$ फ़ील्ड]) की अनुशंसा करता हूं। हालांकि, यह एक अच्छा समाधान है। – Borealid

+0

धन्यवाद हैरोल्ड, यही वह था जो मैं देख रहा था .. – FFish

+8

खाली() दोनों अस्तित्व के लिए चेक, और गैर झूठी-आश मान (शून्य, झूठी, 0, खाली स्ट्रिंग)। –

1

empty और isset यह करना चाहिए।

if(!isset($_POST['submit'])) exit(); 

$vars = array('login', 'password','confirm', 'name', 'email', 'phone'); 
$verified = TRUE; 
foreach($vars as $v) { 
    if(!isset($_POST[$v]) || empty($_POST[$v])) { 
     $verified = FALSE; 
    } 
} 
if(!$verified) { 
    //error here... 
    exit(); 
} 
//process here... 
+0

आपको एक एससेट की भी आवश्यकता है, मुझे लगता है - अन्यथा आपको कोई त्रुटि नहीं मिलेगी यदि मूल्य बिल्कुल पोस्ट नहीं किया गया था। – Borealid

0

व्यक्तिगत तौर पर मैं पोस्ट सरणी निकालने और उसके बाद अगर फिर फॉर्म :)

+2

एए, हमेशा एक खतरनाक अभ्यास, क्योंकि आपकी स्क्रिप्ट में वैश्विक चर को '$ _POST' के माध्यम से धुंधला करना संभव हो सकता है। –

+0

मैंने इससे पहले कुछ सुना है, और शायद यह जाने का सबसे अच्छा तरीका नहीं है :) विशेष रूप से यदि यह कुछ महत्वपूर्ण –

3

मैं अपने स्वयं के कस्टम फ़ंक्शन का उपयोग करता हूं ...

public function areNull() { 
    if (func_num_args() == 0) return false; 
    $arguments = func_get_args(); 
    foreach ($arguments as $argument): 
     if (is_null($argument)) return true; 
    endforeach; 
    return false; 
} 
$var = areNull("username", "password", "etc"); 

मुझे यकीन है कि यह आपके परिदृश्य के लिए आसानी से बदला जा सकता है। असल में यह सही होता है यदि कोई भी मान न्यूल है, तो आप इसे खाली या जो भी बदल सकते हैं।

1
if(isset($_POST['login']) && strlen($_POST['login'])) 
{ 
    // valid $_POST['login'] is set and its value is greater than zero 
} 
else 
{ 
    //error either $_POST['login'] is not set or $_POST['login'] is empty form field 
} 
+0

का उपयोग करने के लिए बेहतर है तो strlen() 0 का मूल्यांकन करता है जो PHP में गलत है। –

0

मैं इसे इस तरह से किया था:

$missing = array(); 
foreach ($_POST as $key => $value) { if ($value == "") { array_push($missing, $key);}} 
if (count($missing) > 0) { 
    echo "Required fields found empty: "; 
    foreach ($missing as $k => $v) { echo $v." ";} 
    } else { 
    unset($missing); 
    // do your stuff here with the $_POST 
    } 
0

मैं सिर्फ एक त्वरित समारोह लिखा था यह करने के लिए। मुझे इसे कई रूपों को संभालने की आवश्यकता थी इसलिए मैंने इसे बनाया ताकि यह ',' से अलग एक स्ट्रिंग को स्वीकार कर सके।

//function to make sure that all of the required fields of a post are sent. Returns True for error and False for NO error 
//accepts a string that is then parsed by "," into an array. The array is then checked for empty values. 
function errorPOSTEmpty($stringOfFields) { 
     $error = false; 
      if(!empty($stringOfFields)) { 
       // Required field names 
       $required = explode(',',$stringOfFields); 
       // Loop over field names 
       foreach($required as $field) { 
        // Make sure each one exists and is not empty 
        if (empty($_POST[$field])) { 
        $error = true; 
        // No need to continue loop if 1 is found. 
        break; 
        } 
       } 
      } 
    return $error; 
} 

तो आप इस कोड को अपने कोड में दर्ज कर सकते हैं, और प्रति पृष्ठ आधार पर त्रुटियों को संभाल सकते हैं।

$postError = errorPOSTEmpty('login,password,confirm,name,phone,email'); 

if ($postError === true) { 
    ...error code... 
} else { 
    ...vars set goto POSTing code... 
} 
0

नोट: सावधान रहें यदि 0 आवश्यक फ़ील्ड के लिए स्वीकार्य मान है। जैसा कि @ हैरोल्ड 1 9 83- उल्लेख किया गया है, इन्हें PHP में खाली माना जाता है। इस तरह की चीजों के लिए हमें खाली के बजाय जारी करना चाहिए।

$requestArr = $_POST['data']// Requested data 
$requiredFields = ['emailType', 'emailSubtype']; 
$missigFields = $this->checkRequiredFields($requiredFields, $requestArr); 

if ($missigFields) { 
    $errorMsg = 'Following parmeters are mandatory: ' . $missigFields; 
    return $errorMsg; 
} 

// Function to check whether the required params is exists in the array or not. 
private function checkRequiredFields($requiredFields, $requestArr) { 
    $missigFields = []; 
    // Loop over the required fields and check whether the value is exist or not in the request params. 
    foreach ($requiredFields as $field) {`enter code here` 
     if (empty($requestArr[$field])) { 
      array_push($missigFields, $field); 
     } 
    } 
    $missigFields = implode(', ', $missigFields); 
    return $missigFields; 
} 
संबंधित मुद्दे