2009-05-12 14 views
8

मैंने इस सर्वर को अपने सर्वर पर सेट अप किया है। कृपया मुझे बताएं कि $_POST सरणी में फॉर्म सबमिट करते समय भी कुछ भी शामिल नहीं है। मैंने इसे तीन अलग-अलग ब्राउज़रों में आजमाया है और कुछ भी नहीं होता है।

<?php print_r($_POST);?> 

<form method="post"> 

<p><label>Email: </label> 
<input type="text" id="login_email" /> 
</p> 

<p><label>Password: </label> 
<input type="password" id="login_password" /> 
</p> 

<p><label>Remember Me?: </label> 
<input type="checkbox" id="login_remember" /> 
</p> 

<p> 
<input type="submit" value="Login" /> 
</p> 

</form> 

मैं वर्षों से PHP लिख रहा हूं और यह पहले कभी नहीं हुआ है। इस कोड के साथ क्या समस्या है?

उत्तर

51

आपके इनपुट तत्वों में नाम विशेषताएँ नहीं हैं। होना चाहिए: एक इनपुट तत्व एक नाम विशेषता नहीं है

<input type="text" id="login_email" name="login_email" /> 

हैं, तो यह पोस्ट डेटा के भाग के रूप में नहीं भेजा जाता है।

9

ठीक है, आपके पास फॉर्म टैग के लिए कोई कार्रवाई नहीं है? यह स्क्रिप्ट नाम होना चाहिए:

<form method="post" action="scriptname.php"> 

... और आप भी प्रत्येक प्रपत्र इनपुट के लिए नामों की स्थापना नहीं कर रहे हैं - ब्राउज़र तत्व नाम के रूप में आईडी प्रस्तुत नहीं करता है।

+0

वास्तव में, मुझे लगता है कि यह कार्रवाई नाम छोड़ने के लिए मान्य है। यदि आप करते हैं, ब्राउज़र बस वर्तमान पृष्ठ पर पोस्ट/हो जाता है। –

+6

अधिकांश ब्राउज़र इस व्यवहार को प्रदर्शित करते हैं, लेकिन आधिकारिक चश्मा के अनुसार, कार्रवाई विशेषता आवश्यक है - http://www.w3.org/TR/html401/interact/forms.html। स्पष्टीकरण के लिए – BrynJ

+0

धन्यवाद। मैं मानता हूं कि इस तरह की अस्पष्टता व्यक्त करना एक बुरा विचार है जब spec डिफ़ॉल्ट व्यवहार को परिभाषित नहीं करता है। –

2

इनपुट तत्वों के लिए कोई नाम विशेषता नहीं है।

4
<form method="POST" action="<?php echo $PHP_SELF; ?> 

<p><label>Email: </label> 
<input type="text" name="login_email" /> 
</p> 

<p><label>Password: </label> 
<input type="password" name="login_password" /> 
</p> 

<p><label>Remember Me?: </label> 
<input type="checkbox" name="login_remember" /> 
</p> 

<p> 
<input type="submit" value="Login" /> 
</p> 

</form> 
+0

यह काम करेगा ... आप 'नाम' और एक्शन पार्ट्स भूल गए हैं। – MichaelICE

0

सभी अपने इनपुट तत्वों का एक नाम विशेषता की जरूरत है।

1

मैं सुझाव है कि आप Zend_View सहायकों के आधार पर कार्यों का पालन की तरह कुछ लिखें।

formText($name, $value = null, array $attribs = null) 
formPassword($name, $value = null, array $attribs = null) 
formLabel($id, $text, array $attribs = null) 
formHidden($name, $value = null, array $attribs = null) 
formSubmit($name = null, $text = null, array $attribs = null) 
formSelect($name, $selected, array $attribs = null, array $options = null) 
formCheckbox($name, $default, array $attribs = null, array $options = null) 

तब आप कभी इस तरह कुछ भूल नहीं पाएंगे।

<form method="POST" action="<?php echo $PHP_SELF; ?> 

<p> 
<?php 
echo formLabel('login_email', 'Email'), ':', 
    formText('login_email'); 
?> 
</p> 

<p> 
<?php 
echo formLabel('login_password', 'Password'), ':', 
    formPassword('login_password'); 
?> 
</p> 

<p> 
<?php 
echo formCheckbox('login_remember'), ' ', 
    formLabel('login_remember', 'Remember me'); 
?> 
</p> 

<p> 
<?php 
echo formSubmit(null, 'Login'); 
?> 
</p> 
</form> 

युक्ति:

  • आईडी गुण में परिभाषित नहीं हैं, आईडी, नाम के समान है लेबल जहां आईडी के लिए = "$ id" विशेषता में प्रयोग किया जाता है और formHidden नहीं होना चाहिए के अलावा एक डिफ़ॉल्ट आईडी या तो।
  • फॉर्म चेकबॉक्स एक फॉर्म लिखता है जो पहले से ही ऋणात्मक मूल्य के साथ उसी नाम से है, इसलिए यदि चेकबॉक्स की जांच नहीं की जाती है तो आपको रिटर्न वैल्यू मिलती है।
  • फॉर्म चेकबॉक्स विकल्प चेक या अनचेक किए गए मानों के साथ एक सरणी है।
  • चेकबॉक्स से वापसी मूल्य पढ़ने के लिए FILTER_VALIDATE_BOOLEAN के साथ एक फ़िल्टर का उपयोग करें ताकि यह चिह्नित किया जा सके कि यह चिह्नित किया गया है या नहीं।
0

आप नाम अपनी स्क्रिप्ट काम करने के लिए जिम्मेदार बताते हैं भूल गया। आप अपने इनपुट के नाम विशेषताओं से मेल खाने के लिए अपने लेबल में "के लिए" टैग भी शामिल कर सकते हैं। यह एक आवश्यकता नहीं है, लेकिन अपने फार्म की सीएसएस formating के साथ मदद कर सकते हैं:

<p> 
<label for="login_email">Email: </label> 
<input type="text" name="login_email" id="login_email" /> 
</p> 

की चीज़ से मेल खाने के लिए और अपने कोड और अधिक कारगर बनाने रखने के लिए और पठनीय आप 6 महीने के बाद में वापस आने के लिए है, तो मदद करता है।

<form method="POST" action="<?php echo $PHP_SELF; ?> 

यह सुनिश्चित करें कि आपके पृष्ठ के साथ ही कर के रूप में अपने स्क्रिप्ट को निष्पादित करना चाहिए जहाँ तक फार्म की आवश्यकताओं के रूप में अच्छा है कर देगा: कार्रवाई विशेषता अगर आप एक को भरने के लिए नहीं जा रहे हैं मैं अपनी कार्रवाई के रूप में इस को शामिल किया जाएगा । एक साधारण ओवर-दृष्टि की तरह लगता है। उम्मीद है की यह मदद करेगा।

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