2011-07-28 17 views
21

मेरे पास इस तरह का एक php रूप है।php form action php self

<form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

</form 

फॉर्म क्रिया में मैं पैरामीटर के साथ पृष्ठ का नाम उपयोग करना चाहता हूं। house.php?p_id=10111 की तरह। लेकिन $ _SERVER ['PHP_SELF'] केवल house.php देता है (मेरा पृष्ठ पूर्ण यूआरएल house.php?p_id=10111 इस तरह है) कृपया इस समस्या को हल करने में मेरी सहायता करें। धन्यवाद।

+1

यह पूर्ण यूआरएल नहीं है। यह यूआरएल + जीईटी पैरामीटर है। –

+1

@ एलेक्स एकरमैन: यह बल्कि [पथ] है (http://tools.ietf.org/html/rfc3986#section-3.3) प्लस [क्वेरी] (http://tools.ietf.org/html/rfc3986#section- 3.4)। – Gumbo

+2

हां। एलेक्स सही है। अब मैं '$ _SERVER ['PHP_SELF'] का उपयोग कर रहा हूं।"? P_id = "। $ Id' –

उत्तर

71

इसे खाली छोड़ने के बारे में, इसमें क्या गलत है?

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action=""> 

</form> 

इसके अलावा, आप कार्रवाई विशेषता को छोड़ सकते हैं और यह उम्मीद के रूप में काम करेंगे।

+1

इसके लिए धन्यवाद। मुझे लगता है कि यह करने का यह सबसे आसान और सबसे अच्छा तरीका है। –

+11

इसे खाली छोड़ कर, W3C सत्यापन टूट जाता है (यदि आप परवाह) – gadlol

+10

@jBaron हाँ, कि एचटीएमएल 5 में मामला है, लेकिन आप खाली 'कार्रवाई =" "' पूरी तरह विशेषता को छोड़ सकते हैं। यह उम्मीद के अनुसार मान्य और काम करेगा। – Shef

7

एक्शन वैल्यू रिक्त छोड़ने से फ़ॉर्म को वापस पोस्ट करने का कारण बन जाएगा।

12

आप कार्रवाई को खाली छोड़ दें या इस कोड का उपयोग कर सकते हैं:

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'];?>"> 
</form> 
0

यह बिल्कुल सही है। इसे आजमाएं :)

<form name="test" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
/* Html Input Fields */ 
</form> 
+1

के लिए यह XSS हमलों के लिए अनुमति देता है, आप फ़िल्टर करना/sanatize PHP_SELF – Chad

+0

ठीक है, मैं इसे पाने की जरूरत है। आपको धन्यवाद। येह काम का है। –

3

आप "इको ब्लाह" टाइप करने के बजाय एक गूंज शॉर्टकट का भी उपयोग कर सकते हैं; नीचे दिखाया गया है:

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>"> 
+1

यह एक्सएसएस हमलों के लिए अनुमति देता है, आपको PHP_SELF को फ़िल्टर/sanatize करने की आवश्यकता है – Chad

1

एक और (और मेरी राय में उचित) विधि यदि आप $_SERVER चर पर निर्भर होना पसंद नहीं है __FILE__ लगातार इस्तेमाल करते हैं।

$parts = explode(DIRECTORY_SEPARATOR, __FILE__); 
$fileName = end($parts); 
echo $fileName; 

जादू और पूर्वनिर्धारित स्थिरांक के बारे में: 1, 2