2012-06-11 13 views
5

मुझे इन 2 विधियों के साथ कुछ डेटा पास करने की आवश्यकता है (प्राप्त करें और पोस्ट करें)। मैं इस विधि लिखते हैं, लेकिन मैं अगर यह सुरक्षित है पता नहीं है:क्या GET और POST का उपयोग करने का कोई तरीका है?

<form method="post" action="profile.php?id=<?php echo $_SESSION['id']; ?>" enctype="multipart/form-data"> 
<input type="text" size="40" name="title" > 
<textarea name="description" rows="2" cols="30"></textarea> 
<input id="starit" name="submit" value="Create" type="submit" /> 
</form> 

<?php 
a= $_GET['id']; 
b= $_POST['title']; 
c= $_POST['description']; 
?> 

इस कोड को सुरक्षित है? या ऐसा करने के अन्य तरीके हैं?

+3

क्यों आप सत्र आईडी को अपने फॉर्म के छिपे हुए इनपुट फ़ील्ड में नहीं लिखते हैं? अंत में यदि उपयोगकर्ता वेबसाइट के स्रोत को ब्राउज़ करता है तो उपयोगकर्ता अपना सत्र आईडी पढ़ सकता है। – Corsair

+0

शायद उसके पास ऐसा करने के कारण हैं। – Aelios

उत्तर

11

यह संयुक्त GET और POST अनुरोध नहीं है; बल्कि, यह क्वेरी पैरामीटर के साथ एक POST अनुरोध है।

जो आपने लिखा है वह सही तरीका होगा। हमेशा सुनिश्चित करें कि आप की उम्मीद क्षेत्रों प्राप्त करते हैं:

if (isset($_GET['id'], $_POST['title'], $_POST['description']) { 
    // go ahead 
} 

Btw, यह सुनिश्चित करें कि आप अपने उत्पादन बच बनाने:

<form method="post" action="profile.php?id=<?php echo rawurlencode($_SESSION['id']); ?>"> 

और अगर आप फ़ाइलें नहीं अपलोड कर रहे हैं, तो आप स्थापित करने की आवश्यकता नहीं है आपके <form> के enctype

+0

ओह, आप 'isset' के साथ एकाधिक चर का उपयोग कर सकते हैं? : डी – ADTC

+0

@ADTC हाँ, सच साबित होता है सभी सेट –

1

यह बेहतर है:

<form method="post" action="profile.php?id=<?php echo urlencode($_SESSION['id'])); ?>"> 
1

तुम दोनों पैरामीटर का ही नाम के साथ पोस्ट द्वारा उपयोग कर सकते हैं और GET या POST के बजाय अनुरोध के साथ मिलता है, यह "अनुरोध आदेश" आदेश प्राप्त हो जाएगा और उसके बाद चूक।

http://php.net/request-order

यह php.ini में है

-1

आपके प्रपत्र हालत में विधि विशेषता लिखने और formmethod = "" इनपुट में विशेषता ... उदाहरण के लिए न जोड़ें:

<input type="submit" formmethod="get" name="inputGet" value="updateGet" > 
<input type="submit" formmethod="post" name="inputPost" value="updatePost" > 
+0

क्या आपका मतलब 'फॉर्म विधि' है? –

+0

हां, अपने फॉर्म टैग में विधि का उपयोग न करें –

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