2010-09-28 13 views
11

मैं डीबी के लिए एक स्ट्रिंग के रूप में सहेजा जा रहा है एक इनपुट फ़ील्ड से सभी विशेष वर्ण (",/{} आदि।) निकालना चाहते हैं।कोल्डफ्यूजन और माइक्रोसॉफ्ट एसक्यूएल का उपयोग कर विशेष पात्रों को हटाने के लिए सबसे अच्छा तरीका?

सबसे अच्छा तरीका क्या है?

इस चेक घेरने की कोशिश की जानी चाहिए ? जे एस, ColdFusion या Microsoft SQL के साथ - हो सकता है कि सभी तीन

मैं इस ColdFusion का उपयोग कर कोडिंग या Microsoft SQL के बारे में जाना होगा

+0

यूआई के लिए, आपको JQuery मास्क किए गए इनपुट को देखना चाहिए। http://digitalbush.com/projects/masked-input-plugin/ http://plugins.jquery.com/project/maskedinput – Vikas

+0

ऐप परत (यानी सीएफ) पर इसे निकालें सबसे अधिक समझ में आता है। शायद आपको यह उपयोगी लगेगा: http://demo.bryantwebconsulting.com/datamgr/word.cfm – Henry

उत्तर

15

आपका मतलब सब कुछ अल्फान्यूमेरिक नहीं है?

मैं शायद डेटा परत में एक REReplace का उपयोग करूँगा।

<cfqueryparam 
    cfsqltype="cf_sql_varchar" 
    value="#REReplace(myVar,"[^0-9A-Za-z ]","","all")#" 
/> 

अद्यतन: "अंतरिक्ष" शामिल करने के लिए बदल दिया है।

+0

इसे वैध वर्ण के रूप में जोड़ें। मैंने स्पेस कैरेक्टर के उपयोग की अनुमति देने के लिए अपना जवाब बदल दिया है। – ale

+0

विराम चिह्न क्यों छोड़ दें? – Henry

+0

क्या यह यूटीएफ -8 के साथ काम करता है? मुझे नहीं लगता, क्या मैं सही हूँ? –

3

क्या आप वाकई केवल उन अक्षरों को आम तौर पर एक अधिक सुरक्षित तरीका है ब्लैकलिस्ट करने के लिए चाहते हैं?? केवल स्वीकार्य पात्रों को श्वेतसूची में डालना।

यदि आप यह सुनिश्चित करना चाहते हैं कि आपका डेटा शुद्ध रखा गया है, तो ऐसा करने के लिए सबसे सुरक्षित स्थान INSERT/UPDATE ट्रिगर का उपयोग करके स्रोत पर है।

आप एक यूडीएफ लिख सकते हैं जो टी-एसक्यूएल में या सर्वोत्तम प्रदर्शन के लिए इसे सी # या इसी तरह के सीएलआर फ़ंक्शन के रूप में लागू करता है।

एसक्यूएल में केवल ऐसा करने से सत्यापन समस्याएं हो सकती हैं। उदाहरण के लिए, यदि उपयोगकर्ता ने केवल आवश्यक फ़ील्ड पर अमान्य वर्ण दर्ज किए हैं, तो उन्होंने अनिवार्य रूप से आपको कोई इनपुट नहीं दिया है, इसलिए आपके जीयूआई को सत्यापन त्रुटि फेंकने की आवश्यकता होगी। तो, अपने फ्रंट एंड में उपयोगिता के लिए सत्यापन जांच सर्वोत्तम है, और बैक एंड पर डेटा अखंडता के लिए ट्रिगर्स।

6

Coldfusion

<cfset cleanInput = rereplace(form.input,"[^A-Za-z0-9]","","all") /> 

में रेगुलर एक्सप्रेशन का उपयोग यह कुछ भी नहीं के साथ 9 के माध्यम से किसी भी चरित्र है कि जेड के माध्यम से नहीं एक है या एक जेड के माध्यम से या 0 की जगह और का सामना करना पड़ा हर किसी के लिए यह करना कहते हैं।

+2

"कब करना है" के लिए: जावास्क्रिप्ट: जब आपको किसी सुविधा के लिए उपयोगकर्ता को जानने की आवश्यकता होती है एप्लिकेशन सर्वर: हमेशा सत्यापन के लिए और आप सुधारों का अनुरोध कर सकते हैं डीबी स्तर: आपके संगठन की नीति पर निर्भर करता है, लेकिन वास्तव में बस अतिरिक्त, अतिरिक्त। आवेदन स्तर पर प्रतिक्रिया देना आसान है। –

0

यदि मैं श्वेतसूची पर नहीं थे तो झूठी पीठ पाने के लिए मैंने इसे चेक के रूप में उपयोग किया था।

<cfif len(testString) EQ len(rereplaceNocase(testString,"[^A-Za-z0-9-+$. _[]","","all"))> 
    TRUE<br> 
<cfelse> 
    FALSE<br> 
</cfif> 
+0

वैकल्पिक रूप से: ' ' –

+1

@ पीटरबटन आपका रेक्स क्या देखता/स्वीकार करता है? – HPWD

+0

बिल्कुल पोस्ट किए गए जैसा ही है, लेकिन 'ए-ज़ा-जे 0-9_' के साथ '\ w'' के लिए संघनित है और अनुपलब्ध एस्केप '-' और' ['वर्णों में जोड़े गए हैं। _ अधिक महत्वपूर्ण_ यह है कि सभी लेन/प्रतिस्थापन बकवास हटा दिया गया है, इसलिए यह दोनों स्पष्ट है कि क्या हो रहा है और तेजी से प्रदर्शन करेगा। –

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

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