اینترنت پنجره ها اندروید

ارسال و دریافت درخواست با کلمات ساده. نحوه ارسال پست به درخواست مرورگر: روش پست متغیر پست در PHP استفاده کنید

در این درس، ما در نظر داریم انتقال داده ها بین فرم ها و صفحات را دریافت کنیم. این روش ها پست و دریافت می شود. ما در مورد یکدیگر به طور جداگانه و جزئیات بیشتر صحبت خواهیم کرد. به طور کلی، برای ارتباط بین فرم ها ضروری است. به عنوان مثال، ما برخی از زمینه ها را در صفحه پر می کنیم و ما باید آنها را به یک صفحه دیگر انتقال دهیم.

روش دریافت در پی اچ پی

برای شروع، ما روش دریافت را تجزیه و تحلیل خواهیم کرد. این زمانی است که تمام متغیرها و مقادیر آنها به طور مستقیم از طریق آدرس منتقل می شود. حالا همه چیز را در مثال خواهید دید و حتی درک می کنید که اکثر سایت ها و انجمن ها کار می کنند.
به عنوان مثال، ما یک صفحه HTML از این نوع داریم:

صفحه با نمونه ای از متغیرهای انتقال با استفاده از دریافت ارتباط دادن

لینک را ببینید؟ این پیچیده است و شامل چندین بخش است. بیایید همه چیز را در اطراف قفسه ها تعجب کنیم:
https: // سایت - آدرس دامنه یا به عنوان آن نیز نامیده می شود، میزبان.
index.php - صفحه پی اچ پی که درخواست را پردازش می کند.
? - نماد جداسازی بین آدرس و بلوک با متغیرها.
بعد متغیرها هستند و مقادیر آنها که توسط نماد جدا می شوند. & .
نام \u003d سرگئی - نام متغیر و ارزش سرگئی آن.
سن \u003d 22 - همان، سن متغیر، ارزش 22.

همه جدا شده اند، اکنون بیایید ببینیم که چگونه در پی اچ پی پردازش می شود، با استفاده از روش GET.
صفحه index.php، همانطور که به یاد داشته باشید، ما به او منتقل شدیم:

برای شروع، مشاوره: همیشه متغیرها را در صحت بررسی کنید: در Void، برای انطباق با مقادیر معتبر و غیره. از آنجا که همه چیز از طریق نوار آدرس منتقل می شود، داده ها را می توان به راحتی جایگزین و آسیب رساندن به سایت. در حال حاضر با توجه به کد خود: ما، با کمک، متغیرهای نام و سن را به خلبان بررسی کردیم و اگر آنها خالی نیستند، آنها را خاموش کرده و اگر خالی باشند، به سادگی آن را گزارش کردند.
همه چیز ساده است، موافقم؟ به عنوان مثال، شما می توانید یک صفحه HTML ایجاد کنید و لینک ها را از طریق متغیرها در index.php به index.php ایجاد کنید و این صفحه را بسته به مقدار حاصل از آن نشان دهید. خوب، ما بعدا در مورد آن صحبت خواهیم کرد، در مقاله در مورد ایجاد یک وب سایت در پی اچ پی از ابتدا صحبت خواهیم کرد. برای از دست دادن هر چیزی، من به شما توصیه می کنم که به RSS مشترک شوید.

روش PHP PHP

برای نشان دادن کار این روش، ما نیاز به کمی بیشتر از یک خط ساده با آدرس :) لازم است برای ایجاد یک صفحه HTML با فرم پر شدن، اما هیچ چیز، من یک مثال آماده برای شما را ارائه می دهم :

صفحه با نمونه ای از متغیرهای انتقال با استفاده از پست

فیلدهای انتقال اطلاعات را پر کنید:

نام خود را مشخص کنید:

سن خود را مشخص کنید:

بنابراین، ما یک صفحه HTML را با یک فرم ساده ایجاد کرده ایم. به یاد داشته باشید، روش پست تنها می تواند در فرم استفاده شود.
پارامتر اول فرم "روش" است، این روش را که ما برای انتقال استفاده می کنیم تعریف می کنیم. همانطور که می توانید حدس بزنید، آن را دریافت یا ارسال کنید. در این مورد، اگر دریافت شود نصب شده است، سپس تمام نام های زمینه (به شکل نام های متغیر)، و همچنین مقادیر آنها توسط مرجع منتقل می شود، همانطور که در بخش در مورد روش دریافت. اگر پست تعیین شده باشد، تمام اسامی متغیرها و مقادیر به عنوان یک درخواست مرورگر به یک سرور وب ارسال می شود. به عبارت دیگر، آنها در نوار آدرس قابل مشاهده نیستند. در بسیاری از موارد، این بسیار مفید است. همچنین پست ایمن تر است، همچنین روشن است، زیرا متغیرهایی با مقادیر آنها دیگر آسان برای ویرایش نیست، هرچند ممکن است.

پارامتر دوم فرم "عمل" است. این مسیر و نام فایل اسکریپت است که ما داده ها را انتقال می دهیم. در مورد ما، این index.php است. این مسیر را می توان منتقل کرد و به طور کامل، یعنی: action \u003d "https://my_site.ru/index.php". اگر مقدار پارامتر "عمل" را مشخص نکنید، تمام اطلاعات به اسکریپت اصلی منتقل می شود، یعنی صفحه فهرست index.php سایت شما، کاملا منطقی است.

حالا ما اطلاعات را از فرم ما دریافت می کنیم. هنگامی که ما در index.php گذشتیم، به این معنی است که کد کد این صفحه خواهد بود:

"؛ echo" نام - "؛ echo $ _post [" user_name "]؛ echo"
سن - "؛ Echo $ _POST [" سن "]؛ ECHO" سال ها "؛) دیگر (ECHO" متغیرها به دست نیاورده اند. همه زمانها را بررسی کنید. "؛؛

فراموش نکنید که برای مقادیر خالی و مقادیر مجاز را بررسی کنید. بعد، شما باید روشن کنید که چرا متغیرهای ما نام کاربری و سن نامیده می شوند؟ و شما به زمینه های شکل نگاه می کنید که ما در بالا ایجاد کردیم. آنجا را ببین نام ورودی \u003d "user_name" type \u003d "text" ؟ در اینجا نام پارامتر نام است و نام متغیر را که ما با این فیلد دریافت می کنیم تنظیم می کنیم. همان سن. امیدوارم روشن باشد خوب، کسب متغیر و مقادیر آن از طریق پست تقریبا هیچ متفاوت از دریافت، که ما در بالا ذکر شده است.

خوب، درس تبدیل به بزرگ شد، اما یکی از مفید ترین، زیرا انتقال متغیرها بین فرم ها و صفحات دقیقا تعاملی است که ما از PHP استفاده می کنیم.

شما می توانید متوجه شوید که آدرس ها را می توان در اکثر سایت ها مورد توجه قرار داد:

http: //syt/index.php؟ وبلاگ \u003d 2

در اینجا، حتی دانستن پی اچ پی، شما می توانید حدس بزنید که ما به پرونده تجدید نظر می کنیم index.php اما آنچه پس از سوال این سوال می رود، تعداد کمی از مردم می دانند. همه چیز کاملا ساده است: وبلاگ \u003d 2 این اعلام متغیر جهانی "$ _GET [" وبلاگ "]" با مقدار "2" است. بنابراین، یک متغیر را به اسکریپت انتقال می دهم که مسئول خروجی از پایگاه داده است. بیایید یک اسکریپت کوچک بنویسیم که در آن شما فقط به وضوح خواهید دید:

اگر (isset ($ _ get [blog "])) (
echo $ _GET ["وبلاگ"]؛
}
?>

ما از اپراتور IF () وضعیت () به عنوان یک شرط ارزش این خط استفاده می کنیم:

isset ($ _ دریافت ["وبلاگ"])

isset () به شما امکان می دهد تا متوجه شوید که آیا یک متغیر وجود دارد که در براکت ها ذکر شده است، یعنی شرایطی که من در کد به نظر می رسد به نظر می رسد مانند این است: اگر یک متغیر $ _GET ["وبلاگ" وجود دارد) سپس محتویات را خروجی کنید از این متغیر بر روی صفحه نمایش. این چیزی است که اتفاق افتاد:

من فکر می کنم متغیر جهانی به وضوح ایجاد شده است. $ _get. با شناسه ای که ما در نوار آدرس اعلام کردیم ( در این مورد، با شناسه "وبلاگ")

حالا می خواهم یک لحظه روشن کنم فرض کنید ما باید دو متغیر را اعلام کنیم، چگونه این کار را انجام دهیم؟ اولین متغیر پس از سوال این سوال اعلام شده است "؟" متغیر دوم پس از چنین نشانه ای اعلام می شود "&" ( صادقانه بگویم من نمی دانم چه نشانه ای است )، در اینجا نمونه ای از سه متغیر است:

http: //syt/index.php؟ a \u003d 1 & b \u003d 2 و c \u003d 3

در اینجا کد خروجی است:

اگر (isset ($ _ get ["a"]) و isset ($ _ get ["b"]) و isset ($ _ get ["c"])) (
echo $ _GET ["a"]. "
";
echo $ _GET ["b"]. "
";
echo $ _GET ["c"]. "
";
}
?>

این شرایط به نظر می رسد این است:

اگر یک متغیر جهانی $ _GET ["a"] و متغیر جهانی $ _GET ["b"] و متغیر جهانی $ _GET ["c"] و سپس آنها را بر روی صفحه نمایش خروجی، در اینجا نتیجه است:

تشکیل می دهد

قبل از رفتن به پست. درخواست ها، شما نیاز به جداسازی فرم دارید؟ چرا شما نیاز دارید؟ از آنجا که متغیر جهانی $ _POST ["] از طریق فرم ها ایجاد می شود. فرم چیست؟ این زمینه ها برای ورود به هر اطلاعاتی از کاربر هستند. زمینه ها در یک خط هستند، زمینه های بزرگ، دکمه های رادیویی وجود دارد، جعبه ها را چک کنید. ما همه چیز را به ترتیب تجزیه و تحلیل خواهیم کرد ...

فرم یک برچسب است:


عناصر فرم

فرم دارای ویژگی ها، لیست رایج ترین موارد است:

بیایید یک فرم ایجاد کنیم:


عناصر فرم

فایل را به عنوان یک فایل دستیار تنظیم کردم test.php از آنجا که در آن است که من نمونه هایی را برای شما می نویسم. من روش پست را مطرح کردم چون این روش ها در 99.9٪ موارد استفاده می شود. من همچنین نام فرم ما را تعیین کردم

در حال حاضر به جهان از عناصر تشکیل می شود. اول از همه، شما باید درک کنید که تقریبا تمام عناصر برچسب هستند تفاوت فقط در ویژگی نوع این برچسب ها. اجازه دهید فرم هایی را که استفاده کرده اید لیست کنید:

من مطمئن هستم که شما چنین زمینه هایی را ندیده اید، بنابراین در اینجا به عنوان آن را می گوید: "بدون نظر"

اکنون یک پرسشنامه آموزشی کوچک را مطرح کنید که ما بیشتر کار خواهیم کرد. وظیفه ما این است که فرم کوچکی را ایجاد کنیم که به ما نام پر کردن، طبقه، از چه کشور آن، رنگ مورد علاقه و متن متن که کاربر می تواند چیزی را در مورد خود اضافه کند، به ما می گوید. این چیزی است که من انجام دادم:

نام خانوادگی شما نام خانوادگی Patronymic:

جنسیت شما:
M.
ج

از کدام کشور هستی



رنگ مورد علاقه (a):

سیاه:
قرمز:
سفید:
دیگر:

در مورد خودم:




لطفا توجه داشته باشید که تقریبا هر برچسب دارای یک ویژگی است مقداراو چیست؟ این اطلاعات را که می خواهید به یک صفحه دیگر منتقل می کنید را ثبت کنید. امیدوارم روشن باشد

حالا اگر این کد را در مرورگر اجرا کنید، ما موارد زیر را خواهیم دید:

فرم من از یک ویژگی استفاده کردم عمل. با معنی test.php این به این معنی است که چگونه قبلا گفته ام که داده های فرم به فایل test.php ارسال می شود.

درخواست ارسال

در حال حاضر کد پی اچ پی را بنویسید که به ما اجازه می دهد اطلاعاتی را که وارد کرده اید مشاهده کنید. اطلاعات ذخیره شده کجاست؟ در مورد درخواست دریافت، داده های ما در متغیر جهانی $ _GET قرار داشت]. با درخواست پست، داده ها در متغیر جهانی $ _post ["] دروغ می گویند. در براکت های مربعی، لازم است تجویز شود، همانطور که در مورد متغیر جهانی، یک شناسه است. سوال این است که این شناسه چیست؟ به همین دلیل نام و نام خانوادگی در عناصر فرم مورد نیاز است! این اسامی است که ما را با کلید در آرایه جهانی پست به ما خدمت می کنند. خوب، ما توضیحات اسکریپت را شروع کنیم:

اگر (isset ($ _ post ["submit"]) (
echo "نام کامل:" $ _ پست ["fio"]. "
";
اکو "جنسیت:" $ _ پست ["جنسیت"]. "
";
اکو "کشور محل اقامت:" $ _ پست ["شهر"]. "
";

echo "رنگ مورد علاقه (a):
";
echo $ _POST ["color_1"]. "
";
echo $ _post ["color_2"]. "
";
echo $ _post ["color_3"]. "
";
echo $ _POST ["color_4"]. "
";
اکو "درباره من:" $ _ پست ["درباره"]. "


";
}
?>

اگر شرایط نوشته شده نوشته شده است: اگر یک متغیر جهانی $ _post ["submit" وجود داشته باشد، سپس داده ها را روی صفحه نمایش دهید. این متغیر جهانی ایجاد می شود اگر ما بر روی دکمه ارسال کلیک کنیم، که این مثال نیاز به ویژگی نام در دکمه دارد. شما می توانید کاملا تعجب کنید که چرا نام دکمه دکمه مورد نیاز نیست؟ همه چیز کاملا ساده است. معمولا برنامه نویس فشار دکمه را پیگیری نمی کند و داده های ارسال شده را دنبال می کند. برای مثال، برای مثال، فرم تماس، شما باید بدون فشار دادن دکمه، اما صحت ورودی اطلاعات را پیگیری کنید، و یاد بگیرید که آیا این اطلاعات به طور کلی معرفی شده است. به عنوان مثال، ما داده های ارسال شده را بررسی نکردیم و به سادگی سفر کردیم تا دکمه را فشار دهیم، برای ساده کردن مثال ... این چیزی است که ما انجام دادیم:

نتیجه

خوب، برای امروز ما دو روش انتقال داده را بین اسکریپت ها، و Gallopam با فرم ها آشنا کرده ایم. من واقعا امیدوارم که این اطلاعات حداقل در جایی مفید باشد. اگر سوالی دارید یا افکار دارید، نظرات خود را بنویسید. موفق باشید به شما، امروز من همه چیز را دارم!

P.ss: آیا می خواهید بازی های کامپیوتری حتی واقعی تر شده اند؟ DirectX 11 برای ویندوز 7 شما می توانید برای ویندوز رایگان دانلود کنید! لذت بردن از گرافیک فوق العاده!

این پست پاسخ به سوال در نظرات به یکی از مقالات من است.

در مقاله، من می خواهم بگویم که روش های HTTP دریافت / ارسال / قرار دادن / حذف و دیگران، که آنها اختراع شده و نحوه استفاده از آنها مطابق با بقیه.

http

بنابراین، یکی از پروتکل های اصلی اینترنت چیست؟ Pedants به RFC2616 ارسال می شود، و بقیه در مورد انسان می گویند :)

این پروتکل تعامل بین دو کامپیوتر (مشتری و سرور) را توصیف می کند، ساخته شده بر روی پایگاه داده پیام ها، درخواست) و پاسخ (پاسخ). هر پیام شامل سه بخش است: خط شروع، سرفصل ها و بدن. در این مورد، تنها خط شروع اجباری است.

خطوط اولیه برای درخواست و پاسخ یک فرمت متفاوت دارند - ما فقط به خط شروع پرس و جو علاقه مند هستیم، که به نظر می رسد این است:

روش اوری http / نسخه. ,

جایی که روش فقط روش پرس و جو HTTP است، URI شناسه منبع است، نسخه نسخه پروتکل است (در حال حاضر به روز شده نسخه 1.1).

سرصفحه مجموعه ای از نام جفت، جدا شده توسط روده بزرگ است. در هدر ها، اطلاعات خدمات مختلف انتقال داده می شود: رمزگذاری پیام، نام و نسخه مرورگر، آدرس که مشتری آن (ارجاع کننده) و غیره آمد.

بدن پیام، در واقع، داده ها منتقل می شود. در پاسخ داده های منتقل شده، به عنوان یک قانون، صفحه HTML که مرورگر درخواست کرد، و در پرس و جو، به عنوان مثال، در بدن پیام، محتویات فایل های دانلود شده به سرور منتقل می شود. اما به عنوان یک قانون، پیام پیام در پرس و جو به طور کلی وجود ندارد.

یک مثال از تعامل HTTP

یک مثال را در نظر بگیرید

پرس و جو:
دریافت /index.php http / 1.1 میزبان: example.com کاربر عامل: mozilla / 5.0 (x11؛ u؛ linux i686؛ ru؛ rv: 1.9b5) gecko / 2008050509 فایرفاکس / 3.0b5 قبول: اتصال متن / HTML: بستن
خط اول رشته پرس و جو است، بقیه سرفصل هستند؛ هیچ پیام بدن وجود ندارد

پاسخ:
http / 1.0 200 OK سرور: nginx / 0.6.31 محتوا زبان: RU محتوا نوع: متن / HTML؛ charset \u003d UTF-8 CONTENT-طول: 1234 اتصال: بستن ... صفحه HTML ...

منابع و روش ها

بیایید به خط شروع درخواست بازگردیم و به یاد داشته باشیم که چنین پارامتر را به عنوان URI ارائه می دهد. این به عنوان شناسه منبع یکپارچه رمزگشایی شده است - یک شناسه منبع یکنواخت. این منبع به عنوان یک قاعده، فایل بر روی سرور (مثال URI در این مورد "/styles.css") است، اما در همه، ممکن است هر شی انتزاعی وجود داشته باشد ("/ وبلاگ ها / webdev /" - نشان می دهد که بلوک "توسعه وب"، نه در یک فایل خاص).

نوع پرس و جو HTTP (همچنین به نام روش HTTP نامیده می شود) نشان می دهد سرور به این واقعیت است که ما می خواهیم با یک منبع تولید کنیم. در ابتدا (در اوایل دهه 90) فرض شد که مشتری فقط می تواند یکی را از منابع دریافت کند - برای دریافت آن، اما در حال حاضر، توسط پروتکل HTTP، شما می توانید پست ها، ویرایش مشخصات، حذف پیام ها و خیلی بیشتر. و این اقدامات دشوار است برای ترکیب اصطلاح "رسید".

برای محدود کردن اقدام با منابع در سطح روش HTTP و گزینه های زیر اختراع شد:

  • دریافت - گرفتن یک منبع
  • ایجاد منبع
  • قرار دادن - به روز رسانی منابع
  • حذف - حذف منابع
توجه به این واقعیت است که مشخصات HTTP سرور را مجبور به درک تمام روش ها نمی کند (که در واقع بیش از 4 است) - فقط دریافت مورد نیاز است، و همچنین سرور را نشان نمی دهد که آن را باید انجام شود در هنگام دریافت درخواست با یک یا چند روش دیگر. و این به این معنی است که سرور در پاسخ به Delete /index.php درخواست HTTP / 1.1 موظف نیست صفحه index.php را بر روی سرور حذف کنید، و همچنین برای دریافت درخواست /index.php HTTP / 1.1 موظف نیست صفحه index.php را به شما بازگردانید، می توانید آن را حذف کنید، به عنوان مثال :)

استراحت وارد بازی می شود

استراحت (انتقال دولت نمایندگی) این اصطلاح در سال 2000 توسط Roem Fielding (Roy Fielding) معرفی شد - یکی از توسعه دهندگان پروتکل HTTP - به عنوان نام گروهی از اصول ساخت وب سایت. به طور کلی، بقیه یک منطقه گسترده تر از HTTP را پوشش می دهد - می توان آن را در شبکه های دیگر با پروتکل های دیگر اعمال کرد. بقیه اصول تعامل مشتری و سرور را بر اساس مفاهیم "منابع" و "فعل" توصیف می کند (شما می توانید آنها را به عنوان موضوع هر دو درک کنید). در مورد HTTP، منبع توسط URI آن تعیین می شود و فعل یک روش HTTP است.

استراحت پیشنهاد می کند که از استفاده از همان URI برای منابع مختلف (یعنی آدرس های دو مقاله مختلف مانند /index.php؟article_id\u003d10 و /index.php؟article_id\u003d20، راه حل نیست) و استفاده متفاوت است روش های HTTP برای اقدامات مختلف. به این معناست که یک برنامه وب که با استفاده از رویکرد بقیه نوشته شده است، یک منبع را هنگام دسترسی به آن با استفاده از روش HTTP حذف حذف می کند (البته این بدان معنا نیست که این فرصت را برای حذف همه چیز و همه چیز، اما لازم است هر چیزی یک درخواست برای حذف در برنامه باید از روش HTTP-DELETE استفاده کنید).

استراحت برنامه نویسان را قادر می سازد تا برنامه های وب استاندارد و کمی زیبا تر از قبل را بنویسند. با استفاده از بقیه، URI برای اضافه کردن یک کاربر جدید، هیچ /user.php؟action\u003dcreate (GET / POST) و به سادگی /user.php (روش پست دقیق) نخواهد بود.

در نتیجه، با هم، با توجه به مشخصات موجود HTTP و رویکرد بقیه در نهایت به معنای روش های مختلف HTTP به دست می آورند. دریافت - بازگشت منبع، پست - ایجاد یک جدید، put - به روز رسانی موجود، حذف حذف - حذف.

چالش ها و مسائل؟

بله، یک مشکل کوچک با استفاده از بقیه در عمل وجود دارد. این مشکل HTML نامیده می شود.

قرار دادن / حذف درخواست ها را می توان از طریق XMLHttpRequest ارسال کرد، با اشاره به سرور دستی (می گویند، از طریق CURL یا حتی از طریق TELNET)، اما شما نمی توانید یک فرم HTML را ایجاد کنید که یک درخواست کامل / حذف کامل را ارسال می کند.

واقعیت این است که مشخصات HTML به شما اجازه نمی دهد که فرم های ارسال داده ها را متفاوت از طریق دریافت یا پست ارسال کنید. بنابراین، برای عملیات عادی با روش های دیگر، آنها باید آنها را مصنوعی تقلید کنند. به عنوان مثال، در قفسه (مکانیسم بر اساس کدام روبی با وب سرور ارتباط برقرار می کند؛ با رک، ریل، MERB و دیگر چارچوب های روبی ساخته می شوند) در فرم شما می توانید یک فیلد پنهان به نام "_method" را اضافه کنید، و به عنوان یک مقدار نام روش را مشخص کنید (به عنوان مثال، "put") - در این مورد، یک درخواست پس از ارسال ارسال خواهد شد، اما قفسه قادر به وانمود می کند که من قرار داده ام، و نه پست.

این پست در نظر گرفته شده است تا اصول انتقال داده ها را در اینترنت با کمک دو روش اصلی توضیح دهد: دریافت و ارسال کنید. من آن را به عنوان یک مکمل به دستورالعمل برای ژنراتور یک برنامه قابل تغییر از کار برای کسانی که به سختی جالب برای جزئیات هستند، نوشتم.

به آدرس زیر بروید (این برای یک توضیح بصری است): http://calendarin.net/calendar.php؟year\u003d2016 لطفا توجه داشته باشید نوار آدرس مرورگر: calendarin.net/calendar.php ؟ سال \u003d 2016 فایل اصلی به نام یک علامت سوال (؟) و پارامتر "سال" با ارزش "2016" نامیده می شود. بنابراین، همه چیز که به دنبال یک علامت سوال است، این یک درخواست دریافتی است. همه چیز ساده است برای انتقال یک پارامتر نه، اما چند، پس از آن آنها باید آمپرس را تقسیم کنند (&). به عنوان مثال: calenderinin.net/calendar.php. ؟ سال \u003d 2016 و نمایش \u003d کار روز و روز

فایل اصلی نیز نامیده می شود، به دنبال یک علامت سوال (؟)، پس از آن "سال" پارامتر با مقدار "2016"، سپس ampersand (و)، پس از آن - پارامتر "صفحه نمایش" با "روز کاری - و روزها "پارامتر -Off.

پارامترهای دریافت می توانند به طور مستقیم در نوار آدرس مرورگر تغییر کنند. به عنوان مثال، تغییر ارزش "2016" به "2017" و فشار دادن کلید، شما به تقویم برای سال 2017 بروید.

این انتقال داده ها به صورت پنهانی (آدرس صفحه تغییر نمی کند)؛ یعنی، برای دیدن آنچه که منتقل شد، فقط می توانید با استفاده از برنامه (اسکریپت). به عنوان مثال، در ابزار زیر برای محاسبه کاراکترها در متن، داده های اولیه توسط روش پست ارسال می شود: http://usefullinineetools.com/free/character-counter.php

اگر سوالی دارید، نظر و ایمیل من در خدمت شما هستند.

علاوه بر روش GET، که ما در یادداشت قبلی بررسی کردیم، یک روش دیگر برای ارسال پرس و جو در پروتکل HTTP - روش پست وجود دارد. روش پست نیز اغلب در عمل استفاده می شود.

اگر، به منظور اشاره به روش دریافت، به اندازه کافی برای ما درخواست URL را تایپ کنید، سپس همه چیز در روش پست بر روی یک اصل دیگر کار می کند.

به منظور اجرای این نوع درخواست، ما باید با کلیک بر روی دکمه با نوع \u003d "Submit Attribute"، که در صفحه وب واقع شده است، کلیک کنید. لطفا توجه داشته باشید که این دکمه در عنصر قرار دارد. با روش روش با مقدار پست.

این کد HTML را در نظر بگیرید:

متن را وارد کنید:


اگر کاربر وارد برخی از متن به فیلد متن و کلیک بر روی دکمه "Submit"، سپس متغیر متن به سرور با محتوای محتوا که کاربر وارد شده است ارسال می شود.

ارسال و دریافت درخواست با کلمات ساده

این متغیر توسط روش پست ارسال می شود.

اگر شما در فرم بنویسید:

این داده ها توسط روش GET ارسال می شود.

اگر در صورت درخواست دریافت، مقدار داده هایی که ما می توانیم انتقال دهیم محدود به طول طول مرورگر است، پس از آن در مورد درخواست پست، هیچ محدودیتی وجود ندارد و ما می توانیم مقدار قابل توجهی از اطلاعات را انتقال دهیم.

یکی دیگر از تفاوت های روش پس از دریافت، روش پست، تمام متغیرهای منتقل شده به آنها و مقادیر آنها را در بدن خود (نهاد بدن) پنهان می کند. در مورد روش دریافت، آنها در رشته پرس و جو (درخواست-URI) ذخیره شدند.

در اینجا یک نمونه از یک درخواست ساخته شده توسط روش پست است:

ارسال / http / 1.0 \\ r \\ n
میزبان: www.site.ru \\ r \\ n
مرجع: http://www.site.ru/index.html\\r\\N.
کوکی: درآمد \u003d 1 \\ r \\ n
محتوای نوع: برنامه / X-www-form-urlencoded \\ r \\ n
طول محتوا: 35 \\ r \\ n
\\ r \\ n
ورود \u003d Dima & Password \u003d 12345

بنابراین، انتقال داده ها توسط روش پست، آنها برای جلوگیری از حمله مهاجم بسیار سخت تر خواهند بود آنها از مشاهده مستقیم پنهان هستند، بنابراین روش انتقال داده ها توسط روش پست به عنوان امن تر در نظر گرفته می شود.

علاوه بر این، روش پست را می توان نه تنها متن، بلکه همچنین داده های چند رسانه ای (تصاویر، صوتی، ویدئو) منتقل می شود. یک پارامتر خاص نوع خاصی وجود دارد که نوع اطلاعاتی را که باید انتقال می یابد، تعریف می کند.

و در نهایت، برای دریافت داده هایی که توسط این روش منتقل شده اند، متغیر پست استفاده می شود.

در اینجا نمونه ای از پردازش در PHP است:

echo $ _post ['text']؛
?>

در آخرین یادداشت، ما تصمیم گرفتیم که مرورگر (مشتری) درخواست های خود را به سرور HTTP ارسال کند، و سرور پاسخ HTTP را به سرویس دهنده HTTP ارسال می کند. این درخواست ها و پاسخ ها بر اساس قوانین خاص صادر می شود. چیزی شبیه نحو وجود دارد، همانطور که در آن توالی باید نوشته شود. باید یک ساختار کاملا تعریف شده باشد.

بگذارید این ساختار را با جزئیات بیشتر در نظر بگیریم، که درخواست ها و پاسخ ها را در پروتکل HTTP ایجاد می کند.

درخواست HTTP شامل سه بخش اصلی است که در آن به ترتیب در زیر آمده است. یک خط خالی بین هدر ها و بدن پیام (به عنوان یک جداساز) وجود دارد، این یک نماد ترجمه رشته است.

رشته خالی (جداساز)

ارسال و دریافت درخواست، تفاوت بین آنها چیست و بهتر است و برای چه اهدافی چیست؟

پیام بدن (بدن نهاد) - پارامتر اختیاری

درخواست ردیف - نشان می دهد روش انتقال، آدرس URL که نسخه پروتکل HTTP باید دسترسی داشته باشد.

سرفصل - توصیف بدن پیام، انتقال پارامترهای مختلف و سایر اطلاعات و اطلاعات.

بدنه ی پیام - این داده هایی است که در درخواست منتقل می شود. بدن پیام یک پارامتر اختیاری است و ممکن است از دست ندهد.

هنگامی که یک پاسخ از سرور دریافت می کنیم، پیام پیام اغلب محتویات یک صفحه وب است. اما، هنگامی که پرس و جو به سرور، می تواند گاهی اوقات وجود دارد، به عنوان مثال، زمانی که ما داده ها را که در فرم بازخورد به سرور پر شده است.

در جزئیات بیشتر، هر عنصر پرس و جو، ما به یادداشت های زیر نگاه خواهیم کرد.

به عنوان مثال، یک درخواست واقعی به سرور را در نظر بگیرید. من هر بخش از پرس و جو را با رنگ من برجسته کردم: یک خط پرس و جو - سبز، سرفصل - نارنجی، پیام بدن آبی است.

درخواست از مرورگر:

میزبان: webgyry.info.

کوکی: تنظیمات WP

اتصال: زنده نگه داشتن

مثال زیر در حال حاضر یک پیام پیام دارد.

پاسخ سرور:

محتوای نوع: متن / HTML؛ charset \u003d utf-8

انتقال-کدگذاری: تکه تکه شده

اتصال: زنده نگه داشتن

نگه داشتن زنده: timeout \u003d 5

X-Pingback: //webgyry.info/xmlrpc.php

سند بدون عنوان

در اینجا پیام های مشتری و سرور HTTP وجود دارد.

به هر حال، آیا می خواهید بدانید که آیا در برخی از آیتم ها در سایت خود با استفاده از "اهداف" معیارهای Yandex و Google Analytics حساس است؟

آنچه را که کار نمی کند حذف کنید، آنچه را که کار می کند و دو برابر درآمد خود را اضافه کنید.

البته در تعیین اهداف Metrics Yandex ..

Google Analytics اهداف راه اندازی دوره ..

سرویس گیرنده HTTP یک درخواست به سرور را به صورت درخواست درخواست، که دارای فرمت زیر است ارسال می کند:

  • ردیف پرس و جو (عنصر اجباری)
  • عنوان (عنصر اختیاری)
  • رشته خالی (عنصر اجباری)
  • پیام بدن (عنصر اختیاری)

هر یک از این عناصر را به صورت جداگانه در نظر بگیرید.

درخواست ردیف

رشته پرس و جو با یک نشانه روش آغاز می شود، پس از آن پرس و جو URI و نسخه پروتکل پیروی می کنند. عناصر از هر فضایی دیگر پراکنده می شوند:

این مورد را در جزئیات بیشتر در نظر بگیرید

روش درخواست

این عنصر یک روش را نشان می دهد که باید از طرف سرور به inferction URI مشخص شده نامیده شود.

هشت روش در http وجود دارد:

  • سر.
    برای گرفتن رشته وضعیت و هدر از سرور URI استفاده می شود. داده ها را تغییر نمی دهد.
  • گرفتن.
    برای دریافت اطلاعات از سرور به URI مشخص شده استفاده می شود. داده ها را تغییر نمی دهد.
  • پست.
    برای ارسال داده ها به سرور (به عنوان مثال، اطلاعات در مورد توسعه دهنده، و غیره) با استفاده از فرم های HTML استفاده می شود.
  • قرار دادن.
    جایگزین تمام اطلاعات قبلی در منابع جدید داده های دانلود شده است.
  • حذف.
    تمام اطلاعات فعلی را بر روی یک منبع تعریف شده توسط URI حذف می کند.
  • اتصال
    با توجه به URI مشخص شده، اتصال تونل را به سرور تنظیم می کند.
  • گزینه ها.
    خواص اتصال برای منبع مشخص شده را توصیف می کند.
  • پی گیری.
    پیام حاوی ردیابی بازگشت منبع مشخص شده در URI را فراهم می کند.

درخواست URI

URI (شناسه منبع منبع) یک شناسه منبع است که پرس و جو ارسال می شود. در زیر شایع ترین فرمت URI است:

‘*’ هنگامی که یک درخواست HTTP به یک منبع خاص اعمال نمی شود، اما به سرور استفاده می شود. استفاده می شود فقط در مورد زمانی که روش لازم نیست برای اعمال به منابع. مثلا،

absoluteuri. هنگامی که یک درخواست HTTP بر روی یک پروکسی انجام می شود استفاده می شود. پروکسی درخواست می شود یک پرس و جو را از یک حافظه مقرون به صرفه ارسال کنید و پاسخ را بازگردانید. مثلا:

asbutivated_put | منبعبیشتر Chatso استفاده می شود.

یادگیری کار با درخواست های دریافتی و ارسال

یک منبع خاص از یک سرور خاص درخواست شده است. به عنوان مثال، مشتری می خواهد یک منبع از سرور را از طریق بندر 80 دریافت کند. آدرس منبع "www.proselyte.net" و درخواست زیر را ارسال می کند:

درخواست های هدر درخواست

زمینه های هدر به مشتری اجازه می دهد تا اطلاعات اضافی در مورد درخواست و خود را به خود سرور انتقال دهند. این زمینه ها به عنوان اصلاح کننده پرس و جو عمل می کنند.

در زیر تقاطع مهمترین مزرعه هدر است که می تواند مورد استفاده قرار گیرد:

  • پذیرش Charset
  • رمزگذاری پذیرش
  • پذیرش زبان
  • مجوز
  • انتظار
  • درگیری
  • اگر اصلاح شده است،
  • اگر بدون هیچ بازی
  • اگر محدوده
  • اگر-اصلاح شده - از آنجا که
  • دامنه.
  • مرجع
  • عامل کاربر

اگر ما تصمیم به پیاده سازی مشتری خود و سرور وب خود داریم، می توانیم زمینه های هدر خود را ایجاد کنیم.

یک مثال از درخواست HTTP

در این مورد ما درخواست های HTTP را به پایان رسانده ایم.
در مقاله بعدی، ما به پاسخ HTTP نگاه خواهیم کرد.

یک راه برای ارسال یک درخواست از طریق HTTP به سرور این است که درخواست روش دریافت کنید. این روش رایج ترین و درخواست های سرور است که اغلب با استفاده از آن رخ می دهد.

ساده ترین راه برای ایجاد یک پرس و جو دریافت می تواند برای تایپ URL در نوار آدرس مرورگر استفاده شود.

مرورگر سرور را برای تقریبا اطلاعات زیر ارسال می کند:

دریافت / http / 1.1
میزبان: webgyry.info.
کاربر عامل: Mozilla / 5.0 (ویندوز NT 6.1؛ RV: 18.0) Gecko / 20100101 فایرفاکس / 18.0
پذیرش: متن / HTML، برنامه / XHTML + XML، برنامه / XML؛ Q \u003d 0.9، * / *؛ Q \u003d 0.8
پذیرش زبان: ru-en، ru؛ q \u003d 0.8، en-us؛ q \u003d 0.5، en؛ q \u003d 0.3
پذیرش رمزگذاری: Gzip، deflate
کوکی: تنظیمات WP
اتصال: زنده نگه داشتن

درخواست شامل دو بخش است:

1. خط درخواست (خط درخواست)

2. هدرها (پیام های پیام)

لطفا توجه داشته باشید که پرس و جو دریافت یک پیام پیام ندارد. اما، این بدان معنا نیست که با آن، ما نمی توانیم اطلاعاتی را به سرور انتقال دهیم.

تفاوت بین روش های دریافت و پست

این را می توان با کمک پارامترهای ویژه دریافت کرد.

برای اضافه کردن پارامترهای دریافت به درخواست، شما باید علامت "؟" را در انتهای آدرس URL قرار دهید و پس از آن شروع به تنظیم آنها در قانون زیر:

parameter_Name1 \u003d پارامترهای ارزش 1 و پارامتر نام 2 \u003d پارامترهای ارزش 2 و ...

جداساز بین پارامترها علامت "&" است.

به عنوان مثال، اگر ما می خواهیم دو ارزش را تصویب کنیم، نام کاربری و سن آن، می توان آن را انجام داد:

http://site.ru/page.php؟name\u003ddima&age\u003d27

هنگامی که این پرس و جو اجرا می شود، داده ها به متغیر به اصطلاح query_string متغیر می رسند که از آن می توان آنها را با استفاده از سرور برنامه نویسی وب به دست آورد.

در اینجا یک مثال است که می تواند بر روی پی اچ پی انجام شود.

echo "نام شما:". $ _GET ["نام"]. "
»;
اکو "سن شما:". $ _GET ["سن"]. "
»;
?>

طراحی $ _Get ["پارامتر نام"] به شما امکان می دهد مقدار پارامتر انتقال را نمایش دهید.

به عنوان یک نتیجه از اجرای این کد در مرورگر نمایش داده خواهد شد:

نام شما: دیما
سن شما: 27

ما همچنین یک درخواست را به سرور دریافت می کنیم.

به طور مشترک بین آنها، این واقعیت است که آنها به طور مساوی کار می کنند. تفاوت بین آنها از لحاظ فنی هیچ است. اما تفاوت های ایدئولوژیک وجود دارد.

من در مورد آنها در زمینه پی اچ پی می گویم. لطفا توجه داشته باشید که پروتکل HTTP به PHP دارای نگرش غیرمستقیم است، زیرا آن را برای تبادل صفحات HTML ایجاد کرده و PHP به سادگی امکانات و دیگری را گسترش می دهد.

برای دریافت اطلاعات یک پست برای ارسال یک پرس و جو استفاده می شود. (من به شما یادآوری می کنم که از لحاظ فنی به همان اندازه کار می کند).

بنابراین، در زمینه پی اچ پی، تکیه بر این ایدئولوژی به شرح زیر است:
1. هر بار پی اچ پی راه اندازی می شود، آرایه های Superglobal ($ _GET، $ _POST) به طور پیش فرض ایجاد می شود.
2. اگر علامت سوال در رشته پرس و جو وجود داشته باشد (؟). سپس همه چیز پس از آن در نظر گرفته می شود مولفه های دریافت درخواست هایی که آنها در فرمت "کلید" \u003d "مقدار" ارائه می شوند و علامت Ampersand (&) به عنوان جداساز استفاده می شود
مثال:
دریافت /index.php؟name\u003dandrey&surname\u003dhalkin
این یک رشته پرس و جو است، در اینجا 2 پارامتر. این پارامترها به آرایه $ _get می افتند.
3. $ _post با راه دیگری پر شده است. محتویات این آرایه از "هدایای درخواست" پر شده است. این است که از محل پنهان از چشم به صراحت پنهان شده است. کل روال برای ایجاد چنین سرفصل ها بر روی یک مرورگر طول می کشد. اگر چه گاهی اوقات چیزی در سرفصل ها به صورت دستی ویرایش می شود.

اغلب، درخواست پست در فرم ها استفاده می شود (برای ارسال اطلاعات).

به عنوان مثال، ما یک فرم برای ورود 2 فیلد ورود و رمز عبور داریم.

تصور کنید که ما از روش دریافت استفاده می کنیم. سپس، هنگام ارسال یک فرم، ما به آدرس زیر / login.php؟login\u003dandrey&password\u003d123 می رویم که این اطلاعات امن نیست. هر کسی می تواند مرورگر شما را باز کند و شروع به ورود به آدرس سایت کند. این می تواند رمزهای عبور و ورود شما را ببیند.

اما اگر ما با روش پست تعیین کردیم، درخواست زیر را دریافت خواهیم کرد:
post / login.php (login \u003d Andrey & Password \u003d 123) چه چیزی در براکت ها پنهان می شود و در مرورگر ذخیره نمی شود.

به طور کلی خلاصه کردن:
دریافت یک صفحه خاص را در یک فرم خاص (مرتب سازی، صفحه فعلی در وبلاگ، رشته جستجو، و غیره) دریافت کنید.
پست - برای داده های Mandrel که صفحه نمایش را تحت تاثیر قرار نمی دهد، به طوری که این داده ها تنها بر نتیجه اجرای اسکریپت (Logins، Passwords، Numbers Card Card، Messages، و غیره) تاثیر می گذارد.

و یک خبر خوب دیگر می تواند ترکیب شود، به عنوان مثال
post /index.php؟page\u003dlogin (ورود \u003d Andrey & Password \u003d 123) من فکر می کنم من قبلا به اندازه کافی توضیح داده ام که به نظر می رسد و چه پارامترهایی که آرایه کاهش می یابد.