நாங்கள் PHP இல் POST கோரிக்கைகளை செயல்படுத்துகிறோம். NodeJS. POST கோரிக்கைகளை எவ்வாறு செயலாக்குவது http கோரிக்கைகள் php

உலாவி கிளையண்டுகள் இணைய சேவையகத்திற்கு தகவலை அனுப்பலாம்.

உலாவி தகவலை அனுப்பும் முன், URL குறியாக்கம் எனப்படும் திட்டத்தைப் பயன்படுத்தி அதை குறியாக்கம் செய்கிறது. இந்தத் திட்டத்தில், பெயர்/மதிப்பு ஜோடிகள் சம அடையாளங்களுடன் இணைக்கப்படுகின்றன, மேலும் வெவ்வேறு ஜோடிகள் ஒரு ஆம்பர்சண்ட் மூலம் பிரிக்கப்படுகின்றன.

பெயர்1=மதிப்பு1&பெயர்2=மதிப்பு2&பெயர்3=மதிப்பு3

இடைவெளிகள் அகற்றப்பட்டு ஒரு + எழுத்துடன் மாற்றப்படும், மேலும் எண்ணெழுத்து அல்லாத மற்ற எழுத்துக்கள் ஹெக்ஸாடெசிமல் மதிப்புகளால் மாற்றப்படும். தகவல் குறியாக்கம் செய்யப்பட்டவுடன், அது சேவையகத்திற்கு அனுப்பப்படும்.

GET முறை

பக்கக் கோரிக்கையுடன் இணைக்கப்பட்ட குறியாக்கப்பட்ட பயனர் தகவலை GET முறை அனுப்புகிறது. பக்கங்களும் குறியிடப்பட்ட தகவல்களும் ஒன்றுக்கொன்று பிரிக்கப்பட்டதா? கேள்வி குறி.

http://www.test.com/index.htm?name1=value1&name2=value2

  • GET முறையானது உலாவியின் "இருப்பிடம்" புலத்தில் உங்கள் சர்வர் பதிவுகளில் தோன்றும் நீண்ட சரத்தை உருவாக்குகிறது.
  • GET முறை 1024 எழுத்துகள் வரை மட்டுமே அனுப்பும்.
  • சேவையகத்திற்கு அனுப்ப கடவுச்சொல் அல்லது பிற முக்கியத் தகவல் இருந்தால் GET முறையை ஒருபோதும் பயன்படுத்த வேண்டாம்.
  • படங்கள் அல்லது உரை ஆவணங்கள் போன்ற பைனரி தரவை சேவையகத்திற்கு மாற்ற GET ஐப் பயன்படுத்த முடியாது.
  • GET முறை மூலம் அனுப்பப்படும் தரவை QUERY_STRING சூழல் மாறியைப் பயன்படுத்தி அணுகலாம்.
  • GET முறையைப் பயன்படுத்தி அனுப்பப்பட்ட அனைத்து தகவல்களையும் அணுக $_GET துணை வரிசையை PHP வழங்குகிறது.

என்றால்($_GET["பெயர்"] || $_GET["வயது"]) ( எதிரொலி "வரவேற்பு ". $_GET["பெயர்"]; எதிரொலி "உங்களுக்கு ". $_GET["வயது"]. " வயது "; வெளியேறு (); )

பெயர்: வயது:

POST முறை

முறை அஞ்சல் HTTP தலைப்புகள் வழியாக தகவலை அனுப்புகிறது. முறையின் விஷயத்தில் விவரிக்கப்பட்டுள்ளபடி தகவல் குறியாக்கம் செய்யப்படுகிறது பெறு, மற்றும் தலைப்பில் வைக்கப்பட்டது QUERY_STRING.

  • POST முறையில் அனுப்பப்பட வேண்டிய தரவின் அளவு வரம்பு இல்லை.
  • ASCII மற்றும் பைனரி தரவுகளை அனுப்ப POST முறையைப் பயன்படுத்தலாம்.
  • POST முறையைப் பயன்படுத்தி அனுப்பப்படும் தரவு HTTP தலைப்பு வழியாக அனுப்பப்படுகிறது, எனவே பாதுகாப்பு HTTP நெறிமுறையைப் பொறுத்தது. பாதுகாப்பான HTTPஐப் பயன்படுத்துவதன் மூலம், உங்கள் தகவல் பாதுகாக்கப்படுவதை உறுதிசெய்யலாம்.
  • PHP ஆனது POST முறையைப் பயன்படுத்தி அனுப்பப்படும் அனைத்து தகவல்களையும் அணுக $_POST ஒரு துணை வரிசையை வழங்குகிறது.

test.php ஸ்கிரிப்ட்டில் மூலக் குறியீட்டை வைப்பதன் மூலம் பின்வரும் உதாரணத்தை முயற்சிக்கவும்.

if($_POST["பெயர்"] || $_POST["வயது"]) ( என்றால் (preg_match("[^A-Za-z"-]",$_POST["பெயர்"])) ( இறக்க (" தவறான பெயர் மற்றும் பெயர் ஆல்பாவாக இருக்க வேண்டும்"); ) எதிரொலி "வரவேற்கிறேன் ". $_POST["பெயர்"]; எதிரொலி "உங்களுக்கு ". $_POST["வயது"]. " வயது."; வெளியேறு(); )

பெயர்: வயது:

$_REQUEST மாறி

PHP மாறி $_REQUESTபோன்ற உள்ளடக்கங்களைக் கொண்டுள்ளது $_GET, $_POST, அதனால் $_COOKIE. மாறியைப் பற்றி விவாதிப்போம் $_COOKIEநாங்கள் குக்கீகளைப் பற்றி பேசும்போது.

GET மற்றும் POST முறைகளைப் பயன்படுத்தி சமர்ப்பிக்கப்பட்ட படிவத் தரவிலிருந்து முடிவைப் பெற PHP $_REQUEST மாறியைப் பயன்படுத்தலாம்.

PHP POST கோரிக்கையை நிறைவேற்றுவதற்கான முதல் முறை file_get_contents . இரண்டாவது முறை மற்ற செயல்பாடுகளுடன் இணைந்து fread ஐப் பயன்படுத்தும். இரண்டு விருப்பங்களும் தேவையான கோரிக்கை தலைப்பு புலங்களை நிரப்ப stream_context_create செயல்பாட்டைப் பயன்படுத்துகின்றன.

குறியீடு விளக்கம்

$sPD மாறியில் மாற்றப்பட வேண்டிய தரவு உள்ளது. இது HTTP கோரிக்கை சரம் வடிவத்தில் இருக்க வேண்டும், எனவே சில சிறப்பு எழுத்துக்கள் குறியாக்கம் செய்யப்பட வேண்டும்.

file_get_contents செயல்பாடு மற்றும் fread செயல்பாடு இரண்டிலும் இரண்டு புதிய அளவுருக்கள் உள்ளன. முதலாவது use_include_path . நாங்கள் ஒரு HTTP கோரிக்கையை வைப்பதால், இரண்டு எடுத்துக்காட்டுகளிலும் அது தவறாக இருக்கும். உள்ளூர் ஆதாரத்தைப் படிக்க சரி என அமைக்கப்படும் போது, ​​செயல்பாடு அடங்கும்_பாதையில் கோப்பைத் தேடும்.

இரண்டாவது அளவுரு சூழல் ஆகும், இது $aHTTP வரிசையின் மதிப்பை எடுக்கும் stream_context_create இன் ரிட்டர்ன் மதிப்புடன் நிரப்பப்படுகிறது.

POST கோரிக்கைகளைச் செய்ய file_get_contents ஐப் பயன்படுத்துதல்

PHP இல் file_get_contents ஐப் பயன்படுத்தி ஒரு POST கோரிக்கையை அனுப்ப, நீங்கள் stream_context_create ஐப் பயன்படுத்தி தலைப்புப் புலங்களை கைமுறையாக நிரப்பி, எந்த "ரேப்பர்" ஐப் பயன்படுத்த வேண்டும் என்பதைக் குறிப்பிட வேண்டும் - இந்த நிலையில் HTTP:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "பெயர்=ஜேக்கப்&பெஞ்ச்=150"; // POST தரவு $aHTTP = வரிசை("http" => // ரேப்பர் பயன்படுத்தப்படும் அணி("முறை" => "POST", // கோரிக்கை முறை // கோரிக்கை தலைப்புகள் "தலைப்பு" => "உள்ளடக்கம் - வகை: பயன்பாடு/x-www-form-urlencoded", "content" => $sPD)); $சூழல் = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); எதிரொலி $உள்ளடக்கங்கள்;

POST கோரிக்கைகளைச் செய்ய fread ஐப் பயன்படுத்துகிறது

POST கோரிக்கைகளைச் செய்ய fread செயல்பாட்டைப் பயன்படுத்தலாம். பின்வரும் எடுத்துக்காட்டு தேவையான HTTP கோரிக்கை தலைப்புகளை உருவாக்க stream_context_create ஐப் பயன்படுத்துகிறது:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "பெயர்=ஜேக்கப்&பெஞ்ச்=150"; // POST தரவு $aHTTP = வரிசை("http" => // ரேப்பர் பயன்படுத்தப்படும் அணி("முறை" => "POST", // கோரிக்கை முறை // கோரிக்கை தலைப்புகள் "தலைப்பு" => "உள்ளடக்கம் - வகை: பயன்பாடு/x-www-form-urlencoded", "content" => $sPD)); $சூழல் = stream_context_create($aHTTP); $கைப்பிடி = fopen($sURL, "r", false, $context); $உள்ளடக்கங்கள் = ""; அதே நேரத்தில் (!feof($ handle)) ( $contents .= fread($ handle, 8192); ) fclose($ handle); எதிரொலி $உள்ளடக்கங்கள்;

PHP மூலம் GET கோரிக்கைகளை உருவாக்குதல்

HTTP மற்றும் HTTPS வழியாக இணையத்திலிருந்து உள்ளடக்கத்தைப் பதிவிறக்க, fread மற்றும் file_get_contents ஐப் பயன்படுத்துவதில் இப்போது கவனம் செலுத்துவோம். இந்த கட்டுரையில் விவரிக்கப்பட்டுள்ள முறைகளைப் பயன்படுத்த, நீங்கள் fopen wrappers விருப்பத்தை இயக்க வேண்டும். இதைச் செய்ய, php.ini கோப்பில் அனுமதிக்கும்_url_fopen அளவுருவை On ஆக அமைக்க வேண்டும்.

PHP இல் POST மற்றும் GET கோரிக்கைகளைச் செய்வது வலைத்தளங்களில் உள்நுழைய, வலைப்பக்க உள்ளடக்கத்தை மீட்டெடுக்க அல்லது பயன்பாடுகளின் புதிய பதிப்புகளைச் சரிபார்க்கப் பயன்படுகிறது. எளிய HTTP கோரிக்கைகளை எவ்வாறு செய்வது என்பதை நாங்கள் விவரிக்கிறோம்.

இணையத்தில் கோப்புகளைப் பதிவிறக்க அல்லது பெற fread ஐப் பயன்படுத்துகிறது

இணையப் பக்க வாசிப்பு பாக்கெட்டின் அணுகக்கூடிய பகுதிக்கு மட்டுமே என்பதை நினைவில் கொள்ளுங்கள். எனவே நீங்கள் stream_get_contents செயல்பாட்டைப் பயன்படுத்த வேண்டும் ( file_get_contents போன்றது) அல்லது கோப்பின் முடிவை அடையும் வரை உள்ளடக்கங்களை சிறிய துண்டுகளாகப் படிக்க சிறிது நேர வளையம்:

PHP POST கோரிக்கையைச் செயலாக்கும் இந்தச் சந்தர்ப்பத்தில், fread செயல்பாட்டின் கடைசி வாதம், துண்டு அளவுக்குச் சமமாக இருக்கும். இது பொதுவாக 8192 ஐ விட அதிகமாக இருக்கக்கூடாது ( 8*1024 ).

இது பெரியதாகவோ அல்லது சிறியதாகவோ இருக்கலாம் மற்றும் PHP இயங்கும் கணினியின் அமைப்புகளால் வரையறுக்கப்படலாம் என்பதை நினைவில் கொள்ளவும்.

தளத்தின் URL ஐப் பெற file_get_contents ஐப் பயன்படுத்துதல்

HTTP மூலம் கோப்பைப் படிக்கும்போது இந்த முறையைப் பயன்படுத்துவது இன்னும் எளிதானது, ஏனெனில் நீங்கள் துண்டுகளாகப் படிப்பதைப் பற்றி கவலைப்பட வேண்டியதில்லை - அனைத்தும் PHP இல் கையாளப்படுகின்றன.

இந்த வெளியீடு நட்பு திட்டக் குழுவால் தயாரிக்கப்பட்ட “PHP மூலம் POST கோரிக்கைகளை உருவாக்குதல்” என்ற கட்டுரையின் மொழிபெயர்ப்பாகும்.

PHP தற்போது இணைய பயன்பாடுகளை செயல்படுத்த மிகவும் பிரபலமான மொழிகளில் ஒன்றாகும். இந்த பாடநெறி அதன் அடிப்படைகளை படிப்பதற்காக அர்ப்பணிக்கப்பட்டுள்ளது. பெற்ற திறன்களின் நடைமுறை பயன்பாட்டிற்கு முக்கியத்துவம் கொடுக்கப்படுகிறது.

PHP மொழியானது இணையத்தில் ஒரு குறிப்பிட்ட நடைமுறைச் சிக்கலைத் தீர்ப்பதற்காக உருவாக்கப்பட்டது (இதை பாடத்தின் முதல் விரிவுரையைப் படிப்பதன் மூலம் அறியலாம்). கோட்பாட்டு பகுத்தறிவால் அதிகம் திசைதிருப்பப்படாமல் இருக்க முயற்சிப்போம், மேலும் ஒவ்வொரு விரிவுரையிலும் ஒரு குறிப்பிட்ட சிக்கலைத் தீர்க்க முயற்சிப்போம். பெரும்பாலான எடுத்துக்காட்டுகள் நிஜ வாழ்க்கை அமைப்பிலிருந்து எடுக்கப்பட்டவை: கணினி அறிவியல் வரலாற்றின் மெய்நிகர் அருங்காட்சியகம். பாடநெறியின் முதல் பகுதி தொடரியல் மற்றும் கட்டுப்பாட்டு கட்டமைப்புகளின் அடிப்படைகளைப் படிப்பதற்காக அர்ப்பணிக்கப்பட்டுள்ளது. இதற்குப் பிறகு, கிளையன்ட்-சர்வர் தொழில்நுட்பம் PHP மொழியின் முக்கிய பயன்பாட்டுப் பகுதியாகக் கருதப்படுகிறது. எங்கள் கருத்தில் மிகவும் பயனுள்ள உள்ளமைக்கப்பட்ட செயல்பாடுகளைப் படிப்பதற்கும் அவற்றின் உதவியுடன் நடைமுறை சிக்கல்களைத் தீர்ப்பதற்கும் நாங்கள் செல்கிறோம். PHP மொழியில் உள்ள பொருள் மாதிரியானது பணக்காரர் அல்ல என்றாலும், அதன் அடிப்படை இருப்பு பொருள் தரவு மாதிரிகளை இயற்கையாக விவரிக்க உங்களை அனுமதிக்கிறது. ஒரு அடிப்படை மாதிரியாக, மெய்நிகர் கணினி அறிவியல் அருங்காட்சியகத்தின் ஆவண மாதிரி பரிசீலிக்கப்படும். இதற்குப் பிறகு, பல பயன்பாட்டு அம்சங்கள் பரிசீலிக்கப்படும்: கோப்பு முறைமையுடன் பணிபுரிவது, தரவுத்தளம், சரங்கள், அமர்வுகள், DOM XML - இவை அனைத்தும் மொழியின் நடைமுறை பயன்பாட்டின் முக்கிய பணிகளைக் கருத்தில் கொள்ள அனுமதிக்கும்.

மேலே உள்ள அட்டவணையில் இருந்து பார்க்க முடிந்தால், அப்பாச்சி சர்வர் ஒரு முன்னணி இடத்தைப் பிடித்துள்ளது. வலை சேவையகங்களைப் பற்றி நாம் எப்போதும் சொல்லும் அனைத்தும் அப்பாச்சியை மையமாகக் கொண்டவை. முதல் விரிவுரையில் உங்கள் கணினியில் அதை எவ்வாறு நிறுவுவது என்பது பற்றி நாங்கள் ஏற்கனவே பேசினோம். இப்போது, ​​வாக்குறுதியளித்தபடி, HTTP நெறிமுறைக்கு வருவோம்.

HTTP நெறிமுறை மற்றும் தரவை சேவையகத்திற்கு மாற்றும் முறைகள்

இணையமானது பைனரி தகவல் பரிமாற்றத்தின் இயற்பியல் அம்சங்களைக் கையாளும் இயற்பியல் அடுக்கு முதல் பயனருக்கும் பிணையத்திற்கும் இடையே இடைமுகத்தை வழங்கும் பயன்பாட்டு அடுக்கு வரை பல அடுக்குக் கொள்கையின் அடிப்படையில் கட்டமைக்கப்பட்டுள்ளது.

HTTP (ஹைப்பர்டெக்ஸ்ட் டிரான்ஸ்ஃபர் புரோட்டோகால்) என்பது இணையத்தில் ஹைபர்டெக்ஸ்ட் தகவலைப் பரிமாறிக்கொள்வதற்காக வடிவமைக்கப்பட்ட ஒரு அப்ளிகேஷன் லேயர் புரோட்டோகால் ஆகும்.

சேவையகத்திற்கு அனுப்பப்பட்ட கோரிக்கையின் நோக்கத்தைக் குறிப்பிட HTTP முறைகளின் தொகுப்பை வழங்குகிறது. இந்த முறைகள் குறிப்பு ஒழுக்கத்தை அடிப்படையாகக் கொண்டவை, ஒரு உலகளாவிய வள அடையாளங்காட்டி, யுனிவர்சல் ரிசோர்ஸ் லொக்கேட்டர் (URL) அல்லது யுனிவர்சல் ரிசோர்ஸ் பெயர், முறை பயன்படுத்தப்பட வேண்டிய ஆதாரத்தைக் குறிக்கப் பயன்படுத்தப்படுகிறது. ,URN).

HTTP நெறிமுறையைப் பயன்படுத்தும் போது நெட்வொர்க்கில் உள்ள செய்திகள் இணைய அஞ்சல் செய்தி வடிவம் (RFC-822) அல்லது MIME (மல்டிபர்ப்பஸ் இன்டர்நெட் மெயில் எக்ஸ்சேஞ்ச்) செய்தி வடிவத்தைப் போன்ற வடிவத்தில் அனுப்பப்படும்.

SMTP (மின்னஞ்சல் நெறிமுறை), NNTP (செய்தி பரிமாற்ற நெறிமுறை), FTP (கோப்பு பரிமாற்ற நெறிமுறை), கோபர் மற்றும் WAIS போன்ற ஏற்கனவே உள்ள இணைய நெறிமுறைகளுக்கான அணுகலை வழங்கும் பல்வேறு பயனர் நிரல்களுக்கும் நுழைவாயில் நிரல்களுக்கும் இடையிலான தொடர்புகளுக்கு HTTP பயன்படுத்தப்படுகிறது. HTTP ஆனது, அத்தகைய நுழைவாயில்களை ப்ராக்ஸி சேவையகங்கள் மூலம் தரவை இழப்பின்றி மாற்ற அனுமதிக்கும் வகையில் வடிவமைக்கப்பட்டுள்ளது.

நெறிமுறை கோரிக்கை/பதில் கொள்கையை செயல்படுத்துகிறது. கோரும் நிரல் - கிளையன்ட் பதிலளிக்கும் நிரலுடன் தொடர்பு கொள்ளத் தொடங்குகிறார் - சேவையகம் மற்றும் கோரிக்கையை அனுப்புகிறது:

அணுகல் முறை;

URI முகவரி;

நெறிமுறை பதிப்பு;

அனுப்பப்படும் தரவு வகை, கோரிக்கையை வைக்கும் கிளையன்ட் பற்றிய தகவல் மற்றும் செய்தியின் உள்ளடக்கம் (உடல்) பற்றிய தகவல்களைக் கொண்ட ஒரு செய்தி (MIME போன்ற வடிவத்தில் உள்ளது).

சேவையக பதிலில் பின்வருவன அடங்கும்:

நெறிமுறை பதிப்பு மற்றும் திரும்பக் குறியீடு (வெற்றி அல்லது பிழை) ஆகியவற்றை உள்ளடக்கிய நிலை வரி;

சேவையகத் தகவல், மெட்டா தகவல் (அதாவது, செய்தியின் உள்ளடக்கம் பற்றிய தகவல்) மற்றும் செய்தியின் உள்ளடக்கம் ஆகியவற்றை உள்ளடக்கிய ஒரு செய்தி (MIME போன்ற வடிவத்தில்).

கிளையன்ட் மற்றும் சர்வர் இடையே இணைப்பை யார் திறக்க வேண்டும் மற்றும் மூட வேண்டும் என்பதை நெறிமுறை குறிப்பிடவில்லை. நடைமுறையில், இணைப்பு வழக்கமாக கிளையண்டால் திறக்கப்படுகிறது, மேலும் சேவையகம், பதிலை அனுப்பிய பிறகு, அதன் முடிவைத் தொடங்குகிறது.

சேவையகத்திற்கு கோரிக்கைகள் அனுப்பப்படும் படிவத்தை இன்னும் விரிவாகப் பார்ப்போம்.

வாடிக்கையாளர் கோரிக்கை படிவம்

வாடிக்கையாளர் கோரிக்கையை சேவையகத்திற்கு இரண்டு படிவங்களில் ஒன்றில் அனுப்புகிறார்: முழு அல்லது சுருக்கப்பட்டது. முதல் படிவத்தில் ஒரு கோரிக்கை முழு கோரிக்கை என்றும், இரண்டாவது வடிவத்தில் எளிய கோரிக்கை என்றும் அழைக்கப்படுகிறது.

ஒரு எளிய கோரிக்கையில் அணுகல் முறை மற்றும் ஆதார முகவரி உள்ளது. முறைப்படி, இதை இப்படி எழுதலாம்:

<Простой-Запрос> := <Метод> <символ пробел>
<Запрашиваемый-URI> <символ новой строки>

முறை GET, POST, HEAD, PUT, DELETE மற்றும் பிற இருக்கலாம். அவற்றில் மிகவும் பொதுவானவற்றைப் பற்றி சிறிது நேரம் கழித்து பேசுவோம். கோரப்பட்ட URI என்பது பெரும்பாலும் ஆதாரத்தின் URL ஆகும்.

எளிய கோரிக்கையின் எடுத்துக்காட்டு:

பெறவும் http://phpbook.info/

இங்கே GET என்பது அணுகல் முறை, அதாவது. கோரப்பட்ட ஆதாரத்திற்குப் பயன்படுத்தப்பட வேண்டிய ஒரு முறை, மேலும் http://phpbook.info/ என்பது கோரப்பட்ட ஆதாரத்தின் URL ஆகும்.

ஒரு முழுமையான கோரிக்கையில் நிலைக் கோடு, பல தலைப்புகள் (கோரிக்கை தலைப்பு, பொதுத் தலைப்பு அல்லது உள்ளடக்கத் தலைப்பு) மற்றும் ஒருவேளை கோரிக்கை அமைப்பு ஆகியவை இருக்கும். முறையாக, முழுமையான கோரிக்கையின் பொதுவான வடிவம் பின்வருமாறு எழுதப்படலாம்:

<Полный запрос> := <Строка Состояния>
(<Общий заголовок>|<Заголовок запроса>|
<Заголовок содержания>)
<символ новой строки>
[<содержание запроса>]

இங்கே சதுர அடைப்புக்குறிகள் விருப்ப தலைப்பு கூறுகளைக் குறிக்கின்றன, மேலும் மாற்று விருப்பங்கள் செங்குத்து பட்டியில் பட்டியலிடப்பட்டுள்ளன. உறுப்பு<Строка состояния>கோரிக்கை முறை மற்றும் ஆதார URI (எளிய கோரிக்கை போன்றது) மற்றும் கூடுதலாக, HTTP நெறிமுறையின் பதிப்பு பயன்படுத்தப்படுகிறது. எடுத்துக்காட்டாக, வெளிப்புற நிரலை அழைக்க, பின்வரும் நிலை வரியைப் பயன்படுத்தலாம்:

இடுகை http://phpbook.info/cgi-bin/test HTTP/1.0

இந்த வழக்கில், POST முறை மற்றும் HTTP பதிப்பு 1.0 பயன்படுத்தப்படுகிறது.

கோரிக்கையின் இரண்டு வடிவங்களிலும், கோரப்பட்ட வளத்தின் URI முக்கிய பங்கு வகிக்கிறது. மிகவும் பொதுவான URI ஆனது ஆதார URL வடிவில் பயன்படுத்தப்படுகிறது. சேவையகத்தை அணுகும் போது, ​​நீங்கள் URL இன் முழு வடிவம் மற்றும் எளிமைப்படுத்தப்பட்ட இரண்டையும் பயன்படுத்தலாம்.

முழு படிவத்தில் அணுகல் நெறிமுறையின் வகை, வள சேவையகத்தின் முகவரி மற்றும் சேவையகத்தில் உள்ள வளத்தின் முகவரி (படம் 4.2) ஆகியவை உள்ளன.

சுருக்கமான வடிவத்தில், நெறிமுறை மற்றும் சேவையக முகவரி தவிர்க்கப்பட்டது, இது சேவையக மூலத்திலிருந்து ஆதாரத்தின் இருப்பிடத்தை மட்டுமே குறிக்கிறது. கோரிக்கையை வேறொரு சேவையகத்திற்கு அனுப்ப முடிந்தால் முழு படிவமும் பயன்படுத்தப்படும். ஒரே ஒரு சேவையகத்துடன் வேலை நடந்தால், சுருக்கமான வடிவம் பெரும்பாலும் பயன்படுத்தப்படுகிறது.


அரிசி. 4.2முழு URL படிவம்

முறைகள்

ஏற்கனவே குறிப்பிட்டுள்ளபடி, சேவையகத்திற்கான எந்தவொரு கிளையன்ட் கோரிக்கையும் முறை விவரக்குறிப்புடன் தொடங்க வேண்டும். வாடிக்கையாளரின் கோரிக்கையின் நோக்கத்தை இந்த முறை தெரிவிக்கிறது. HTTP நெறிமுறை சில முறைகளை ஆதரிக்கிறது, ஆனால் உண்மையில் மூன்று மட்டுமே பயன்படுத்தப்படுகிறது: POST, GET மற்றும் HEAD. ஆதார கோரிக்கையில் URI ஆல் அடையாளம் காணப்பட்ட எந்த தரவையும் மீட்டெடுக்க GET முறை உங்களை அனுமதிக்கிறது. URI ஒரு நிரலை சுட்டிக்காட்டினால், நிரலின் செயல்பாட்டின் முடிவு அதன் உரை அல்ல (நிச்சயமாக, உரை அதன் செயல்பாட்டின் விளைவாக இருந்தால்) திரும்பும். கோரிக்கையைச் செயலாக்கத் தேவையான கூடுதல் தகவல் கோரிக்கையிலேயே (நிலை வரிசையில்) கட்டமைக்கப்பட்டுள்ளது. GET முறையைப் பயன்படுத்தும் போது, ​​உண்மையான கோரப்பட்ட தகவல் (உதாரணமாக, ஒரு HTML ஆவணத்தின் உரை) ஆதார உடல் புலத்தில் திருப்பியளிக்கப்படும்.

GET முறையின் மாறுபாடு உள்ளது - நிபந்தனை GET. கோரிக்கை தலைப்பின் if-Modified-Since புலத்தில் உள்ள நிபந்தனை உண்மையாக இருந்தால் மட்டுமே கோரிக்கைக்கு பதிலளிக்க வேண்டும் என்று இந்த முறை சேவையகத்திற்குச் சொல்கிறது. இன்னும் குறிப்பாக, if-Modified-Since இல் குறிப்பிடப்பட்ட தேதியிலிருந்து ஆதாரம் மாற்றப்பட்டிருந்தால், கோரிக்கைக்கு பதிலளிக்கும் வகையில் ஆதார அமைப்பு அனுப்பப்படுகிறது.

HEAD முறை GET முறையைப் போன்றது, ஆனால் ஆதார அமைப்பைத் திருப்பித் தராது மற்றும் நிபந்தனைக்குட்பட்ட இணை இல்லை. ஒரு வளத்தைப் பற்றிய தகவலைப் பெற HEAD முறை பயன்படுத்தப்படுகிறது. இது பயனுள்ளதாக இருக்கும், எடுத்துக்காட்டாக, ஹைபர்டெக்ஸ்ட் இணைப்புகளைச் சோதிப்பதில் சிக்கலைத் தீர்க்கும் போது.

POST முறையானது ஆதாரக் குறிப்புகள், செய்திகள் மற்றும் அஞ்சல் செய்திகள், தரவுத்தளத்தில் சேர்க்க வேண்டிய தரவு போன்ற தகவல்களை சேவையகத்திற்கு மாற்ற வடிவமைக்கப்பட்டுள்ளது, அதாவது. பெரிய அளவு மற்றும் மிக முக்கியமான தகவல்களை அனுப்புவதற்கு. GET மற்றும் HEAD முறைகளைப் போலல்லாமல், POST ஆனது ஆதார அமைப்பை மாற்றுகிறது, இது படிவ புலங்கள் அல்லது பிற உள்ளீட்டு மூலங்களிலிருந்து பெறப்பட்ட தகவல் ஆகும்.

இப்போது வரை, நாம் அடிப்படைக் கருத்துகளை மட்டுமே கோட்பாட்டு மற்றும் அறிந்திருக்கிறோம். இதையெல்லாம் நடைமுறையில் எவ்வாறு பயன்படுத்துவது என்பதை இப்போது கற்றுக் கொள்ள வேண்டிய நேரம் இது. பின்னர் விரிவுரையில் சேவையகத்திற்கு கோரிக்கைகளை எவ்வாறு அனுப்புவது மற்றும் அதன் பதில்களை எவ்வாறு செயலாக்குவது என்பதைப் பார்ப்போம்.

சேவையகத்திற்கு தரவைச் சமர்ப்பிக்க HTML படிவங்களைப் பயன்படுத்துதல்

சேவையகத்திற்கு தரவை எவ்வாறு மாற்றுவது? இந்த நோக்கத்திற்காக, HTML மொழிக்கு ஒரு சிறப்பு கட்டுமானம் உள்ளது - படிவங்கள். படிவங்கள் பயனரிடமிருந்து தகவல்களைப் பெற வடிவமைக்கப்பட்டுள்ளன. எடுத்துக்காட்டாக, தளத்தின் எந்தப் பக்கங்களை அணுக அனுமதிக்கலாம் என்பதைத் தீர்மானிக்க, பயனரின் உள்நுழைவு மற்றும் கடவுச்சொல்லை நீங்கள் அறிந்து கொள்ள வேண்டும். அல்லது அவரைத் தொடர்புகொள்ள பயனரின் தனிப்பட்ட தரவு உங்களுக்குத் தேவை. அத்தகைய தகவலை உள்ளிடுவதற்கு படிவங்கள் துல்லியமாகப் பயன்படுத்தப்படுகின்றன. நீங்கள் அவற்றில் உரையை உள்ளிடலாம் அல்லது பட்டியலிலிருந்து பொருத்தமான விருப்பங்களைத் தேர்ந்தெடுக்கலாம். படிவத்தில் எழுதப்பட்ட தரவு சேவையகத்தில் ஒரு சிறப்பு நிரலுக்கு (எடுத்துக்காட்டாக, ஒரு PHP ஸ்கிரிப்ட்) செயலாக்க அனுப்பப்படுகிறது. பயனர் உள்ளிட்ட தரவைப் பொறுத்து, இந்த நிரல் பல்வேறு வலைப்பக்கங்களை உருவாக்கலாம், தரவுத்தளத்திற்கு வினவல்களை அனுப்பலாம், பல்வேறு பயன்பாடுகளைத் தொடங்கலாம்.

HTML படிவங்களின் தொடரியல் புரிந்து கொள்வோம். பலருக்கு இது தெரிந்திருக்கலாம், ஆனால் முக்கிய குறிப்புகளை நாங்கள் மீண்டும் செய்வோம், ஏனெனில் இது முக்கியமானது.

எனவே, HTML இல் ஒரு படிவத்தை உருவாக்க, FORM குறிச்சொல் பயன்படுத்தப்படுகிறது. அதன் உள்ளே ஒன்று அல்லது அதற்கு மேற்பட்ட INPUT கட்டளைகள் உள்ளன. FORM குறிச்சொல்லின் செயல் மற்றும் முறை பண்புகளைப் பயன்படுத்தி, முறையே படிவத் தரவு மற்றும் கோரிக்கை முறையைச் செயலாக்கும் நிரலின் பெயரைக் குறிப்பிடுகிறீர்கள். INPUT கட்டளையானது கோரப்பட்ட தகவலின் வகை மற்றும் பல்வேறு பண்புகளைக் குறிப்பிடுகிறது. சமர்ப்பிக்கும் வகையின் உள்ளீட்டு பொத்தானை அழுத்திய பின் படிவத் தரவு அனுப்பப்படும். ஒரு கடிதப் பள்ளி நிரலாக்கத்தில் பங்கேற்பாளர்களைப் பதிவு செய்வதற்கான படிவத்தை உருவாக்குவோம்.

உலாவியால் செயலாக்கப்பட்டதும், இந்தக் கோப்பு இப்படி இருக்கும்:


அரிசி. 4.3எடுத்துக்காட்டு html படிவம்

இப்படித்தான் HTML படிவங்கள் உருவாக்கப்பட்டு தோற்றமளிக்கின்றன. அவற்றை எவ்வாறு உருவாக்குவது என்பதை நாம் கற்றுக்கொண்டோம் அல்லது நினைவில் வைத்திருக்கிறோம் என்று வைத்துக்கொள்வோம். நாம் பார்க்க முடியும் என, படிவத்தில் தரவு பரிமாற்ற முறையை நீங்கள் குறிப்பிடலாம். நீங்கள் GET அல்லது POST முறையைக் குறிப்பிட்டால் என்ன நடக்கும், என்ன வித்தியாசம் இருக்கும் என்பதைப் பார்ப்போம்.

GET முறைக்கு

GET முறையைப் பயன்படுத்தி படிவத் தரவைச் சமர்ப்பிக்கும் போது, ​​URL இல் படிவ உள்ளடக்கம் கேள்விக்குறிக்குப் பிறகு பெயர்=மதிப்பு ஜோடிகளாக ஒரு ஆம்பர்சண்ட் &:

நடவடிக்கை?name1=value1&name2=value2&name3=value3

இங்கே செயல் என்பது படிவத்தைச் செயலாக்க வேண்டிய நிரலின் URL ஆகும் (படிவக் குறிச்சொல்லின் செயல் பண்புக்கூறில் குறிப்பிடப்பட்ட நிரல், அல்லது அந்தப் பண்புக்கூறு தவிர்க்கப்பட்டால் தற்போதைய நிரலே). பெயர்1, பெயர்2, பெயர்3 ஆகியவை படிவ உறுப்புகளின் பெயர்களுடன் ஒத்திருக்கும், மேலும் மதிப்பு1, மதிப்பு2, மதிப்பு3 இந்த உறுப்புகளின் மதிப்புகளுக்கு ஒத்திருக்கும். இந்த அளவுரு பெயர்கள் அல்லது மதிப்புகளிலிருந்து = மற்றும் & உட்பட அனைத்து சிறப்பு எழுத்துகளும் தவிர்க்கப்படும். எனவே, வடிவ உறுப்புகளின் பெயர்கள் அல்லது மதிப்புகளில் அடையாளங்காட்டிகளில் இந்த சின்னங்களையும் சிரிலிக் எழுத்துக்களையும் நீங்கள் பயன்படுத்தக்கூடாது.

உள்ளீட்டு புலத்தில் சில சேவை எழுத்தை நீங்கள் உள்ளிட்டால், அது அதன் ஹெக்ஸாடெசிமல் குறியீட்டில் அனுப்பப்படும், எடுத்துக்காட்டாக, $ குறியீடு %24 ஆல் மாற்றப்படும். ரஷ்ய கடிதங்களும் அதே வழியில் அனுப்பப்படுகின்றன.

உரை மற்றும் கடவுச்சொல் உள்ளீட்டு புலங்களுக்கு (இவை வகை=உரை மற்றும் வகை=கடவுச்சொல் பண்புக்கூறு கொண்ட உள்ளீட்டு கூறுகள்), பயனர் உள்ளிடும் மதிப்பு இருக்கும். பயனர் அத்தகைய புலத்தில் எதையும் உள்ளிடவில்லை எனில், பெயர்= உறுப்பு வினவல் சரத்தில் இருக்கும், அங்கு பெயர் இந்த படிவ உறுப்பின் பெயருடன் தொடர்புடையது.

தேர்வுப்பெட்டி மற்றும் ரேடியோ பொத்தான் பொத்தான்களுக்கு, பொத்தானைச் சரிபார்க்கும்போது மதிப்பு VALUE பண்புக்கூறால் தீர்மானிக்கப்படுகிறது. வினவல் சரத்தை உருவாக்கும் போது தேர்வு செய்யப்படாத பொத்தான்கள் முற்றிலும் புறக்கணிக்கப்படும். தேவைப்பட்டால் ஒரே NAME பண்புக்கூறு (மற்றும் வெவ்வேறு மதிப்புகள்) பல தேர்வுப்பெட்டி பொத்தான்களைக் கொண்டிருக்கலாம். வகை ரேடியோ பொத்தானின் பொத்தான்கள் வழங்கப்படும் அனைத்து விருப்பங்களிலும் ஒன்றிற்காக வடிவமைக்கப்பட்டுள்ளது, எனவே ஒரே NAME பண்புக்கூறு மற்றும் வெவ்வேறு VALUE பண்புக்கூறுகள் இருக்க வேண்டும்.

கொள்கையளவில், GET முறையைப் பயன்படுத்தி தரவை அனுப்ப HTML படிவத்தை உருவாக்க வேண்டிய அவசியமில்லை. நீங்கள் விரும்பிய மாறிகள் மற்றும் அவற்றின் மதிப்புகளை URL சரத்தில் சேர்க்கலாம்.

http://phpbook.info/test.php?id=10&user=pit

இது சம்பந்தமாக, GET முறையைப் பயன்படுத்தி தரவு பரிமாற்றம் ஒரு குறிப்பிடத்தக்க குறைபாட்டைக் கொண்டுள்ளது - அளவுரு மதிப்புகளை யாரும் பொய்யாக்க முடியும். எனவே, கடவுச்சொல் பாதுகாக்கப்பட்ட பக்கங்களை அணுக அல்லது நிரல் அல்லது சேவையகத்தின் பாதுகாப்பைப் பாதிக்கும் தகவலை அனுப்ப இந்த முறையைப் பயன்படுத்த நாங்கள் பரிந்துரைக்கவில்லை. கூடுதலாக, பயனர் மாற்ற அனுமதிக்கப்படாத தகவலை மாற்ற GET முறையை நீங்கள் பயன்படுத்தக்கூடாது.

இந்த அனைத்து குறைபாடுகள் இருந்தபோதிலும், ஸ்கிரிப்ட்களை பிழைத்திருத்தம் செய்யும் போது GET முறையைப் பயன்படுத்துவது மிகவும் வசதியானது (பின்னர் நீங்கள் மாறிகளின் மதிப்புகள் மற்றும் பெயர்கள் அனுப்பப்படுவதைக் காணலாம்) மற்றும் பாதுகாப்பைப் பாதிக்காத அளவுருக்களை அனுப்புவதற்கு.

POST முறைக்கு

படிவ உள்ளடக்கம் GET முறையைப் போலவே குறியாக்கம் செய்யப்பட்டுள்ளது (மேலே பார்க்கவும்), ஆனால் URL இல் ஒரு சரத்தைச் சேர்ப்பதற்குப் பதிலாக, கோரிக்கை உள்ளடக்கமானது POST செயல்பாட்டின் ஒரு பகுதியாக தரவுத் தொகுதியாக அனுப்பப்படுகிறது. ACTION பண்புக்கூறு இருந்தால், அங்கு காணப்படும் URL மதிப்பானது இந்தத் தரவுத் தொகுதியை எங்கு அனுப்புவது என்பதைத் தீர்மானிக்கும். இந்த முறை, ஏற்கனவே குறிப்பிட்டுள்ளபடி, பெரிய தரவுத் தொகுதிகளை மாற்றுவதற்கு பரிந்துரைக்கப்படுகிறது.

பயனர் உள்ளிட்டு, POST முறையைப் பயன்படுத்தி சேவையகத்திற்கு அனுப்பப்படும் தகவல், செயல் பண்புக்கூறால் குறிப்பிடப்பட்ட நிரலுக்கு நிலையான உள்ளீட்டில் அல்லது இந்தப் பண்புக்கூறு தவிர்க்கப்பட்டால் தற்போதைய ஸ்கிரிப்ட்டில் வழங்கப்படும். அனுப்பப்பட்ட கோப்பின் நீளம் சூழல் மாறி CONTENT_LENGTH இல் அனுப்பப்பட்டது, மேலும் தரவு வகை CONTENT_TYPE மாறியில் அனுப்பப்படும்.

HTML படிவத்தைப் பயன்படுத்தி POST முறையைப் பயன்படுத்தி மட்டுமே தரவை அனுப்ப முடியும், ஏனெனில் தரவு கோரிக்கையின் உடலில் அனுப்பப்படுகிறது, மேலும் GET இல் உள்ளதைப் போல தலைப்பில் அல்ல. அதன்படி, படிவத்தில் உள்ளிடப்பட்ட மதிப்பை மாற்றுவதன் மூலம் மட்டுமே நீங்கள் அளவுருக்களின் மதிப்பை மாற்ற முடியும். POST ஐப் பயன்படுத்தும் போது, ​​சேவையகத்திற்கு அனுப்பப்பட்ட தரவைப் பயனர் பார்க்கவில்லை.

POST கோரிக்கைகளின் முக்கிய நன்மை GET கோரிக்கைகளுடன் ஒப்பிடும்போது அவற்றின் அதிக பாதுகாப்பு மற்றும் செயல்பாடு ஆகும். எனவே, POST முறையானது முக்கியமான தகவல்களையும், பெரிய அளவிலான தகவல்களையும் அனுப்ப அடிக்கடி பயன்படுத்தப்படுகிறது. இருப்பினும், இந்த பொறிமுறையின் பாதுகாப்பை நீங்கள் முழுமையாக நம்பக்கூடாது, ஏனெனில் POST கோரிக்கைத் தரவையும் போலியாக மாற்றலாம், எடுத்துக்காட்டாக, உங்கள் கணினியில் ஒரு HTML கோப்பை உருவாக்கி தேவையான தரவை நிரப்புவதன் மூலம். கூடுதலாக, அனைத்து வாடிக்கையாளர்களும் POST முறையைப் பயன்படுத்த முடியாது, இது அதன் பயன்பாட்டு நிகழ்வுகளைக் கட்டுப்படுத்துகிறது.

எந்தவொரு முறையிலும் சேவையகத்திற்கு தரவை அனுப்பும்போது, ​​​​பயனர் உள்ளிட்ட தரவு மட்டும் அனுப்பப்படுகிறது, ஆனால் சூழல் மாறிகள் எனப்படும் பல மாறிகள், கிளையண்டை வகைப்படுத்துதல், அதன் செயல்பாட்டு வரலாறு, கோப்பு பாதைகள் போன்றவை. சுற்றுச்சூழல் மாறிகள் சில இங்கே:

REMOTE_ADDR - கோரிக்கையை அனுப்பும் ஹோஸ்டின் (கணினி) ஐபி முகவரி;

REMOTE_HOST - கோரிக்கை அனுப்பப்பட்ட ஹோஸ்ட் பெயர்;

HTTP_REFERER – தற்போதைய ஸ்கிரிப்ட்டுடன் இணைக்கும் பக்கத்தின் முகவரி;

REQUEST_METHOD - கோரிக்கையை அனுப்பும் போது பயன்படுத்தப்பட்ட முறை;

QUERY_STRING - கேள்விக்குறிக்குப் பிறகு URL இல் உள்ள தகவல்;

SCRIPT_NAME – செயல்படுத்தப்பட வேண்டிய நிரலுக்கான மெய்நிகர் பாதை;

HTTP_USER_AGENT – கிளையன்ட் பயன்படுத்தும் உலாவி பற்றிய தகவல்

இதுவரை, கிளையன்ட் கோரிக்கைகள் ஒரு சிறப்பு நிரலைப் பயன்படுத்தி சேவையகத்தில் செயலாக்கப்படுகின்றன என்பதை மட்டுமே நாங்கள் குறிப்பிட்டுள்ளோம். உண்மையில், PHP உட்பட, இந்த நிரலை நாமே எழுதலாம், மேலும் இது பெறப்பட்ட தரவைக் கொண்டு நாம் விரும்பும் அனைத்தையும் செய்யும். இந்த திட்டத்தை எழுதுவதற்கு, இந்த நோக்கத்திற்காக PHP வழங்கும் சில விதிகள் மற்றும் கருவிகளை நீங்கள் நன்கு அறிந்திருக்க வேண்டும்.

PHP ஸ்கிரிப்ட்டில், HTTP வழியாக கிளையன்ட் அனுப்பிய தரவை அணுக பல வழிகள் உள்ளன. PHP 4.1.0 க்கு முன், அத்தகைய தரவுக்கான அணுகல் மாற்றப்பட்ட மாறிகளின் பெயர்களால் மேற்கொள்ளப்பட்டது (தரவு "மாறி பெயர், "=" சின்னம், மாறி மதிப்பு" ஜோடிகளின் வடிவத்தில் மாற்றப்பட்டது என்பதை நினைவில் கொள்க). எனவே, எடுத்துக்காட்டாக, first_name=Nina கடந்துவிட்டால், நினா மதிப்புடன் $first_name மாறி ஸ்கிரிப்ட்டின் உள்ளே தோன்றும். தரவு எந்த முறையில் மாற்றப்பட்டது என்பதை வேறுபடுத்துவது அவசியமானால், $HTTP_POST_VARS மற்றும் $HTTP_GET_VARS ஆகிய துணை வரிசைகள் பயன்படுத்தப்பட்டன, அவற்றின் விசைகள் மாற்றப்பட்ட மாறிகளின் பெயர்கள் மற்றும் மதிப்புகள் முறையே மதிப்புகள். இந்த மாறிகள். எனவே, ஜோடி first_name=Nina GET முறை மூலம் அனுப்பப்பட்டால், $HTTP_GET_VARS["first_name"]="Nina".

ஒரு நிரலில் நேரடியாக அனுப்பப்பட்ட மாறிகளின் பெயர்களைப் பயன்படுத்துவது பாதுகாப்பானது அல்ல. எனவே, HTTP கோரிக்கைகள் வழியாக அனுப்பப்படும் மாறிகளை அணுக, PHP 4.1.0 இல் தொடங்கி, ஒரு சிறப்பு வரிசையைப் பயன்படுத்த முடிவு செய்யப்பட்டது - $_REQUEST. இந்த வரிசையில் POST மற்றும் GET முறைகள் மற்றும் HTTP குக்கீகளைப் பயன்படுத்தி பரிமாற்றப்பட்ட தரவு உள்ளது. இது ஒரு சூப்பர் குளோபல் அசோசியேட்டிவ் வரிசை, அதாவது. அதனுடன் தொடர்புடைய மாறியின் (படிவ உறுப்பு) பெயரை ஒரு விசையாகப் பயன்படுத்தி நிரலில் எங்கு வேண்டுமானாலும் அதன் மதிப்புகளைப் பெறலாம்.

எடுத்துக்காட்டு 4.2.மேலே உள்ள எடுத்துக்காட்டில் உள்ளதைப் போல, ஒரு நிரலாக்க கடிதப் பள்ளிக்கு பங்கேற்பாளர்களைப் பதிவு செய்ய ஒரு படிவத்தை உருவாக்கினோம் என்று வைத்துக்கொள்வோம். இந்த படிவத்தை செயலாக்கும் 1.php கோப்பில், நீங்கள் பின்வருவனவற்றை எழுதலாம்:

$str = "வணக்கம்,
".$_REQUEST["முதல்_பெயர்"]. "
".$_REQUEST["கடைசி_பெயர்"]."!
";
$str .="நீங்கள் ஒரு படிப்பைப் படிக்கத் தேர்ந்தெடுத்துள்ளீர்கள்
".$_REQUEST["குர்ஸ்"];
எதிரொலி $str;
?>

பின்னர், "வாஸ்யா" என்ற பெயரையும், "பெட்ரோவ்" என்ற குடும்பப்பெயரையும் படிவத்தில் உள்ளிட்டு, அனைத்து படிப்புகளிலும் PHP பாடத்தைத் தேர்ந்தெடுத்தால், உலாவித் திரையில் பின்வரும் செய்தியைப் பெறுவோம்:

வணக்கம், வாஸ்யா பெட்ரோவ்!

$_REQUEST வரிசை அறிமுகப்படுத்தப்பட்ட பிறகு, $HTTP_POST_VARS மற்றும் $HTTP_GET_VARS வரிசைகள் முறையே $_POST மற்றும் $_GET என மறுபெயரிடப்பட்டன. அவற்றின் முன்னோடிகளைப் போலல்லாமல், $_POST மற்றும் $_GET வரிசைகள் சூப்பர்-குளோபல் ஆகிவிட்டன, அதாவது. நேரடியாகவும் உள்ளேயும் அணுகக்கூடிய செயல்பாடுகள் மற்றும் முறைகள்.

இந்த வரிசைகளைப் பயன்படுத்துவதற்கு ஒரு உதாரணம் தருவோம். முதல்_பெயர், கடைசி_பெயர், குர்ஸ் (உதாரணமாக, மேலே உள்ள form.html) எனப் பெயரிடப்பட்ட உள்ளீட்டு கூறுகளைக் கொண்ட படிவத்தை செயலாக்க வேண்டும் என்று வைத்துக்கொள்வோம். POST முறையைப் பயன்படுத்தி தரவு மாற்றப்பட்டது, மேலும் பிற முறைகள் மூலம் பரிமாற்றப்பட்ட தரவைச் செயலாக்க நாங்கள் விரும்பவில்லை. இதை பின்வருமாறு செய்யலாம்:

$str = "வணக்கம்,
".$_POST ["முதல்_பெயர்"]."
".$_POST ["கடைசி_பெயர்"] ."!
";
$str .= "நீங்கள் ஒரு பாடத்தை படிக்க தேர்வு செய்துள்ளீர்கள்".
$_POST["குர்ஸ்"];
எதிரொலி $str;
?>

உலாவித் திரையில், “வாஸ்யா”, கடைசி பெயர் “பெட்ரோவ்” என உள்ளிட்டு, எல்லா படிப்புகளிலும் PHP பாடத்தைத் தேர்ந்தெடுத்தால், முந்தைய எடுத்துக்காட்டில் இருந்ததைப் போல ஒரு செய்தியைப் பார்ப்போம்:

வணக்கம், வாஸ்யா பெட்ரோவ்!
நீங்கள் PHP படிப்பைத் தேர்வு செய்துள்ளீர்கள்

PHP 4.1.0 க்கு முந்தைய ஸ்கிரிப்ட்களை செயலாக்கும் திறனைப் பராமரிக்க, பதிவு_குளோபல்ஸ் உத்தரவு அறிமுகப்படுத்தப்பட்டது, மாறிகள் அவற்றின் பெயர்களால் நேரடியாக அணுகலை அனுமதிக்கிறது அல்லது மறுக்கிறது. Register_globals=On parameter ஆனது PHP செட்டிங்ஸ் கோப்பில் இருந்தால், GET மற்றும் POST முறைகளைப் பயன்படுத்தி சர்வருக்கு அனுப்பப்படும் மாறிகள் அவற்றின் பெயர்களால் அணுகப்படலாம் (அதாவது $first_name என எழுதலாம்). register_globals=Off எனில், நீங்கள் $_REQUEST["first_name"] அல்லது $_POST["first_name"], $_GET["first_name"], $HTTP_POST_VARS["first_name"], $HTTP_GET_name["fi]rst_VARS என எழுத வேண்டும். பாதுகாப்புக் கண்ணோட்டத்தில், இந்த உத்தரவை முடக்குவது நல்லது (அதாவது register_globals=Off). Register_globals கட்டளை இயக்கப்பட்டால், மேலே பட்டியலிடப்பட்டுள்ள வரிசைகள் கிளையன்ட் அனுப்பிய தரவையும் கொண்டிருக்கும்.

சில சமயங்களில், கோரிக்கையை அனுப்பப் பயன்படுத்தப்படும் முறை அல்லது கோரிக்கையை அனுப்பிய கணினியின் ஐபி முகவரி போன்ற சூழல் மாறியின் மதிப்பை நீங்கள் அறிந்து கொள்ள வேண்டும். getenv() செயல்பாட்டைப் பயன்படுத்தி இந்தத் தகவலைப் பெறலாம். இது சூழல் மாறியின் மதிப்பை வழங்குகிறது, அதன் பெயர் அளவுருவாக அனுப்பப்படுகிறது.

getenv("REQUEST_METHOD");
// பயன்படுத்திய முறையைத் திருப்பித் தரும்
echo getenv("REMOTE_ADDR");
// பயனரின் ஐபி முகவரியைக் காண்பிக்கும்,
// கோரிக்கையை அனுப்பியவர்
?>

நாங்கள் கூறியது போல், GET முறையைப் பயன்படுத்தினால், ஆதார URL இல் variable_name=value couples வடிவில் வினவல் சரத்தைச் சேர்ப்பதன் மூலம் தரவு மாற்றப்படும். URL இல் உள்ள கேள்விக்குறிக்குப் பிறகு எதையும் கட்டளையைப் பயன்படுத்தி மீட்டெடுக்கலாம்

getenv("QUERY_STRING");

இதற்கு நன்றி, GET முறையைப் பயன்படுத்தி வேறு வடிவத்தில் தரவை மாற்ற முடியும். எடுத்துக்காட்டாக, பிளஸ் அடையாளத்தைப் பயன்படுத்தி பல அளவுருக்களின் மதிப்புகளை மட்டுமே நீங்கள் குறிப்பிட முடியும், மேலும் ஸ்கிரிப்ட்டில் நீங்கள் வினவல் சரத்தை பகுதிகளாக அலசலாம் அல்லது ஒரு அளவுருவின் மதிப்பை நீங்கள் அனுப்பலாம். இந்தச் சந்தர்ப்பத்தில், $_GET வரிசையில் இந்த மதிப்பிற்குச் சமமான விசையுடன் (முழு வினவல் சரமும்) வெற்று உறுப்பு தோன்றும், மேலும் வினவல் சரத்தில் காணப்படும் “+” எழுத்துக்கு பதிலாக “_” அடிக்கோடிடப்படும்.

POST முறை மூலம், படிவங்களைப் பயன்படுத்தி மட்டுமே தரவு அனுப்பப்படுகிறது, மேலும் சேவையகத்திற்கு என்ன தரவு அனுப்பப்படுகிறது என்பதை பயனர் (வாடிக்கையாளர்) பார்க்கவில்லை. அவற்றைப் பார்க்க, ஹேக்கர் நமது படிவத்தை தனது படிவத்துடன் மாற்ற வேண்டும். பின்னர் சர்வர் தவறான படிவத்தை செயலாக்கும் முடிவுகளை தவறான இடத்திற்கு அனுப்பும். இதைத் தவிர்க்க, தரவு அனுப்பப்பட்ட பக்கத்தின் முகவரியை நீங்கள் சரிபார்க்கலாம். getenv() செயல்பாட்டைப் பயன்படுத்தி இதை மீண்டும் செய்யலாம்:

getenv("HTTP_REFERER");

விரிவுரையின் தொடக்கத்தில் உருவாக்கப்பட்ட சிக்கலைத் தீர்ப்பதற்கான நேரம் இது.

PHP ஐப் பயன்படுத்தி கோரிக்கையைச் செயலாக்குவதற்கான எடுத்துக்காட்டு

பணி என்ன என்பதை நினைவுபடுத்தி அதன் உருவாக்கத்தை தெளிவுபடுத்துவோம். நிரலாக்கத்தின் கடிதப் பள்ளியில் பங்கேற்பாளர்களைப் பதிவு செய்ய நீங்கள் ஒரு படிவத்தை எழுத வேண்டும் மற்றும் பதிவுசெய்த பிறகு பங்கேற்பாளருக்கு ஒரு செய்தியை அனுப்பவும். இந்த செய்தியை உலகளாவிய எழுத்து என்று அழைத்தோம், ஆனால் இது முந்தைய விரிவுரையில் நாங்கள் உருவாக்கிய கடிதத்திலிருந்து சற்று வித்தியாசமாக இருக்கும். இங்கே நாங்கள் மின்னஞ்சல் மூலம் எதையும் அனுப்ப மாட்டோம், எனவே ஸ்பேமர்களைப் போல இருக்கக்கூடாது, ஆனால் இந்த செய்தியை உருவாக்கி உலாவி திரையில் காண்பிக்கும். மேலே உள்ள பதிவு படிவத்தின் ஆரம்ப பதிப்பை ஏற்கனவே வழங்கியுள்ளோம். ஒவ்வொரு பதிவாளரும் தாங்கள் கலந்துகொள்ள விரும்பும் பல படிப்புகளைத் தேர்ந்தெடுக்கும் வகையில் அதை மாற்றுவோம், மேலும் பதிவுப் படிவத்தின் ரசீதை நாங்கள் உறுதிப்படுத்த மாட்டோம்.

இங்கே எல்லாம் மிகவும் எளிமையானது மற்றும் தெளிவானது. செக்பாக்ஸ் உறுப்பின் மதிப்புகள் அனுப்பப்படும் விதம்தான் கவனிக்க வேண்டிய ஒரே விஷயம். நாம் உறுப்பு பெயரில் kurs எழுதும் போது, ​​இதன் பொருள் முதலில் தேர்வு செய்யப்பட்ட தேர்வுப்பெட்டி உறுப்பு kurs வரிசையின் முதல் உறுப்புக்கு எழுதப்படும், இரண்டாவது சரிபார்க்கப்பட்ட தேர்வுப்பெட்டி இரண்டாவது வரிசை உறுப்புக்கு எழுதப்படும். நீங்கள் நிச்சயமாக, தேர்வுப்பெட்டி உறுப்புகளுக்கு வெவ்வேறு பெயர்களைக் கொடுக்கலாம், ஆனால் இது பல படிப்புகள் இருந்தால் தரவு செயலாக்கத்தை சிக்கலாக்கும்.

இவை அனைத்தையும் அலசவும் செயலாக்கவும் செய்யும் ஸ்கிரிப்ட் 1.php என அழைக்கப்படுகிறது (படிவம் குறிப்பாக இந்த கோப்பைக் குறிக்கிறது, இது அதன் செயல் பண்புக்கூறில் எழுதப்பட்டுள்ளது). இயல்பாக, GET முறை பரிமாற்றத்திற்குப் பயன்படுத்தப்படுகிறது, ஆனால் நாங்கள் POST ஐக் குறிப்பிட்டோம். பதிவுசெய்யப்பட்ட நபரிடமிருந்து பெறப்பட்ட தகவலின் அடிப்படையில், ஸ்கிரிப்ட் தொடர்புடைய செய்தியை உருவாக்குகிறது. ஒருவர் சில பாடத்திட்டங்களைத் தேர்ந்தெடுத்திருந்தால், அவை நடைபெறும் நேரம் மற்றும் அவற்றைக் கற்பிக்கும் விரிவுரையாளர்கள் பற்றிய செய்தியைப் பெறுவார். ஒரு நபர் எதையும் தேர்ந்தெடுக்கவில்லை என்றால், கடிதப் பள்ளி புரோகிராமர்களின் (ZSH) அடுத்த சந்திப்பு பற்றிய செய்தி காட்டப்படும்.

HTML படிவங்கள் பயனர் உள்ளிடப்பட்ட தரவை ஒரு சேவையகத்திற்கு அனுப்ப அனுமதிக்கின்றன, அங்கு அதை மேலும் செயலாக்க முடியும். படிவ பராமரிப்பு இரண்டு நிலைகளில் செய்யப்படுகிறது. படிவம் முதலில் பயனருக்கு வழங்கப்பட வேண்டும், அவர் அதை அவர்களின் தரவுடன் நிரப்பி, பின்னர் அதை சர்வரில் சமர்ப்பிப்பார். ஒவ்வொரு படிவத்திலும் ஒரு இறங்கும் இணையப் பக்கம் உள்ளது, அது பயனரால் சமர்ப்பிக்கப்பட்ட தரவைச் செயலாக்க ஏற்றப்பட வேண்டும். இது பெரும்பாலும் படிவத்தை உருவாக்கும் அதே ஸ்கிரிப்ட் கோப்பாகும். இந்த வழக்கில், படிவத்தை உருவாக்க ஸ்கிரிப்டை மீண்டும் அழைக்க வேண்டுமா அல்லது பெறப்பட்ட தரவை செயலாக்கத் தொடங்க வேண்டுமா என்பதைத் தீர்மானிக்க, படிவத்தில் உள்ள தரவை PHP குறியீடு சரிபார்க்கிறது.

கவனம்! பாடம் காலாவதியானது. இந்த தலைப்பில் புதிய பாடங்கள் ஆரம்பநிலைக்கான PHP பாடத்தில் உள்ளன.

பெரும்பாலான சந்தர்ப்பங்களில், சர்வரில் படிவங்களை சமர்ப்பிப்பது சில வகையான தரவுத்தள வேலைகளை உள்ளடக்கியது. எடுத்துக்காட்டாக, தரவுத்தள தேடல் செயல்பாடு என்பது பலதரப்பட்ட பயன்பாடுகளுக்கு அவசியமான செயலாகும், அது மன்ற இடுகைகள், பயனர்கள் அல்லது வலைப்பதிவைத் தேடுவது. எந்தவொரு சந்தர்ப்பத்திலும், இந்த செயல்பாடு பயனரின் வாழ்க்கையை எளிதாக்கும். ஏனெனில் இந்த கட்டத்தில், PHP மற்றும் MySQL DBMS இன் தொடர்புகளை நாங்கள் இன்னும் அறிந்திருக்கவில்லை, இந்த கட்டுரையில் படிவ செயலாக்கத்தின் எளிய எடுத்துக்காட்டுகளைப் பார்ப்போம், மேலும் PHP மொழியைப் பயன்படுத்தி தகவல் எவ்வாறு மாற்றப்படுகிறது என்பதைக் காண்பிப்பதே எனக்கு முக்கிய பணியாகும். .

PHP மொழியைப் பயன்படுத்தி தகவல் பரிமாற்றம்

இணையப் பக்கங்களுக்கிடையில் தரவை எவ்வாறு மாற்றுவது என்பது பற்றிய அடிப்படைத் தகவலை இந்தப் பிரிவு வழங்குகிறது. இந்தத் தகவல்களில் சில PHP தொழில்நுட்பத்துடன் தொடர்புடையவை அல்ல, ஆனால் PHP மற்றும் HTML கருவிகளின் தொடர்புகளை விவரிக்கிறது அல்லது HTTP நெறிமுறையைப் பற்றியது.

HTTP நெறிமுறையில் மாநில ஆதரவு இல்லாதது

எப்பொழுதும் மனதில் கொள்ள வேண்டிய எந்தவொரு இணைய தொழில்நுட்பத்தின் மிக முக்கியமான அம்சம் என்னவென்றால், HTTP நெறிமுறையே நிலையற்றது. அதாவது, ஒவ்வொரு HTTP கோரிக்கையும் (பெரும்பாலான சந்தர்ப்பங்களில், HTML பக்கம், .jpg கோப்பு, நடை தாள் போன்ற ஒரு ஆதாரத்தைப் பெறுவதற்கும் வழங்குவதற்குமான கோரிக்கையாகும்.) மற்ற எல்லா கோரிக்கைகளிலிருந்தும் சுயாதீனமானதாக இல்லை. ஏதேனும் - வாடிக்கையாளரின் அடையாளத்தைப் பற்றிய தகவல் மற்றும் கணினியின் நினைவகத்தில் ஒரு தடயத்தையும் விடாது.

நேவிகேஷன் செய்யும் வகையில் தளம் வடிவமைக்கப்பட்டிருந்தாலும், அதாவது. ஒரு பக்கத்திலிருந்து மற்றொரு பக்கத்திற்கு மாறுவது கண்டிப்பாக ஒரு திசையில் நிகழ்கிறது (பக்கம் 1 பக்கம் 2 க்கு மட்டுமே செல்கிறது, இது பக்கம் 3, முதலியன என்று வைத்துக்கொள்வோம்), HTTP நெறிமுறை ஆதரவு கருவிகளில் தகவல் இல்லை மற்றும் ஒரு பயனர் கணக்கில் எடுத்துக்கொள்ளவில்லை பார்க்கும் பக்கம் 2 பக்கம் 1 ஐ ஏற்கனவே பார்வையிட்டிருக்க வேண்டும். பக்கம் 1 இல் உள்ள ஒரு மாறிக்கு நீங்கள் மதிப்பை ஒதுக்க முடியாது மேலும் அது HTML ஐப் பயன்படுத்தி பக்கம் 2 இல் இறக்குமதி செய்யப்படும் என்று எதிர்பார்க்கலாம். ஒரு படிவத்தைக் காட்ட HTML குறியீடு பயன்படுத்தப்படலாம், மேலும் இந்த குறியீடு தகவலை உள்ளிடவும் பயன்படுத்தப்படலாம், ஆனால் உள்ளிடப்பட்ட தகவலை மற்றொரு பக்கம் அல்லது நிரலுக்கு மாற்ற சில கூடுதல் வழிமுறைகள் பயன்படுத்தப்படாவிட்டால், மாறிக்கு ஒதுக்கப்பட்ட மதிப்பு நகர்ந்த பிறகு வெறுமனே மறைந்துவிடும். மற்றொரு பக்கத்திற்கு.

PHP போன்ற படிவ செயலாக்க தொழில்நுட்பங்கள் இந்த சிக்கலை சரியாக தீர்க்க வடிவமைக்கப்பட்டுள்ளன. PHP ஆனது, முந்தைய பக்கத்திலிருந்து அடுத்த பக்கத்திற்கு அனுப்பப்படும் மாறியின் மதிப்பை இடைமறித்து, அந்த மதிப்பை பிற்காலப் பயன்பாட்டிற்குக் கிடைக்கச் செய்ய உங்களை அனுமதிக்கிறது. இது மாறிவிடும், PHP தொழில்நுட்பம் இந்த வகையான தரவு பரிமாற்ற செயல்பாடுகளை மிகச் சிறப்பாகச் செய்யும் திறனை வழங்குகிறது, எனவே இது ஒரு வலைத்தளத்தின் செயல்பாட்டை உறுதி செய்வதோடு தொடர்புடைய பல்வேறு சிக்கல்களைத் தீர்க்க தேவையான கருவிகளை விரைவாகவும் எளிதாகவும் பயன்படுத்த அனுமதிக்கிறது.

HTML படிவங்கள் கொடுக்கப்பட்ட பக்கத்திலிருந்து ஒரு இணையதளத்தில் உள்ள வேறு எந்த ஒரு பக்கத்திற்கும் குறைந்த எண்ணிக்கையிலான மதிப்புகளை அனுப்ப வசதியான வழியை வழங்குகிறது. குக்கீகள் மற்றும் அமர்வுகள் போன்ற பல பக்கக் காட்சிகளில் நிலையைப் பராமரிக்க மற்ற வழிகள் உள்ளன, அவை எதிர்கால கட்டுரையில் விவாதிக்கப்படும். இக்கட்டுரையானது இணையப் பக்கங்களுக்கிடையில் தகவல்களை மாற்றுவதற்கான எளிய வழிகளில் முக்கியமாக கவனம் செலுத்துகிறது, அவை HTTP நெறிமுறையுடன் இணைந்து GET மற்றும் POST முறைகளைப் பயன்படுத்தி மாறும் வகையில் உருவாக்கப்பட்ட பக்கங்களை உருவாக்கி படிவத் தரவைச் செயலாக்குகின்றன.

அளவுருக்களைப் பெறவும்

GET முறையானது வினவல் சரத்தின் ஒரு பகுதியாக முந்தைய பக்கத்திலிருந்து அடுத்த பக்கத்திற்கு அளவுருக்களை அனுப்புகிறது, இது ஒரு சீரான ஆதார அடையாளங்காட்டி URI வடிவத்தில் குறிப்பிடப்படுகிறது. படிவத்தைச் செயலாக்க GET முறையைப் பயன்படுத்தும்போது, ​​படிவத்தின் செயல் பண்புக்கூறால் அடையாளம் காணப்பட்ட URLஐப் பிரித்தலுக்குப் பிறகு ஒரு கேள்விக்குறி வரும், அதைத் தொடர்ந்து குறிப்பிட்ட மாறி பெயர்(கள்) மற்றும் மதிப்பு(கள்) பின்னர் முழு சரமும் செயலாக்க முகவருக்கு அனுப்பப்பட்டது (இந்த வழக்கில், வலை சேவையகம்).

GET முறையைப் பயன்படுத்தும் HTML படிவத்தின் எடுத்துக்காட்டு கீழே உள்ளது (இந்த மார்க்அப்பை உள்ளிட்டு, கோப்பை sportselect.html ஆக சேமிக்கவும்):

PHP அடிப்படைகள்

உங்களுக்கு பிடித்த விளையாட்டை தேர்வு செய்யவும்

பயனர் தேர்வுசெய்து, சமர்ப்பி பொத்தானைக் கிளிக் செய்தவுடன், உலாவி பின்வரும் உறுப்புகளை காண்பிக்கும் வரிசையில் இணைக்கும், உறுப்புகளுக்கு இடையில் இடைவெளி இல்லாமல்:

  • வார்த்தை நடவடிக்கைக்குப் பிறகு மேற்கோள்களில் உள்ள URL (http://localhost/sports.php).
  • பின்வரும் எழுத்துக்கள் GET சரத்தை உருவாக்குகின்றன என்பதைக் குறிக்கும் கேள்விக்குறி (?).
  • பெயர் மாறி, சம அடையாளம் (=) மற்றும் தொடர்புடைய மதிப்பு அளவுரு (மதிப்பு=ஹாக்கி).
  • ஆம்பர்சண்ட் (&) அடுத்து பெயர்=மதிப்பு ஜோடி (ஏதேனும் இருந்தால்).

எனவே உலாவி பின்வரும் URL சரத்தை உருவாக்கும்:
http://localhost/sports.php?sport=Hockey

உலாவி அதன் விளைவாக வரும் URL சரத்தை ஒரு புதிய கோரிக்கையாக அதன் சொந்த முகவரி இடத்தில் திருப்பிவிடும். படிவம் சமர்ப்பிக்கப்பட்ட கீழே உள்ள PHP ஸ்கிரிப்ட் (sports.php), வினவல் சரத்தின் கடைசிப் பகுதியிலிருந்து GET மாறி மதிப்புகளைப் பெற்று, அந்த மாறிகள் மற்றும் மாறி மதிப்புகளை $_GET சூப்பர் குளோபல் அணிவரிசையில் (இருக்க வேண்டும் விரைவில் விவரிக்கப்பட்டது), மேலும் இந்த மதிப்புகளுடன் சில தேவையான செயல்களைச் செய்கிறது; இந்த வழக்கில், செருகல் ஒரு உரை சரத்தில் நிகழ்கிறது.

மேலே உள்ள HTML படிவத்திற்கான PHP ஃபார்ம் ஹேண்ட்லரைக் காட்டும் குறியீடு உதாரணம் கீழே உள்ளது:

பிடித்த விளையாட்டு

உங்களுக்கு பிடித்த விளையாட்டு

முந்தைய பக்கத்தில் பெயர்="ஸ்போர்ட்" பண்புக்கூறுடன் HTML படிவப் புலத்தில் உள்ளிடப்பட்ட மதிப்பு இப்போது $_GET["sport"] என்ற பெயரிடப்பட்ட PHP மாறியாகக் கிடைக்கிறது. இந்த எடுத்துக்காட்டு எவ்வாறு செயல்படுகிறது என்பதை பின்வரும் படம் நிரூபிக்கிறது:

பக்கத்திலிருந்து பக்கத்திற்கு அனுப்பப்பட்ட மதிப்புகளை நீங்கள் எவ்வாறு அணுகலாம் என்பதை இப்போது நாம் விளக்க வேண்டும். இந்த கட்டுரை படிவங்களில் பயன்படுத்தப்படும் மதிப்புகளை அனுப்புவதற்கான இரண்டு முக்கிய முறைகளைப் பற்றி விவாதிக்கிறது - GET மற்றும் POST. ஒவ்வொரு முறையும் அதனுடன் தொடர்புடைய சூப்பர் குளோபல் வரிசையைக் கொண்டுள்ளது. சூப்பர் குளோபல் வரிசைகள் "மாறிகள் மற்றும் மாறிலிகள்" என்ற கட்டுரையில் இன்னும் விரிவாக விவரிக்கப்பட்டுள்ளன. மற்ற அணிகளில் இருந்து சூப்பர் குளோபல் வரிசைகளின் ஒரு தனித்துவமான அம்சம், அடிக்கோடிடுதல் வடிவத்தில் பெயரில் ஒரு முன்னொட்டு இருப்பது.

படிவச் செயலி, $_GET வரிசையை அணுகுவதன் மூலம் GET முறையைப் பயன்படுத்தி சமர்ப்பிக்கப்பட்ட ஒவ்வொரு உறுப்புகளையும் அணுகுகிறது, மேலும் $_POST வரிசையை அணுகுவதன் மூலம் POST முறையைப் பயன்படுத்தி சமர்ப்பிக்கப்படும் ஒவ்வொரு உறுப்புகளையும் அணுகுகிறது. சூப்பர் குளோபல் வரிசையின் எந்த உறுப்பையும் அணுகுவதற்கு பயன்படுத்தப்படும் தொடரியல் அமைப்பு எளிமையானது மற்றும் முற்றிலும் சீரானது:

$_array_name["index_name"]

இங்கே, index_name என்பது பெயர்-மதிப்பு ஜோடியின் பெயர் பகுதி (GET முறைக்கு), அல்லது HTML படிவ புலத்தின் பெயர் (POST முறைக்கு). முந்தைய எடுத்துக்காட்டைப் பின்பற்றி, $_GET["sport"] ஆனது "sport" என்ற படிவத்தின் தேர்ந்தெடுக்கப்பட்ட உறுப்பின் மதிப்பைக் குறிப்பிடுகிறது; இந்த மதிப்பு அசல் கோப்பில் செய்யப்பட்ட GET செயல்பாட்டைப் பயன்படுத்தி அனுப்பப்பட்டது. படிவம் கையாளுபவர் தரவு சமர்ப்பிக்கப்பட்ட முறையுடன் தொடர்புடைய வரிசையைப் பயன்படுத்த வேண்டும். குறிப்பாக, இந்த எடுத்துக்காட்டில், $_POST["sport"] இன் மதிப்பு வரையறுக்கப்படவில்லை, ஏனெனில் அசல் படிவம் POST முறையைப் பயன்படுத்தி எந்தத் தரவையும் சமர்ப்பிக்கவில்லை.

GET படிவ செயலாக்க முறை POST முறையை விட ஒரு குறிப்பிடத்தக்க நன்மையைக் கொண்டுள்ளது - இது உண்மையில் ஒவ்வொரு முறையும் தற்போதைய சூழ்நிலைக்கு ஏற்றவாறு புதிய URL வினவல் சரத்தை உருவாக்க அனுமதிக்கிறது. பயனர்கள் இந்தப் பக்கத்தை புக்மார்க் செய்யலாம். மறுபுறம், POST முறையைப் பயன்படுத்தி படிவ சமர்ப்பிப்புகளின் முடிவுகளை புக்மார்க் செய்ய முடியாது.

GET அளவுருக்களைப் பயன்படுத்தி விரும்பிய செயல்பாட்டை அடைய முடியும் என்பதால் GET முறையைப் பயன்படுத்த வேண்டும் என்று அர்த்தமல்ல. பெரும்பாலான வகையான படிவ செயலாக்கங்களில் காணப்படும் GET முறையின் தீமைகள் மிகவும் குறிப்பிடத்தக்கவை. 1997 இல் வெளியிடப்பட்ட அசல் HTML 4.0 வேலை விவரக்குறிப்பு, இந்த முறையை பரிந்துரைக்கவில்லை. GET முறையின் முக்கிய தீமைகள் கீழே பட்டியலிடப்பட்டுள்ளன:

  • பதிவு சாளரங்களை உருவாக்குவதற்கு GET முறை பொருந்தாது, ஏனெனில் பயனர்பெயர் மற்றும் கடவுச்சொல் திரையில் முழுமையாகத் தெரியும், மேலும் இந்தத் தரவு கிளையன்ட் உலாவியின் நினைவகத்தில் பார்வையிட்ட பக்கத்தைப் பற்றிய தகவலாக சேமிக்கப்படும்.
  • தரவுத் தொகுப்பு உட்பட ஒவ்வொரு GET பரிமாற்றச் செயல்பாடும் இணையச் சேவையகத்தில் உள்நுழைந்திருக்கும்.
  • GET முறையானது சர்வர் சூழல் மாறிக்கு தரவை ஒதுக்குகிறது, எனவே URL இன் நீளம் குறைவாக உள்ளது. GET முறையைப் பயன்படுத்தி அனுப்பும்போது மிக நீண்ட URLகள் எப்படி இருக்கும் என்பதை நீங்கள் பார்த்திருக்கலாம், மேலும் இந்த முறையைப் பயன்படுத்தி 300-வார்த்தை HTML உரையை யாரும் அனுப்ப விரும்புவது சாத்தியமில்லை.

அசல் HTML விவரக்குறிப்பு வினவல் சரத்தின் நீளம் 255 எழுத்துகளுக்கு மிகாமல் இருக்க வேண்டும் என்று கூறியது. நிச்சயமாக, இந்த கட்டுப்பாடு பின்னர் நீக்கப்பட்டது மற்றும் 255 எழுத்து வரம்பை கடைபிடிக்க பரிந்துரை மட்டுமே உள்ளது, ஆனால் நீண்ட வரிகளைப் பயன்படுத்துவது இடையூறுகளை ஏற்படுத்தும்.

POST அளவுருக்கள்

தற்போது, ​​படிவத் தரவைச் சமர்ப்பிப்பதற்கான விருப்பமான முறை POST ஆகும் (குறிப்பாக ஒரு தரவுத்தளத்தில் தகவலை உள்ளிடுவது போன்ற செயல்களைச் செய்வதால் நிரந்தர மாற்றங்கள் ஏற்படும்). படிவம் செயலாக்க முகவருக்குத் திருப்பிவிடப்படும்போது படிவத் தரவுத் தொகுப்பு படிவத்தில் சேர்க்கப்படும் (இந்த வழக்கில், PHP மொழிபெயர்ப்பாளருக்கு). URL சரம் மாற்றப்படும் பல்வேறு தரவுகளை பிரதிபலிக்கும் எந்த புலப்படும் மாற்றங்களுக்கு உட்படாது.

POST முறை GET ஐ விட பாதுகாப்பானது என்று டெவலப்பர்கள் மத்தியில் பரவலான நியாயமற்ற நம்பிக்கை உள்ளது. உண்மையில், எந்த முறையும் மற்றதை விட அதிகமாகவோ அல்லது குறைவாகவோ பாதுகாப்பாக இல்லை. ஒரு பார்வையாளர் POST முறையைப் பயன்படுத்தி அனுப்பப்பட்ட மாறிகள் மற்றும் தரவைப் பார்க்க முடியும், அதே போல் GET முறையைப் பயன்படுத்தவும். ஒரே வித்தியாசம் என்னவென்றால், முதல் வழக்கில், அனுப்பப்பட்ட தரவு முகவரிப் பட்டியில் காணப்படவில்லை. ஆனால் அவை மறைக்கப்பட்டுள்ளன என்று அர்த்தமல்ல. POST முறையைப் பயன்படுத்தி அனுப்பப்படும் தரவை இணையதளப் பயனரால் பார்க்கவும் மாற்றவும் முடியும்.

நிரலாக்கத்தின் முதல் மற்றும் மிக முக்கியமான விதி, குறிப்பாக நெட்வொர்க் நிரலாக்கம், இது:
உள்ளீட்டுத் தரவை ஒருபோதும் நம்ப வேண்டாம்.

ஒரு பார்வையாளர் ஒரு குறிப்பிட்ட பயன்பாட்டிற்கு அனுப்பப்படும் தரவை தீங்கிழைக்கும் வகையில் அல்லது தற்செயலாக மாற்றியிருக்கலாம் என்று நீங்கள் எப்போதும் கருத வேண்டும், எனவே நீங்கள் அந்தத் தரவை கவனமாகச் சரிபார்க்க வேண்டும்.

SSL, TLS அல்லது வேறு ஏதேனும் குறியாக்க முறையைப் பயன்படுத்தி கோரிக்கை பாதுகாக்கப்பட்டால் மட்டுமே அனுப்பப்பட்ட படிவத் தரவு அதிகமாகவோ அல்லது குறைவாகவோ பாதுகாப்பாக இருக்கும். ஆனால் தரவு இன்னும் இறுதி பயனர் அல்லது பார்வையாளருக்கு தெளிவான வடிவத்தில் வந்து சேரும், எனவே அவர் இன்னும் ஒரு வழியில் அல்லது வேறு தரவைப் பார்க்கவும் மாற்றவும் வாய்ப்பு உள்ளது. உண்மை என்னவென்றால், SSL நெறிமுறை நெட்வொர்க்கில் அனுப்பப்படும் தரவை வெறுமனே குறியாக்குகிறது, இது அனுப்புநரிடமிருந்து பெறுநருக்கு அனுப்பும் கட்டத்தில் தரவை தெளிவான உரையில் பார்க்க அனுமதிக்காது. தரவு படிவத்தில் மாற்றங்களைச் செய்யும் பார்வையாளர் திறனைப் பொறுத்தவரை, SSL நெறிமுறை இதைத் தடுக்க எதையும் வழங்காது.

முந்தைய எடுத்துக்காட்டில் தரவு பரிமாற்ற முறையை மாற்ற, நீங்கள் பின்வரும் மாற்றங்களைச் செய்ய வேண்டும்:

...

பல மதிப்புகளுடன் பணிபுரிதல்

படிவத்தில் தேர்வுப்பெட்டிகள் அல்லது ரேடியோ பொத்தான்கள் இருந்தால், ஒரு புதிய சிக்கல் எழுகிறது. எடுத்துக்காட்டாக, ஒரு பயனர் ஒரு படிவத்தில் ஒரே நேரத்தில் இரண்டு மதிப்புகளைத் தேர்ந்தெடுக்கலாம், ஆனால் ஒரு மாறி ஒன்றுக்கு மேற்பட்ட மதிப்பைச் சேமிக்க முடியாது, எனவே ஒரு வரிசையைப் பயன்படுத்த வேண்டும். இந்த நிலைமை கீழே உள்ள எடுத்துக்காட்டில் நிரூபிக்கப்பட்டுள்ளது:

" method="post">
உங்களுக்கு பிடித்த செல்லப்பிராணிகளை தேர்வு செய்யவும்

தேர்ந்தெடுக்கப்பட்ட விலங்குகள்: "; foreach ($animal as $a) ( எதிரொலி " ".htmlentities($a).""; } } ?>

இந்தப் படிவம் பயனர் தங்களுக்குப் பிடித்த செல்லப்பிராணிகளைத் தேர்ந்தெடுக்க அனுமதிக்கிறது. இந்த எடுத்துக்காட்டில், பயனர் ஒரே நேரத்தில் பல தேர்வுப்பெட்டிகளை சரிபார்க்கலாம். அதாவது PHP ஸ்கிரிப்ட்டில் படிவத் தரவைச் செயலாக்கும்போது, ​​ஒரு பெயரைப் பயன்படுத்தி பல மதிப்புகளை அணுகும் திறனை வழங்குவது அவசியம். பல தேர்வுகளை அணிவரிசையாக அனுப்ப, பெயர் பண்புக்கூறில் பெயருக்குப் பிறகு ஒரு ஜோடி சதுர அடைப்புக்குறிகளை () வைத்துள்ளோம். சதுர அடைப்புக்குறிகள் தவிர்க்கப்பட்டு, பயனர் பல தேர்வுப்பெட்டிகளைச் சரிபார்த்தால், அவர்களின் தேர்வு கடைசியாகத் தேர்வுசெய்யப்பட்ட தேர்வுப்பெட்டியால் மேலெழுதப்படும். பெயருக்குப் பிறகு சதுர அடைப்புக்குறிகளை வைப்பதன் மூலம், மதிப்புகள் ஒரு வரிசையாக சேமிக்கப்பட வேண்டும் என்று நாங்கள் சுட்டிக்காட்டினோம்.

ஹேண்ட்லரில், வரிசையானது $அனிமல் மாறியில் சேமிக்கப்பட்டு, வழக்கமான வரிசையைப் போல ஃபோர்ச் லூப்பைப் பயன்படுத்தி கணக்கிடப்படுகிறது.

படிவ சரிபார்ப்பு மற்றும் படிவ மாறிகள் வடிவமைத்தல்

ஒரு பயன்பாடு பயனரிடமிருந்து தரவைப் பெறும்போது, ​​ஒவ்வொரு முறையும் அது சரியானதா எனச் சரிபார்க்க வேண்டும். பயனர் உள்ளிட்ட தரவை நீங்கள் சரிபார்க்கவில்லை என்றால், பாதுகாப்பு அபாயங்கள் உட்பட பல சிக்கல்களைப் பெறலாம். பின்னணி சரிபார்ப்பைச் செய்வது போல் தோன்றுவது போல் கடினம் அல்ல.

பயனர்கள் JavaScript ஐப் பயன்படுத்தி கிளையன்ட் பக்கத்தில் சரிபார்ப்பது மிகவும் வசதியானது, ஆனால் இந்தச் சரிபார்ப்பு பயன்படுத்தப்பட்டதா என்பதைப் பொருட்படுத்தாமல், சர்வர் பக்க சரிபார்ப்பு செய்யப்பட வேண்டும்.

HTML படிவங்களை உருவாக்கும் போது கருத்தில் கொள்ள வேண்டிய மற்றொரு விஷயம் என்னவென்றால், படிவம் முன் நிரப்பப்பட்ட உள்ளீட்டைக் காட்ட வேண்டும் என்றால், மதிப்பு பண்புக்கூறு அமைக்கப்பட வேண்டும். இந்த புள்ளி இரண்டு வகையான படிவங்களில் குறிப்பாக உண்மையாக இருக்கிறது - தரவுத்தளத்திலிருந்து பெறப்பட்ட தரவைத் திருத்தப் பயன்படுகிறது, மேலும் ஒரு முறைக்கு மேல் தரவைச் சமர்ப்பிக்கும் வகையில் வடிவமைக்கப்பட்டவை. ஏற்கனவே பூர்த்தி செய்யப்பட்ட தரவுகளில் பிழைகள் கண்டறியப்பட்ட பிறகு படிவம் மீண்டும் காட்டப்பட வேண்டிய சூழ்நிலைகளில் பிந்தைய வழக்கு மிகவும் பொதுவானது. பயனர் சரியான மின்னஞ்சல் முகவரி அல்லது பிற தேவையான தரவை வழங்கும் வரை செயலாக்கத்திற்கான தரவை ஏற்காத பதிவு படிவத்தை உதாரணமாகக் கொள்ளலாம்.

கீழேயுள்ள எடுத்துக்காட்டு, சர்வர் பக்க சரிபார்ப்பு மற்றும் அதே படிவப் பக்கத்தில் செயலாக்கம் உட்பட, படிவத்தை எவ்வாறு செயலாக்குவது என்பதைக் காட்டுகிறது:

PHP அடிப்படைகள்

" method="post">
தொடர்பு தகவல் "வகுப்பு="">
"வகுப்பு="">

இந்த எடுத்துக்காட்டு filter_var() செயல்பாட்டைப் பயன்படுத்துகிறது, இது வடிகட்டியைப் பயன்படுத்தி ஒரு மாறியைச் சோதிக்கிறது மற்றும் இரண்டு அளவுருக்களை எடுக்கும் - ஒரு மூல சரம் மற்றும் வடிகட்டியின் வகையைக் குறிக்கும் நிலையானது. மின்னஞ்சல் முகவரிகளை (FILTER_VALIDATE_EMAIL) சரிபார்ப்பதுடன், இந்தச் செயல்பாடு பின்வரும் மாறிலிகளை ஆதரிக்கிறது: FILTER_VALIDATE_URL - URL இன் சரியான தன்மைக்கான மதிப்பைச் சரிபார்க்கிறது (எடுத்துக்காட்டாக), FILTER_VALIDATE_IP - IP முகவரிகளின் சரியான மதிப்பைச் சரிபார்க்கிறது, FILTER_VALIDATE_REGEXP - மதிப்பைச் சரிபார்க்கிறது. வழக்கமான வெளிப்பாடு தொடரியல் மற்றும் பல மாறிலிகளின் சரியான தன்மைக்காக, அவை is_bool(), is_float(), is_int() போன்ற செயல்பாடுகளுக்கு மாற்றாக இருக்கும்.

PHP ஐப் பயன்படுத்தி அடிப்படை இணைய பயன்பாடுகளை எவ்வாறு உருவாக்குவது என்பதை இதுவும் பின்வரும் பிரிவுகளும் சுருக்கமாக விவரிக்கும். உங்கள் விண்ணப்பம் பயனருடன் தொடர்பு கொள்ளவும், அவர் செய்த செயல்கள் அல்லது அவர் உள்ளிட்ட அளவுருக்களைப் பொறுத்து வடிவமைக்கவும் பிரிவில் விவாதிக்கப்பட்டவை போதுமானதாக இல்லை. எதை காணவில்லை? பயனர் தரவு உள்ளீட்டை எவ்வாறு ஒழுங்கமைப்பது மற்றும் இந்தத் தரவை சேவையகத்திற்கு மாற்றுவது எப்படி என்பது குறித்து போதுமான அறிவு இல்லை. சரி, சர்வரில் பெறப்பட்ட தகவல்களை நிரல் ரீதியாக எவ்வாறு செயலாக்குவது என்பது பற்றிய அடிப்படை அறிவு உங்களுக்கு ஏற்கனவே இருக்க வேண்டும்.

HTTP கோரிக்கை முறைகள் மற்றும் அவற்றின் அளவுருக்கள்

எந்தவொரு டைனமிக் வலைப் பயன்பாடும் பயனருக்கு அவர் உள்ளிட்ட அளவுருக்கள் அல்லது கிளையன்ட் பக்கத்தில் செய்யப்படும் செயல்களுக்கு ஏற்ப பதிலை உருவாக்குகிறது. சேவையகத்தைத் தொடர்புகொள்வது பெரும்பாலும் இரண்டு வகையான கோரிக்கைகளுக்கு வரும்: GET முறை அல்லது POST முறையைப் பயன்படுத்துதல். இந்த இரண்டு வகையான கோரிக்கைகளுக்கு இடையிலான வேறுபாடுகளைப் பற்றி சில வார்த்தைகள்.

பெறுவதற்கான முறை:

    அளவுருக்கள் HTTP கோரிக்கை தலைப்பில் அனுப்பப்படுகின்றன, எனவே அவை கட்டளை வரியில் தெரியும், மேலும் அத்தகைய கோரிக்கையை புக்மார்க்குகளாக சேமிக்க முடியும். தலைப்பின் மொத்த நீளம் குறைவாக இருப்பதால், GET ஐப் பயன்படுத்தி அனுப்பப்பட்ட அளவுருக்களின் எண்ணிக்கையும் நீளமும் குறைவாகவே இருக்கும்.

    ஒரே மாதிரியான பல GET கோரிக்கைகள் ஒரு வரிசையில் செயல்படுத்தப்படும் முடிவுகள் ஒரே மாதிரியாக இருக்க வேண்டும் என்று நம்பப்படுகிறது.

இடுகை முறை:

    HTTP கோரிக்கையின் உடலில் கோரிக்கை அளவுருக்கள் அனுப்பப்படுகின்றன, எனவே அவை கட்டளை வரியில் இல்லை. அளவுருக்களின் எண்ணிக்கை மற்றும் அளவு வரம்பற்றது.

    பல ஒரே மாதிரியான POST கோரிக்கைகளின் முடிவுகள் வெவ்வேறு மதிப்புகளை வழங்கக்கூடும் என்று நம்பப்படுகிறது, ஏனெனில் அவை இலக்கு பொருளின் பண்புகளை மாற்றக்கூடும்.

இலக்கு வளத்தின் தரவு கட்டமைப்புகளில் மாற்றங்களைச் செய்ய வேண்டிய அவசியம் இல்லாதபோது, ​​அளவுருக்களுக்கு ஏற்ப தகவல் வளத்தின் உள்ளடக்கங்களை மீட்டெடுக்க GET முறை பயன்படுத்தப்பட வேண்டும், மேலும் கோரிக்கையை (URL) புக்மார்க்குகளில் சேமிப்பது அர்த்தமுள்ளதாக இருக்கும். POST முறையைப் பயன்படுத்தி இதே போன்ற கோரிக்கைகளை விட GET முறை வேகமாக இருக்கலாம்.

URL இலிருந்து சேவையகத்திற்கு அனுப்பப்பட்ட அளவுருக்களை மறைக்க வேண்டியிருக்கும் போது POST முறையைப் பயன்படுத்த வேண்டும். இலக்கு வளத்தின் உள்ளடக்கங்களில் மாற்றங்களுக்கான கோரிக்கைகளிலும் இந்த முறை பயன்படுத்தப்பட வேண்டும், இந்த மாற்றங்களின் விளக்கத்தை அளவுருக்களில் (கோரிக்கையின் உடலில்) அனுப்ப வேண்டும்.

ஆதாரத்திற்கான பாதை?parameter1=value1¶meter2=value2&…

அளவுருக்களை நிரப்புவதற்கான சிறப்பு HTML படிவம் உங்களிடம் இல்லையென்றால், உலாவி கட்டளை வரியில் நேரடியாக சோதனை அளவுருக்களை அனுப்புவதன் மூலம் உங்கள் PHP பயன்பாட்டின் செயல்பாட்டை பிழைத்திருத்தம் செய்யலாம், எடுத்துக்காட்டாக:

Http://site/php-samples/sql.php?sql=d_staff இலிருந்து * தேர்ந்தெடுக்கவும்

சேவையக பக்கத்தில் கோரிக்கை அளவுருக்களை அணுக, நீங்கள் உலகளாவிய வரிசைகளைப் பயன்படுத்த வேண்டும் $_GETமற்றும் $_POSTமுறையே. உங்கள் பயன்பாடு எந்த முறையில் அணுகப்படுகிறது என்பதில் அக்கறை இல்லை என்றால், நீங்கள் ஒரு வரிசையைப் பயன்படுத்த வேண்டும் $_REQUEST, இது $_GET மற்றும் $_POST வரிசைகளின் தரவை ஒருங்கிணைக்கிறது, எடுத்துக்காட்டாக, இது போன்றது:

$sql = isset($_REQUEST["sql"]) ? $_REQUEST["sql"] : "";

இந்த எடுத்துக்காட்டில், "sql" அளவுரு அனுப்பப்பட்டதா என்பதை நிரல் தீர்மானிக்கிறது: ஆம் எனில், அது அதன் மதிப்பை தொடர்புடைய மாறிக்கு ஒதுக்குகிறது, இல்லையெனில், அது வெற்று மதிப்பை ஒதுக்குகிறது.

HTML படிவம் வழியாக HTTP கோரிக்கை அளவுருக்களை வரையறுத்தல்

நிச்சயமாக, உலாவி கட்டளை வரியில் நேரடியாக அளவுருக்களை கைமுறையாக வரையறுப்பது மிகவும் வசதியானது அல்ல. இணையப் பயன்பாடுகள் ஒன்றோடொன்று தொடர்பு கொள்ளும்போது HTTP கோரிக்கைகளை நிரல்ரீதியாக செயல்படுத்த இந்த முறை பொருத்தமானது. கிளையன்ட் பக்கத்தில் ஆரம்ப தரவு சரிபார்ப்பை உள்ளிட்டு செயல்படுத்த, நீங்கள் HTML படிவங்கள் மற்றும் . உரை அளவுரு (மதிப்பு) உள்ளிடப்படும் எளிய படிவத்தின் எடுத்துக்காட்டு கீழே உள்ளது, இது POST முறையின் அளவுருவாக சேவையகத்திற்கு அனுப்பப்படுகிறது.

முறை = "இடுகை" நடவடிக்கை =’sql.php’ > SQL:

படிவ உறுப்பின் முறை பண்புக்கூறு, சேவையகத்திற்கு (பெறுதல் அல்லது இடுகையிடுதல்) தரவை அனுப்பும் முறையைத் தீர்மானிக்கும் முறையைக் குறிப்பிடுகிறது. செயல் பண்புக்கூறு குறிப்பிடுகிறது php கோப்பு, இது கோரிக்கையை செயல்படுத்தும். கையாளுபவர் தற்போதைய கோப்பாக இருக்க வேண்டும் என்றால், செயல் பண்புக்கூறு சேர்க்கப்பட வேண்டியதில்லை. HTTP கோரிக்கை அளவுருவாக அனுப்பப்பட வேண்டிய அனைத்து உறுப்புகளுக்கும், பெயர் பண்புக்கூறுக்கான தனிப்பட்ட மதிப்பை நீங்கள் வரையறுக்க வேண்டும். இது பண்பு மதிப்பு பெயர்இருக்கும் குறியீட்டு$_GET, $_POST அல்லது $_REQUEST வரிசைகளில் (மேலே உள்ள உதாரணத்தைப் பார்க்கவும்). ஒரு பொத்தானை அழுத்தவும் சமர்ப்பிக்கஉள்ளிடப்பட்ட அனைத்து மதிப்புகளுடன் படிவத்தை சேவையகத்திற்கு அனுப்புகிறது.