சுவையற்ற சரிபார்ப்பு php. PHP ஐப் பயன்படுத்தி சரிபார்ப்பு மற்றும் தரவு சுத்தம். உங்கள் சொந்த சரிபார்ப்பு விதியை பதிவு செய்தல்
இணைய பயன்பாடுகளை உருவாக்கும்போது, பாதுகாப்பை தீவிரமாக எடுத்துக்கொள்வது முக்கியம், குறிப்பாக பயனர்களிடமிருந்து தரவைப் பெறுவதை நீங்கள் சமாளிக்க வேண்டியிருக்கும் போது.
ஒரு பொதுவான பாதுகாப்பு விதி யாரையும் நம்பக்கூடாது, எனவே நீங்கள் எப்போதும் சரியான மதிப்புகளை படிவங்களில் உள்ளிட பயனர்களை நம்பியிருக்க முடியாது. எடுத்துக்காட்டாக, புலத்தில் சரியான மின்னஞ்சல் முகவரியை உள்ளிடுவதற்குப் பதிலாக, பயனர் தவறான முகவரியை அல்லது சில தீங்கிழைக்கும் தரவை உள்ளிடலாம்.
பயனர் தரவை சரிபார்க்கும் போது, அதை கிளையன்ட் பக்கத்தில் (இணைய உலாவியில்) அல்லது சர்வர் பக்கத்தில் செய்யலாம்.
முன்பு, கிளையன்ட் பக்க சரிபார்ப்பை JavaScript ஐப் பயன்படுத்தி மட்டுமே செய்ய முடியும். ஜாவாஸ்கிரிப்ட்டில் சிக்கலான சரிபார்ப்பு ஸ்கிரிப்ட்களை எழுத வேண்டிய அவசியமின்றி, HTML5 இன் உதவியுடன் உலாவியில் சரிபார்ப்பைச் செய்ய முடியும் என்பதால், எல்லாம் மாறிவிட்டது (அல்லது கிட்டத்தட்ட மாறிவிட்டது).
HTML5 ஐப் பயன்படுத்தி படிவம் சரிபார்ப்புHTML5 பின்வரும் டேக் பண்புகளின் அடிப்படையில் மிகவும் வலுவான பொறிமுறையை வழங்குகிறது: வகை, முறை மற்றும் தேவை. இந்த புதிய பண்புக்கூறுகள் மூலம், நீங்கள் சில தரவு சரிபார்ப்பு செயல்பாடுகளை உலாவியில் ஏற்றலாம்.
படிவ சரிபார்ப்பிற்கு எவ்வாறு உதவ முடியும் என்பதைப் புரிந்துகொள்ள இந்தப் பண்புகளைப் பார்ப்போம்.
வகை பண்புதரவு செயலாக்கத்திற்காக எந்த உள்ளீட்டு புலத்தைக் காண்பிக்க வேண்டும் என்பதை இந்தப் பண்புக்கூறு சொல்கிறது, எடுத்துக்காட்டாக, தெரிந்த புலம் போன்றது
சில உள்ளீட்டு புலங்கள் கூடுதல் குறியீட்டை எழுத வேண்டிய அவசியம் இல்லாமல் ஏற்கனவே நிலையான சரிபார்ப்பு முறைகளை வழங்குகின்றன. எடுத்துக்காட்டாக, உள்ளிடப்பட்ட மதிப்பு செல்லுபடியாகும் மின்னஞ்சல் முகவரியின் டெம்ப்ளேட்டுடன் பொருந்துகிறதா என்பதை உறுதிப்படுத்த ஒரு புலத்தைச் சரிபார்க்கிறது. ஒரு புலத்தில் தவறான எழுத்து உள்ளிடப்பட்டால், மதிப்பை சரிசெய்யும் வரை படிவத்தை சமர்ப்பிக்க முடியாது.
கீழே உள்ள டெமோவில் உள்ள மின்னஞ்சல் புல மதிப்புகளுடன் விளையாட முயற்சிக்கவும்.
முறையே எண்கள், URLகள் மற்றும் ஃபோன் எண்களை சரிபார்ப்பதற்காக, மற்ற நிலையான புல வகைகளும் உள்ளன.
குறிப்பு: தொலைபேசி எண்களில் உள்ள இலக்கங்களின் எண்ணிக்கையில் உள்ள வேறுபாடுகள் மற்றும் வடிவங்களில் உள்ள வேறுபாடுகள் காரணமாக ஃபோன் எண் வடிவங்கள் நாட்டுக்கு நாடு மாறுபடும். இதன் விளைவாக, விவரக்குறிப்பு தொலைபேசி எண்களைச் சரிபார்ப்பதற்கான வழிமுறையை வரையறுக்கவில்லை, எனவே எழுதும் நேரத்தில் இந்த அம்சம் உலாவிகளால் மோசமாக ஆதரிக்கப்படுகிறது.
அதிர்ஷ்டவசமாக, தொலைபேசி எண் சரிபார்ப்பை பேட்டர்ன் பண்புக்கூறைப் பயன்படுத்தி செய்யலாம், இது வழக்கமான வெளிப்பாட்டை ஒரு வாதமாக எடுத்துக்கொள்கிறது, அதை நாம் அடுத்துப் பார்ப்போம்.
மாதிரி பண்புபேட்டர்ன் பண்புக்கூறு பல முன்-இறுதி டெவலப்பர்களை மகிழ்ச்சியில் குதிக்க வைக்கும். இந்த பண்பு புலத்தில் உள்ளிடப்பட்ட தரவின் சரியான தன்மையை சரிபார்க்கப் பயன்படுத்தப்படும் வழக்கமான வெளிப்பாட்டை (ஜாவாஸ்கிரிப்ட் ரெகுலர் எக்ஸ்பிரஷன் வடிவமைப்பைப் போன்றது) ஏற்றுக்கொள்கிறது.
வழக்கமான வெளிப்பாடுகள் என்பது உரையை அலசவும் கையாளவும் பயன்படும் மொழி. அவை பெரும்பாலும் சிக்கலான கண்டறிதல் மற்றும் மாற்றும் செயல்பாடுகளுக்குப் பயன்படுத்தப்படுகின்றன, அத்துடன் உள்ளிடப்பட்ட தரவின் சரியான தன்மையை சரிபார்க்கவும்.
இன்று, வழக்கமான வெளிப்பாடுகள் மிகவும் பிரபலமான நிரலாக்க மொழிகளிலும், பல ஸ்கிரிப்டிங் மொழிகளிலும், எடிட்டர்களிலும், பயன்பாடுகளிலும், தரவுத்தளங்களிலும் மற்றும் கட்டளை வரி பயன்பாடுகளிலும் சேர்க்கப்பட்டுள்ளன.
வழக்கமான வெளிப்பாடுகள் (RegEX) என்பது தனிப்பட்ட எழுத்துக்கள், சொற்கள் அல்லது எழுத்து வடிவங்கள் போன்ற உரையின் சரத்துடன் பொருந்தக்கூடிய சக்திவாய்ந்த, சுருக்கமான மற்றும் நெகிழ்வான கருவியாகும்.
பேட்டர்ன் பண்புக்கூறின் மதிப்பாக வழக்கமான வெளிப்பாட்டைக் கொடுப்பதன் மூலம், கொடுக்கப்பட்ட உள்ளீட்டு புலத்திற்கு என்ன மதிப்புகள் ஏற்றுக்கொள்ளப்படுகின்றன என்பதை நீங்கள் குறிப்பிடலாம், அத்துடன் பிழைகள் குறித்து பயனருக்குத் தெரிவிக்கலாம்.
உள்ளீட்டு புலங்களின் மதிப்பை சரிபார்க்க வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்துவதற்கான இரண்டு எடுத்துக்காட்டுகளைப் பார்ப்போம்.
தொலைபேசி எண்கள்முன்பே குறிப்பிட்டது போல, வெவ்வேறு நாடுகளில் உள்ள தொலைபேசி எண் வடிவங்களில் உள்ள முரண்பாடுகள் காரணமாக டெல் புல வகையை உலாவிகள் முழுமையாக ஆதரிக்கவில்லை.
எடுத்துக்காட்டாக, சில நாடுகளில் தொலைபேசி எண்களின் வடிவம் xxxx-xxx-xxxx ஆகும், மேலும் தொலைபேசி எண் இது போன்றதாக இருக்கும்: 0803-555-8205.
இந்த முறை பொருந்தும் வழக்கமான வெளிப்பாடு: ^\d(4)-\d(3)-\d(4)$ . குறியீட்டில் இதை இப்படி எழுதலாம்:
தொலைபேசி எண்:
எண்ணெழுத்து மதிப்புகள் பண்புக்கூறு தேவைபடிவத்தைச் சமர்ப்பிக்க, கொடுக்கப்பட்ட புலத்தின் மதிப்பை நிரப்ப வேண்டும் என்பதைக் குறிக்கப் பயன்படுத்தப்படும் பூலியன் பண்புக்கூறு இதுவாகும். இந்தப் பண்புக்கூறை நீங்கள் ஒரு புலத்தில் சேர்க்கும்போது, படிவத்தைச் சமர்ப்பிப்பதற்கு முன் பயனர் இந்தப் புலத்தை நிரப்புமாறு உலாவி கோரும்.
இது JavaScript ஐப் பயன்படுத்தி புல சரிபார்ப்பைச் செயல்படுத்துவதிலிருந்து நம்மைக் காப்பாற்றுகிறது, இது டெவலப்பர்களுக்கு சிறிது நேரத்தைச் சேமிக்கும்.
உதாரணமாக: அல்லது (XHTML இணக்கத்தன்மைக்கு)
மேலே நீங்கள் பார்த்த அனைத்து டெமோக்களும் தேவையான பண்புக்கூறைப் பயன்படுத்துகின்றன, எனவே எந்தப் புலங்களையும் நிரப்பாமல் படிவத்தைச் சமர்ப்பிக்க முயற்சிப்பதன் மூலம் நீங்கள் முயற்சி செய்யலாம்.
முடிவுரைபடிவ சரிபார்ப்புக்கான உலாவி ஆதரவு மிகவும் நல்லது, மேலும் பழைய உலாவிகளுக்கு நீங்கள் பாலிஃபில்களைப் பயன்படுத்தலாம்.
இந்த சோதனைகளை தாக்குபவர்கள் அல்லது போட்களால் எளிதில் கடந்து செல்ல முடியும் என்பதால், உலாவி பக்க சரிபார்ப்பை மட்டும் நம்புவது ஆபத்தானது என்பது குறிப்பிடத்தக்கது.
எல்லா உலாவிகளும் HTML5 ஐ ஆதரிக்காது, மேலும் உங்கள் ஸ்கிரிப்ட்டுக்கு அனுப்பப்படும் எல்லா தரவும் உங்கள் படிவத்தில் இருந்து வராது. இதன் பொருள் பயனரிடமிருந்து தரவை இறுதியாக ஏற்றுக்கொள்வதற்கு முன், சர்வர் பக்கத்தில் அதன் சரியான தன்மையை சரிபார்க்க வேண்டியது அவசியம்.
படிவச் சமர்ப்பிப்புத் தரவை மேலும் செயலாக்கத்திற்கு எடுத்துக்கொள்வதற்கு முன், உங்கள் படிவத்தில் உள்ளீடு சரிபார்க்கப்பட வேண்டியது மிகவும் அவசியம். படிவத்தில் பல புலங்கள் இருக்கும்போது, PHP சரிபார்ப்பு ஸ்கிரிப்ட் மிகவும் சிக்கலானதாகிறது. மேலும், நீங்கள் உருவாக்கும் பெரும்பாலான படிவங்களுக்கு ஒரே மாதிரியான அல்லது ஒரே மாதிரியான சரிபார்ப்பைச் செய்வதால், படிவ சரிபார்ப்புகளுக்கு நகல் முயற்சிகள் அதிகம் செலவிடப்படுகிறது.
இந்த பொதுவான PHP படிவ வேலிடேட்டர் ஸ்கிரிப்ட் உங்கள் படிவத்தில் சரிபார்ப்புகளைச் சேர்ப்பதை மிகவும் எளிதாக்குகிறது.
படிவத்தில் உள்ள ஒவ்வொரு உறுப்புடனும் "சரிபார்ப்பு விளக்கங்கள்" தொகுப்பை உருவாக்கி இணைக்கிறோம். "சரிபார்ப்பு விவரிப்பான்" என்பது சரிபார்ப்பு வகையைக் குறிப்பிடும் ஒரு சரம். எடுத்துக்காட்டாக, "req" என்றால் தேவை, "ஆல்பா" என்றால் அகரவரிசை எழுத்துக்களை மட்டும் அனுமதி மற்றும் பல.
படிவத்தில் உள்ள ஒவ்வொரு புலமும் பூஜ்ஜியம், ஒன்று அல்லது அதற்கு மேற்பட்ட சரிபார்ப்புகளைக் கொண்டிருக்கலாம். எடுத்துக்காட்டாக, உள்ளீடு காலியாக இருக்கக்கூடாது, 25 எழுத்துகளுக்குக் குறைவாக இருக்க வேண்டும், ஆல்ஃபா எண்களாக இருக்க வேண்டும்.
படிவத்தில் உள்ள ஒவ்வொரு உள்ளீட்டு புலத்திற்கும் சரிபார்ப்பு விளக்கங்களின் தொகுப்பை நீங்கள் இணைக்கலாம்.
PHP படிவ சரிபார்ப்பு ஸ்கிரிப்டைப் பதிவிறக்கவும்நீங்கள் கீழே உள்ள PHP படிவ சரிபார்ப்பு ஸ்கிரிப்டைப் பதிவிறக்கலாம்:
ஜிப் கோப்பில் படிவ சரிபார்ப்பு ஸ்கிரிப்ட் formvalidator.php, ஆவணங்கள் மற்றும் பயன்பாட்டு மாதிரிகள் உள்ளன.
முதல் வாதம் படிவத்தில் உள்ள உள்ளீட்டு புலத்தின் பெயர். இரண்டாவது வாதம் சரிபார்ப்பு விளக்கமாகும், இது தேவையான சரிபார்ப்பின் வகையைச் சொல்கிறது. சரிபார்ப்பு தோல்வியுற்றால் காண்பிக்கப்படும் பிழை செய்தி மூன்றாவது வாதம்.
$inpname: $inp_err
\n";) ) உதாரணம்கீழே உள்ள உதாரணம் யோசனையை தெளிவுபடுத்தும்
பெயர்: மின்னஞ்சல்:
தனிப்பயன் சரிபார்ப்பைச் சேர்த்தல்சரிபார்ப்பு விவரிப்பாளர்களால் வழங்கப்படாத தனிப்பயன் சரிபார்ப்பைச் சேர்க்க விரும்பினால், நீங்கள் அவ்வாறு செய்யலாம். இதோ படிகள்:
Class MyValidator CustomValidator நீட்டிக்கிறது ( செயல்பாடு DoValidate(&$formars,&$error_hash) ( if(stristr($formars["Comments"],"http://")) ( $error_hash["Comments"]="URLகள் அனுமதிக்கப்படவில்லை கருத்துகளில்"; பொய்யாகத் திரும்பு; ) உண்மைக்குத் திரும்பு;))
$validator = புதிய FormValidator(); $validator->addValidation("பெயர்","req","தயவுசெய்து பெயரை நிரப்பவும்"); $validator->addValidation("மின்னஞ்சல்", "மின்னஞ்சல்", "மின்னஞ்சலுக்கான உள்ளீடு சரியான மின்னஞ்சல் மதிப்பாக இருக்க வேண்டும்"); $validator->addValidation("மின்னஞ்சல்","req","தயவுசெய்து மின்னஞ்சலை நிரப்பவும்"); $ custom_validator = புதிய MyValidator(); $validator->AddCustomValidator($custom_validator);
பிற சரிபார்ப்புகளுக்குப் பிறகு தனிப்பயன் சரிபார்ப்பு செயல்பாடு தானாகவே அழைக்கப்படும்.
சரிபார்ப்பு விளக்க அட்டவணைஅனைத்து சரிபார்ப்பு விளக்கங்களின் பட்டியல் இங்கே:
சரிபார்ப்பு விவரிப்பான் | பயன்பாடு |
தேவை | களம் காலியாக இருக்கக்கூடாது |
maxlen=??? | உள்ளிடப்பட்ட தரவை அதிகபட்சமாக சரிபார்க்கிறது. எடுத்துக்காட்டாக, அனுமதிக்கப்பட்ட அதிகபட்ச அளவு 25 எனில், சரிபார்ப்பு விளக்கத்தை “maxlen=25” எனக் கொடுங்கள் |
மின்லென்=??? | உள்ளிடப்பட்ட சரத்தின் நீளத்தை தேவையான குறைந்தபட்சமாக சரிபார்க்கிறது. உதாரணம் “minlen=5” |
அல்னம் | அகரவரிசை அல்லது எண் எழுத்துக்களைத் தவிர வேறு ஏதேனும் எழுத்துகள் உள்ளதா எனத் தரவைச் சரிபார்க்கவும் |
அல்னம்_கள் | அகரவரிசை, எண் மற்றும் விண்வெளி எழுத்துக்களை மட்டுமே அனுமதிக்கிறது |
எண் | எண் தரவைச் சரிபார்க்கவும் |
ஆல்பா | அகரவரிசைத் தரவைச் சரிபார்க்கவும். |
ஆல்பா_கள் | அகரவரிசைத் தரவைச் சரிபார்த்து இடைவெளிகளை அனுமதிக்கவும். |
மின்னஞ்சல் | புலம் ஒரு மின்னஞ்சல் புலம் மற்றும் தரவின் செல்லுபடியை சரிபார்க்கவும். |
lt=??? குறைவாக =??? | அனுப்பப்பட்ட மதிப்பை விட தரவு குறைவாக உள்ளதா என சரிபார்க்கவும். எண் புலங்களுக்கு மட்டுமே செல்லுபடியாகும். உதாரணம்: மதிப்பு 1000க்குக் குறைவாக இருந்தால், சரிபார்ப்பு விளக்கத்தை “lt=1000” என வழங்கவும் |
gt=??? பெரியது=??? | அனுப்பப்பட்ட மதிப்பை விட தரவு அதிகமாக உள்ளதா என சரிபார்க்கவும். எண் புலங்களுக்கு மட்டுமே செல்லுபடியாகும். எடுத்துக்காட்டு: மதிப்பு 10 ஐ விட அதிகமாக இருந்தால், சரிபார்ப்பு விளக்கத்தை “gt=10” என வழங்கவும் |
regexp=??? | வழக்கமான வெளிப்பாட்டுடன் மதிப்பு பொருந்த வேண்டும் என்பதை வழக்கமான எக்ஸ்ப்ரெஷனுடன் சரிபார்க்கவும். உதாரணம்: “regexp=^(1.20)$” 20 அகரவரிசை எழுத்துகள் வரை அனுமதிக்கும். |
தேர்ந்தெடுக்க வேண்டாம்=?? | இந்த சரிபார்ப்பு விளக்கமானது தேர்ந்தெடுக்கப்பட்ட உள்ளீட்டு உருப்படிகளுக்கானது (பட்டியல்கள்) பொதுவாக, தேர்ந்தெடுக்கப்பட்ட பட்டியல் பெட்டிகளில் 'ஒன்றைத் தேர்ந்தெடு' என்று ஒரு உருப்படி இருக்கும். பயனர் இந்த விருப்பத்தைத் தவிர வேறு ஒரு விருப்பத்தைத் தேர்ந்தெடுக்க வேண்டும். இந்த விருப்பத்தின் மதிப்பு ‘ஒன்றை தேர்ந்தெடு’ எனில், சரிபார்ப்பு விளக்கம் “dontselect=Select One” ஆக இருக்க வேண்டும். |
dontselectchk | இந்த சரிபார்ப்பு விளக்கமானது தேர்வுப்பெட்டிகளுக்கானது. கொடுக்கப்பட்ட தேர்வுப்பெட்டியை பயனர் தேர்ந்தெடுக்கக் கூடாது. ?? என்பதற்குப் பதிலாக தேர்வுப்பெட்டியின் மதிப்பை வழங்கவும். எடுத்துக்காட்டாக, dontselectchk=on |
shouldselchk | இந்த சரிபார்ப்பு விளக்கமானது தேர்வுப்பெட்டிகளுக்கானது. கொடுக்கப்பட்ட தேர்வுப்பெட்டியை பயனர் தேர்ந்தெடுக்க வேண்டும். ?? என்பதற்குப் பதிலாக தேர்வுப்பெட்டியின் மதிப்பை வழங்கவும். எடுத்துக்காட்டாக, shouldselchk=on |
தேர்ந்தெடுக்கப்பட்ட ரேடியோ | இந்த சரிபார்ப்பு விளக்கமானது ரேடியோ பொத்தான்களுக்கானது. கொடுக்கப்பட்ட ரேடியோ பட்டனை பயனர் தேர்ந்தெடுக்கக் கூடாது. ரேடியோ பொத்தானின் மதிப்பை வழங்கவும் ?? எடுத்துக்காட்டாக, dontselectradio=NO |
தேர்ந்தெடுக்கப்பட்ட வானொலி | இந்த சரிபார்ப்பு விளக்கமானது ரேடியோ பொத்தான்களுக்கானது. கொடுக்கப்பட்ட ரேடியோ பட்டனை பயனர் தேர்ந்தெடுக்க வேண்டும். ரேடியோ பொத்தானின் மதிப்பை வழங்கவும் ?? உதாரணமாக, selectradio=yes |
செல்மின்=?? | ஒரு தேர்வுப்பெட்டி குழுவிலிருந்து குறைந்தபட்சம் n தேர்வுப்பெட்டிகளைத் தேர்ந்தெடுக்கவும். உதாரணமாக: selmin=3 |
தனிமை | வானொலி குழுவை கட்டாயமாக்குகிறது. பயனர் வானொலி குழுவிலிருந்து குறைந்தபட்சம் ஒரு உருப்படியைத் தேர்ந்தெடுக்க வேண்டும். |
eqelmnt=??? | படிவத்தில் உள்ள இரண்டு கூறுகளை ஒப்பிட்டு, மதிப்புகள் ஒரே மாதிரியானவை என்பதை உறுதிப்படுத்தவும் எடுத்துக்காட்டாக, 'கடவுச்சொல்' மற்றும் 'கடவுச்சொல்லை உறுதிப்படுத்தவும்'. மாற்றவும் ??? மற்ற உள்ளீட்டு உறுப்பின் பெயருடன். எடுத்துக்காட்டாக: eqelmnt=confirm_pwd |
POST அல்லது GET தரவின் சரிபார்ப்பைப் பற்றி பேசுவோம், இருப்பினும் கொள்கையளவில் இது குக்கீகள் போன்ற பிற முறைகள் மூலம் பெறப்பட்ட தரவுகளுக்கும் பயன்படுத்தப்படலாம். எந்தவொரு இணைய பயன்பாட்டையும் நீங்கள் உருவாக்கும்போது, பயனர்களுடன் தொடர்புகொள்வதற்கான இடைமுகத்தை நீங்கள் எழுத வேண்டும் மற்றும் பயனர்கள் சர்வருக்கு தரவுகளை அனுப்புவதற்கு இயற்கையாகவே பல்வேறு வடிவங்களை உருவாக்க வேண்டும். உதாரணமாக, இவை கருத்துகளாக இருக்கலாம். பெறப்பட்ட தரவு வகை, அளவு மற்றும் குறிப்பிடப்பட்ட வரம்புடன் ஒத்துப்போகிறதா என்பதைச் சரிபார்க்க வேண்டும் என்பது அனைவருக்கும் தெளிவாகவும் தெளிவாகவும் இருப்பதாக நான் நினைக்கிறேன். முதலில், கணினி, இணையதளம் அல்லது தரவுத்தளத்தின் பாதுகாப்பிற்கு இது தேவைப்படுகிறது, ஏனெனில்... தவறாக அனுப்பப்பட்ட தரவு அல்லது வேண்டுமென்றே மோசமாக உருவாக்கப்பட்ட கோரிக்கை, தாக்குபவர்களுக்கான அணுகலைத் திறக்கும்.
இரண்டாவதாக, சரிபார்க்கப்படாத தரவு, தவறாக இருந்தால், ஸ்கிரிப்ட், கணினி அல்லது முழு சேவையகத்தின் நிலையற்ற செயல்பாட்டை ஏற்படுத்தும். எனவே, எல்லா தரவும் சரிபார்க்கப்பட்டு இருமுறை சரிபார்க்கப்பட வேண்டும்; ஒருவேளை அதிகப்படியான சித்தப்பிரமை தேவையில்லை என்று யாராவது கூறலாம், ஆனால் இந்த விஷயத்தில் அது வெறுமனே அதிகமாக இருக்க முடியாது என்று நான் நம்புகிறேன்.
எந்தவொரு சாக்குப்போக்கிலும், எந்த சூழ்நிலையிலும் பயனர்களிடமிருந்து பெறப்பட்ட தரவை நம்ப வேண்டாம். பெறப்பட்ட தரவை மீண்டும் சரிபார்க்கும் குறியீட்டை எழுதுவதற்கு நாங்கள் மிகவும் சோம்பேறியாக இருக்கிறோம் அல்லது ஏற்கனவே உள்ள சரிபார்ப்பு முறைகள் போதுமானது என்று நம்புகிறோம், இதன் விளைவாக நமக்கு நாமே சலுகைகளை வழங்குகிறோம்.
தலைப்பிலிருந்து ஒரு சிறிய விலகல்:
திட்டப்பணிகள், உருவாக்குதல் மற்றும் நிரலாக்க வலைத்தளங்கள், ஸ்கிரிப்டுகள் மற்றும் பிற அமைப்புகளில் பணிபுரிவது கிட்டத்தட்ட எனது ஓய்வு நேரத்தை (வேலை நேரத்தைத் தவிர) எடுத்துக்கொள்கிறது, வேறுவிதமாகக் கூறினால், நான் ஒரு நாளைக்கு அதிகபட்ச மணிநேரங்களுக்கு இந்த வேலையைச் செய்கிறேன். அவ்வப்போது வேடிக்கைக்காக அல்லது ஆர்வத்திற்காக எதையாவது சோதிக்க வேண்டிய அவசியம் உள்ளது. இதன் விளைவாக, வீட்டில் தயாரிக்கப்பட்ட என்ஜின்கள் அல்லது பழங்கால பதிப்புகளின் CMS ஐப் பயன்படுத்தி, அவசரமாக உருவாக்கப்பட்ட தளங்கள், இதேபோன்ற சோதனை ஆய்வக எலிகளாக மாறுகின்றன. நிச்சயமாக, மேலே உள்ள அனைத்தும் வக்கிரமாக எழுதப்பட்ட குறியீடு, தரவுக் கட்டுப்பாடு இல்லாமை மற்றும் பல்வேறு பிழைகளால் வெறுமனே பாதிக்கப்படுகின்றன. உண்மையில், பெரும்பாலான சந்தர்ப்பங்களில், இதுபோன்ற தளங்களில் எனது சோதனைகளின் ஒரு மணிநேரத்தில், பல தீவிரமான பாதிப்புகளைக் கண்டறிய முடிந்தது, மேலும் அவற்றில் பெரும்பாலானவை உள்வரும் தரவின் போதுமான சரிபார்ப்பில் இல்லை. சமீபத்தில், ஜாவாஸ்கிரிப்ட் + அஜாக்ஸிலிருந்து பெறப்பட்ட POST தரவைச் செயலாக்கும் ஸ்கிரிப்ட்களில் இது அடிக்கடி காணப்படுகிறது.
வெளிப்படையாக, அஜாக்ஸைப் பயன்படுத்தி இந்த ஸ்கிரிப்ட்களை எழுதிய புரோகிராமர்கள், பயனருக்குத் தெரியாமல் அல்லது பக்கத்தை மறுஏற்றம் செய்யாமல், எல்லா கோரிக்கைகளும் பின்னணியில் நிகழும் என்பதால், தரவை குறிப்பாகச் சரிபார்க்க வேண்டிய அவசியமில்லை என்று நம்புகிறார்கள்.
ஒரு விதியாக, இந்த ஸ்கிரிப்ட்களில் சில துளைகள் நிறைந்ததாக மாறிவிட்டன, அதிக முயற்சியின்றி அவை ஒரு பெரிய துளையை உருவாக்கி அவற்றின் ஷெல்லை நிரப்ப முடிகிறது. நிச்சயமாக, சோதனை நோக்கத்திற்காக மட்டுமே மற்றும் வேறு எதுவும் இல்லை (அத்தகைய தளங்களின் நிர்வாகம் எப்போதும் இருக்கும் பாதிப்புகள் குறித்து தெரிவிக்கப்படுகிறது).
சரிபார்ப்பின் முக்கியத்துவம் அனைவருக்கும் தெளிவாக இருப்பதாக நான் நினைக்கிறேன். நீண்ட காலமாக, நான் ஒவ்வொரு முறையும் ஒரே குறியீட்டை எழுதினேன், பின்னர் எனது சொந்த தரவு சரிபார்ப்பு செயல்பாடுகளைப் பயன்படுத்தினேன், அவற்றில் பல மிகவும் பழமையானவை மற்றும் ஒரு விதியாக, (சேர்க்கப்பட்ட) கோப்புகளின் வெவ்வேறு பகுதிகளில் சிதறடிக்கப்பட்டன. விரைவில் நான் PHP கட்டமைப்புகளான Zend, CI, Kohana ஆகியவற்றைப் பற்றி தெரிந்துகொள்ள ஆரம்பித்தேன், ஒவ்வொன்றும் எனது திட்டங்களுக்காக நான் கடன் வாங்கிய தரவை சரிபார்க்க அதன் சொந்த வகுப்பை செயல்படுத்தியது. முடிவில், சிஐ வகுப்புகளில் ஒன்றை எனது தேவைகளுக்கு ஏற்ப மாற்ற முடிவு செய்தேன், ஆனால் நிரலாக்க வலைப்பதிவுகளில் ஒன்றின் ஆசிரியர் இதை ஏற்கனவே கவனித்துள்ளார். அடுத்து, அவரது படைப்புகளை, அதாவது மாற்றியமைக்கப்பட்ட CodeIgniter நூலகத்தைப் பகிர்ந்து கொள்கிறேன்.
பின்வரும் குறியீட்டைப் பார்ப்போம்:
குறியீட்டைப் பார்க்கவும் PHP
தேவை_ஒருமுறை "validator.class.php" ; $validator = புதிய Validator() ; $validator -> set_rules ("பெயர்" , "உங்கள் பெயர்" , வரிசை ("தேவை" => , "ஆல்பா" => ) ; $validator -> set_rules ("மின்னஞ்சல்" , "உங்கள் மின்னஞ்சல்" , வரிசை ("தேவை" => "புலம் %s தேவை" , "valid_email" => ) ); என்றால் ($validator -> ரன் () ) ( எதிரொலி "சரிபார்ப்பு வெற்றிகரமாக இருந்தது" ; ) இல்லையெனில் ( echo $validator -> get_string_errors () ; ) |
எடுத்துக்காட்டில் இருந்து நீங்கள் பார்க்க முடியும் என, முதல் வரியில் நாம் வகுப்பு கோப்பை சேர்க்கிறோம் Validator.calss.phpஎங்கள் ஸ்கிரிப்டுக்கு. அடுத்து, வகுப்பின் நிகழ்வை உருவாக்கி, பொருளை மாறியில் சேமிக்கிறோம் $validator.
பின்னர் முறையைப் பயன்படுத்தவும் $validator->set_rules($field, $label, $rules)சரிபார்ப்புக்கான புலங்களை அமைக்கவும்.
இந்த முறை 3 அளவுருக்களை எடுக்கும்:
சரிபார்ப்புக்கான அனைத்து புலங்களும் அமைக்கப்பட்ட பிறகு, முறையைப் பயன்படுத்தி வேலிடேட்டரைத் தொடங்குகிறோம் $validator->ரன்(). சரிபார்ப்பு வெற்றிகரமாக இருந்தால், இந்த முறை மதிப்பை வழங்கும் உண்மை, இல்லையெனில், ஏதேனும் பிழைகள் இருந்தால், அது திரும்பும் பொய்.
பிழை செய்திகளைப் பெற மூன்று வழிகள் உள்ளன:
இயல்பாக, பிழை செய்திகள் ஒரு குறிச்சொல்லில் மூடப்பட்டிருக்கும் . உங்கள் வடிவமைப்பை அமைக்க, முறையைப் பயன்படுத்தவும் set_error_delimiters($prefix, $suffix). உதாரணமாக இது போன்ற:
பிழைச் செய்திகள் இப்போது இவ்வாறு தோன்றும் divவகுப்போடு "பிழை"
நீங்கள் பார்க்க முடியும் என, எல்லாம் மிகவும் எளிது.
குறியீட்டைப் பார்க்கவும் PHP
$validator -> set_error_delimiters ( " " , " " ) ; |
சரிபார்ப்பு விதிகளை அமைக்க, நீங்கள் முறையைப் பயன்படுத்தலாம் set_rules($fields)பல பரிமாண துணை வரிசையை அனுப்பவும். ஒரு உதாரணத்தைப் பார்ப்போம்:
குறியீட்டைப் பார்க்கவும் PHP
$rules = array ( array ( "field" => "name" , "label" => "Your name" , "rules" => array ( "required" => "Field %s தேவை" , "alpha" = > "%s புலத்தில் எழுத்துகள் மட்டுமே இருக்க வேண்டும்" ) , வரிசை ( "புலம்" => "மின்னஞ்சல்" , "label" => "உங்கள் மின்னஞ்சல்" , "விதிகள்" => வரிசை ( "தேவை" => "புலம் % s தேவை" , "valid_email" => "%s புலத்தில் சரியான மின்னஞ்சல் முகவரி இருக்க வேண்டும்" ) ) ; $validator -> set_rules ($rules ); |
நீங்கள் பார்க்கிறபடி, முதல் எடுத்துக்காட்டில் உள்ள அதே சரிபார்ப்பு விதிகளை நான் பல பரிமாண துணை வரிசையின் வடிவத்தில் மட்டுமே எழுதினேன். ஒரு குறிப்பிட்ட சூழ்நிலையில் உங்களுக்கு மிகவும் பொருத்தமான எந்த முறைகளையும் நீங்கள் பயன்படுத்தலாம்.
எனவே, இந்த வகுப்பு எந்த சரிபார்ப்பு விதிகளை ஆதரிக்கிறது?
அனைவரும் சந்திக்கும் பொதுவான சரிபார்ப்பு விதிகளை இந்த வகுப்பிற்கு கொண்டு வந்துள்ளேன். இந்த விதிகளின் முழுமையான பட்டியல் இங்கே:
தேவை | புலம் காலியாக இருந்தால் FALSE என வழங்கும் |
முழு | மதிப்பு முழு எண்ணாக இல்லாவிட்டால் FALSEஐ வழங்கும் |
மிதவை | மதிப்பு எண் மதிப்பாக இல்லாவிட்டால் FALSE என வழங்கும் |
Valid_url | மதிப்பு சரியான URL இல்லை எனில் FALSE என வழங்கும் |
Valid_email | மதிப்பு சரியான மின்னஞ்சல் முகவரியாக இல்லாவிட்டால் FALSEஐ வழங்கும் |
Valid_ip | IP முகவரி தவறானது எனில் FALSE என வழங்கும் |
போட்டிகளில் | உறுப்பு மற்றொரு புல உறுப்பின் மதிப்புடன் பொருந்தவில்லை என்றால் FALSEஐ வழங்கும் |
ஆல்பா | உறுப்பில் எழுத்துக்களை விட அதிகமாக இருந்தால் FALSEஐ வழங்கும் |
செல்லுபடியாகும்_கேப்ட்சா | அமர்வு புலத்தில் உள்ள மதிப்பு படிவ புலத்தின் மதிப்புக்கு சமமாக இல்லாவிட்டால் FALSE என வழங்கும் |
செல்லுபடியாகும்_தேதி | உறுப்பு தவறான தேதியைக் கொண்டிருந்தால் FALSEஐ வழங்கும் |
இந்த விதிகளில் பெரும்பாலானவை வடிப்பான்களைப் பயன்படுத்துகின்றன, அவை PHP 5 இல் கிடைக்கின்றன.
நீங்கள் விரும்பினால், வேலிடேட்டர் வகுப்பில் தேவையான செயல்பாடுகளைச் சேர்ப்பதன் மூலம் சரிபார்ப்புக்கான விதிகளின் தொகுப்பை எப்போதும் விரிவாக்கலாம்.
செயலாக்கப்பட்ட POST தரவு மதிப்பைப் பெற, பின்வரும் முறையைப் பயன்படுத்தவும்:
குறியீட்டைப் பார்க்கவும் PHP
பொதுவாக, படிவத்தை வெற்றிகரமாகச் செயலாக்கும்போது படிவத்தை அழிக்க இந்த முறை அழைக்கப்படுகிறது.
அனைவருக்கும் மாலை வணக்கம் (இரவு போன்றது - ஆசிரியர் குறிப்பு). இன்று நாம் அதை கொஞ்சம் மேம்படுத்துவோம். முதலில், PHP இல் படிவ சரிபார்ப்பை எவ்வாறு செய்வது மற்றும் சில பாதுகாப்பு கையாளுதல்களை செய்வது எப்படி என்பதை அறிந்து கொள்வோம்.
எனவே, கீழே உள்ள குறியீட்டைப் பார்த்து, பின்வரும் மாற்றங்களையும் மாற்றங்களுக்கான பின்வரும் காரணங்களையும் கவனியுங்கள். நான் அனைத்து புதிய வரிகளையும் வண்ணத்துடன் முன்னிலைப்படுத்தினேன்.
படிவ புலங்களின் பெயர் மாற்றப்பட்டுள்ளது. நீங்கள் கேட்கலாம் - நமக்கு இது ஏன் தேவை? இது எளிது, நான் உங்களுக்கு பதிலளிப்பேன். எனக்குத் தெரிந்தவரை, சில ஸ்பேம் போட்கள் படிவங்களைத் தேடும் தளங்களைத் தேடி, இந்தப் புலங்களின் பெயர்களின் அடிப்படையில் அவற்றை நிரப்புகின்றன. கோட்பாட்டில், அவர்கள் ஒரு பொருத்தத்தைக் கண்டுபிடிக்கவில்லை என்றால், அவர்கள் வீட்டிற்குச் செல்கிறார்கள், அதுதான் நமக்கு வேண்டும். நிச்சயமாக, இந்த பாதுகாப்பின் அளவு குறிப்பாக பெரிதாக இருப்பதாக நான் நினைக்கவில்லை, ஆனால் அது நம்மை காயப்படுத்தாது, மேலும் ஸ்பேம் மின்னஞ்சல்கள் 1 எழுத்து குறைந்தால், அது நன்றாக இருக்கும் =).
மின்னஞ்சல் முகவரி சரியாக உள்ளிடப்பட்டுள்ளதா என்பதைச் சரிபார்க்கிறது. வரி 17 elseif ஆபரேட்டரைப் பயன்படுத்துகிறது, இது எங்களுக்கு நேர்மறையான பதில் இருந்தால் சரிபார்க்கப்படும், அதாவது மின்னஞ்சல் முகவரி காணவில்லை, அதாவது அது உள்ளிடப்படவில்லை. இங்கே நாம் preg_match செயல்பாட்டைப் பயன்படுத்துகிறோம், இது உள்ளிட்ட முகவரியை ஒப்பிட்டுப் பார்க்க அனுமதிக்கிறது வழக்கமான வெளிப்பாடு. வழக்கமான வெளிப்பாடுகளைப் பற்றி நான் பின்னர் சுருக்கமாக எழுதுவேன், ஆனால் இப்போது ஒரு வழக்கமான வெளிப்பாடு ஒரு வகையான டெம்ப்ளேட்டை உருவாக்குகிறது, அதற்கு எதிராக எங்கள் சரம் சரிபார்க்கப்படுகிறது என்பதை அறிவது மதிப்பு. எங்கள் விஷயத்தில், உள்ளிடப்பட்ட முகவரி வெளிப்பாட்டுடன் பொருந்தவில்லை என்றால், மீண்டும் ஒரு பிழை காட்டப்படும். எடுத்துக்காட்டாக, இங்கே இன்னும் இரண்டு வழக்கமான வெளிப்பாடுகள் உள்ளன:
|^[-а-яе\s\.,;:\?!]+$|i- இந்த வழக்கமான வெளிப்பாடு ரஷ்ய எழுத்துக்கள் மற்றும் இடம், காலம், கமா போன்ற சில எழுத்துக்களை மட்டுமே பயன்படுத்த அனுமதிக்கிறது.
#http://[-a-z0-9_.]+[-a-z0-9_:@&?=+,.!/~*’%$]*\.(html?|php)#i- மற்றும் இந்த வெளிப்பாடு இணையத்தில் முகவரியின் சரியான எழுத்துப்பிழையைச் சரிபார்க்க உங்களை அனுமதிக்கிறது.
அடுத்து, நாங்கள் வேறு ஆபரேட்டரைப் பயன்படுத்துகிறோம், அங்கு ஒரு கடிதத்தை அனுப்புவதற்கான அனைத்து குறியீடுகளும் ஏற்கனவே மாற்றப்பட்டுள்ளன. நீங்கள் எந்த அளவிலும் சரிபார்ப்பு விதிகளை உருவாக்கலாம், மின்னஞ்சல் முகவரியைச் சரிபார்ப்பது போன்ற புதியவற்றைச் சேர்த்தால், நீங்கள் மகிழ்ச்சியாக இருப்பீர்கள்.
தொடர்பு கொண்ட நபர்:
தொடர்பு மின்னஞ்சல்:
செய்தி:
புறம்பான எதையும் நாடாமல் உங்கள் PHP படிவங்களை இப்படித்தான் சரிபார்க்க முடியும். படிவங்கள் என்ற தலைப்பில் அடுத்த முறை ஒரு இடுகையில், jQuery இல் படிவங்களின் சரிபார்ப்பு பரிசீலிக்கப்படும் என்று நினைக்கிறேன். இதற்கிடையில், உங்கள் கருத்துகள் மற்றும் வாழ்த்துக்களுக்காக காத்திருக்கிறேன். அனைவருக்கும் இனிய இரவு மற்றும் இனிய காலை வணக்கம் =).
படிவத் தரவைச் சரிபார்க்க PHP ஐ எவ்வாறு பயன்படுத்துவது என்பதை இதுவும் அடுத்த அத்தியாயங்களும் காட்டுகின்றன.
PHP படிவம் சரிபார்ப்புPHP படிவங்களை செயலாக்கும் போது பாதுகாப்பு பற்றி யோசியுங்கள்!
பாதுகாப்பை மனதில் கொண்டு PHP படிவங்களை எவ்வாறு செயலாக்குவது என்பதை இந்தப் பக்கங்கள் காண்பிக்கும். உங்கள் படிவத்தை ஹேக்கர்கள் மற்றும் ஸ்பேமர்களிடமிருந்து பாதுகாக்க, படிவத் தரவின் சரியான சரிபார்ப்பு முக்கியம்!
இந்த அத்தியாயங்களில் நாங்கள் பணிபுரியும் HTML படிவத்தில் பல்வேறு உள்ளீட்டு புலங்கள் உள்ளன: தேவையான மற்றும் விருப்பமான உரை புலங்கள், ரேடியோ பொத்தான்கள் மற்றும் சமர்ப்பி பொத்தான்:
மேலே உள்ள படிவத்திற்கான சரிபார்ப்பு விதிகள் பின்வருமாறு:
பெயர் | தேவை. + எழுத்துக்களும் இடைவெளியும் மட்டுமே இருக்க வேண்டும் |
மின்னஞ்சல் | தேவை. + சரியான மின்னஞ்சல் முகவரியைக் கொண்டிருக்க வேண்டும் (@ மற்றும் . உடன்) |
இணையதளம் | விருப்பமானது. இருந்தால், அதில் சரியான URL இருக்க வேண்டும் |
கருத்து | விருப்பமானது. பல வரி உள்ளீட்டு புலம் (உரைப்பகுதி) |
பாலினம் | தேவை. ஒன்றைத் தேர்ந்தெடுக்க வேண்டும் |
முதலில் நாம் படிவத்திற்கான எளிய HTML குறியீட்டைப் பார்ப்போம்:
உரை புலங்கள்பெயர், மின்னஞ்சல் மற்றும் இணையதளப் புலங்கள் உரை உள்ளீட்டு கூறுகள், மற்றும் கருத்து புலம் உரைப் பகுதி. HTML குறியீடு இதுபோல் தெரிகிறது:
பெயர்:
மின்னஞ்சல்:
இணையதளம்:
கருத்து:
பாலின புலங்கள் ரேடியோ பொத்தான்கள் மற்றும் HTML குறியீடு இதுபோல் தெரிகிறது:
பாலினம்:
பெண்
ஆண்
மற்றவை
படிவத்தின் HTML குறியீடு இதுபோல் தெரிகிறது: