2011-12-25 13 views
17

के लिए यूआरएल दोबारा लिखना मैं अपने उत्पादों के लिए एक नियम फिर से लिखना चाहता हूं। मेरी php मेंउत्पाद नाम

123-नाम का मतलब है उत्पाद आईडी = 123 और नाम = नाम

तो

:

मैं id और वह URL इस तरह एक डैश से अलग में नाम का उपयोग करना चाहते मैं $ _GET [id] प्राप्त कर सकते हैं और फिर इस तरह इस आईडी का उपयोग कर मेरी डेटाबेस क्वेरी:

$sql = "SELECT * from Products Where productid = " . $_GET[id]; 
यहाँ

मैं क्या है:

0,123,
RewriteEngine On 
RewriteRule ^products/([0-9+])\-([a-z]+)/?$ products.php?id=$2 [NC,L] 

लेकिन जब मैं url के रूप में डाल दिया, मैं एक 404

क्यों मिलता है?

उत्तर

17

पहला: आपके पास एक वाक्यविन्यास त्रुटि है। [0-9+] एक वर्ण वर्ग है जो (i) 09 के माध्यम से, या (ii) + चिह्न से मेल खाता है (i)। + को क्वांटिफ़ायर (इच्छित के रूप में) के रूप में उपयोग करने के लिए, के बाद + पर जाएं, जैसे: ([0-9]+)

दूसरा: आप अपने आइटम में $2 का उपयोग कर रहे हैं जो उत्पाद का नाम है। यदि आप आईडी का उपयोग करना चाहते हैं, तो आपको $1 का उपयोग करना होगा।

यहाँ तुम क्या उपयोग करने की आवश्यकता है:

RewriteEngine On 
RewriteRule ^products/([0-9]+)\-([a-z0-9_\-]+)/?$ products.php?product_id=$1 [NC,L,QSA] 

मैं उत्पाद नंबर, पानी का छींटा में जोड़ा गया है और मामले में आप इसे किसी दिन की जरूरत है रेखांकित।

तीसरा: आप sql injections के बारे में पता होना चाहिए, अपनी स्क्रिप्ट सुरक्षित नहीं है। आप mysql_real_escape_string का उपयोग कर इसे ठीक कर सकते हैं।

+0

इस जानकारी के लिए आपको बहुत बहुत धन्यवाद। – natalia

+0

आपका बहुत स्वागत है –

0

मुझे लगता है कि आपको product.php का उपयोग करना चाहिए? Id = $ 1 क्योंकि मिलान वाला पहला तर्क उत्पाद आईडी है।

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