2010-07-26 16 views
7

मैं निम्नलिखित कोड नमूना upload3.php है:

<html> 
<head> 
<title>PHP Form Upload</title> 
</head> 
<body> 

<form method='post' action='upload3.php' enctype='multipart/form-data'> 
    Select a File: 
    <input type='file' name='filename' size='10' /> 
    <input type='submit' value='Upload' /> 
</form> 

<?php 

if (isset($_POST['submit'])) 
{ 
    echo "isset submit"; 
} 
else 
{ 
    echo "NOT isset submit"; 
} 

?> 

</body> 
</html> 

कोड हमेशा रिटर्न "isset प्रस्तुत नहीं"। ऐसा क्यों होता है? क्योंकि एक ही स्क्रिप्ट upload3.php खुद को कॉल करता है?

उत्तर

33

आप अपने सबमिट बटन पर नामित नहीं है:
बदलें

<input type='submit' value='Upload' /> 

करने के लिए:

<input type='submit' value='Upload' name="submit"/> 
3

क्योंकि आपके पास कोई फॉर्म तत्व नहीं है जिसका name संपत्ति submit है।

परिभाषित कुंजी को देखने के लिए var_dump($_POST) का उपयोग करने का प्रयास करें।

ध्यान दें कि फाइलें अपवाद हैं; वे $_POST में शामिल नहीं हैं; वे फाइल सिस्टम में संग्रहीत हैं और वे मेटाडेटा (स्थान, नाम, आदि) $_FILES सुपरग्लोबल में हैं।

2

REQUEST_METHOD पर देखने का प्रयास करें और देखें कि क्या यह पोस्ट है। यह थोड़ा सा अच्छा है।

+0

कि पद्धति के साथ समस्या है, यह आप नहीं जानते कि जो इनपुट कार्रवाई बनाया है दिखेगा। यदि आपके पास एक ही पृष्ठ पर कई सबमिट बटन हैं तो आप नहीं जान पाएंगे कि उपयोगकर्ता ने किस पर क्लिक किया था। – HoLyVieR

+0

सच है। खैर यदि आपके पास अलग-अलग रूपों में वे बटन हैं, लेकिन मैं स्वयं एक ही पृष्ठ पर एकाधिक फॉर्म सबमिट करने का प्रशंसक नहीं हूं (अलग-अलग रूप में आमतौर पर एक अलग कार्यवाही होती है)। एक ही रूप में दो अलग-अलग नामित सबमिट बटन दोनों POST अनुरोध में भेजे जाएंगे। – CharlesLeaf

+0

सबमिट बटन डेटा केवल तभी भेजा जाएगा जब यह नियंत्रण लॉन्च करने वाला नियंत्रण हो। – HoLyVieR

4

दो बातें:

आप जब सरणियों का उपयोग कर isset के बजाय array_key_exists कोशिश करना चाहते हैं। सरणी तत्व पर जारी करने का उपयोग करते समय PHP में कुछ अजीब व्यवहार हो सकता है।

http://www.php.net/manual/en/function.array-key-exists.php

(array_key_exists ('प्रस्तुत', $ _POST)) {}

दूसरे, आप एक नाम विशेषता अपने बटन पर की जरूरत है ("name = 'प्रस्तुत'")

+1

+1: 'array_key_exists' सुझाव के लिए। जो लोग सोच रहे हैं, उनके लिए 'array_key_exists' 'TRUE' लौटाता है यदि कुंजी मूल्य के बावजूद मौजूद है, जबकि कुंजी मौजूद है और मान' NULL' नहीं है, तो' जारीकर्ता 'रिटर्न 'TRUE' है। –

+0

फॉर्म सरणी के लिए, हालांकि, यह वास्तव में बहुत मायने रखता नहीं है। यदि कोई कुंजी मौजूद है, तो वैल्यू भी करता है - भले ही यह केवल खाली स्ट्रिंग है। – cHao

0
<input type='submit' value='Upload' /> 

<input type='submit' value='Upload' name='subname'/> 

होना चाहिए और उस SUBNAME में $ _POST होना चाहिए [ '']

ऐसा

if (isset($_POST['subname'])) 
{ 
    echo "isset submit"; 
} 
else 
{ 
    echo "NOT isset submit"; 
} 
संबंधित मुद्दे