internet pencereler Android
Genişletmek

Gönderin ve basit kelimelerle istek alın. Mesaj İsteği Tarayıcı Nasıl Gönderilir: PHP Kullanım Örnekleri'nde Metod Değişken Gönderi

Bu derste, formlar ve sayfalar arasında veri iletimi almayı düşünüyoruz. Bu yöntemler görev ve almak. Birbirimizden ayrı ve daha ayrıntılı olarak konuşacağız. Genel olarak konuşursak, formlar arasındaki iletişim için gereklidir. Örneğin, sayfadaki bazı alanları doldururuz ve işleme için başka bir sayfaya aktarmamız gerekiyor.

PHP'de Yöntem Alın

Başlamak için, GET yöntemini analiz edeceğiz. Bu, tüm değişkenler ve değerleri doğrudan adres üzerinden iletildiğinde. Artık örnekte her şeyi göreceksiniz ve hatta çoğu sitenin ve forumların nasıl çalıştığını bile anlayacaksınız.
Örneğin, bu tür bir HTML sayfamız var:

GET kullanarak değişkenleri iletme örneği olan sayfa link

Bağlantıya bakın? Karmaşık ve çeşitli bölümlerden oluşur. Rafların etrafındaki her şeyi merak edelim:
https: // site - Etki alanının adresi veya dediği gibi, ana bilgisayar.
index.php. - İsteği işleme koyacak PHP sayfası.
? - Değişkenlerle adres ve blok arasındaki ayırma sembolü.
Sonra değişkenler ve sembolle ayrılan değerleridir. & .
İsim \u003d Sergey - İsim değişkeni ve Sergey değeri.
yaş \u003d 22. - Aynı, değişken yaş, değer 22.

Hepsi demonte edildi, şimdi GET yöntemini kullanarak PHP'de nasıl işlendiğini görelim.
Sayfa index.php, hatırladıkça, ona geçtik:

Başlamak için, tavsiye: Her zaman doğruluk üzerindeki değişkenleri kontrol edin: Geçerli değerlere uygunluk için void üzerinde. Her şey adres çubuğu aracılığıyla iletildiğinden, veriler kolayca değiştirilebilir ve siteye zarar verebilir. Şimdi kodun kendisine göre: Yardımla, adın ve yaşın değişkenlerini boşluğa kontrol ettik, eğer boş değilse, onları çıkardılarsa ve boşsa, daha sonra bildirdi.
Her şey basit, katılıyorum? Örneğin, bir HTML sayfası oluşturabilir ve indeks.php'deki değişkenler aracılığıyla bağlantı kurabilirsiniz. Peki, daha sonra konuşacağız, makalede PHP'de sıfırdan bir web sitesi oluşturma hakkında. Hiçbir şeyi kaçırmak için, RSS'ye abone olmanızı tavsiye ederim.

PHP PHP yöntemi

Bu yöntemin çalışmalarını göstermek için, adresiyle basit bir satırdan biraz daha fazla ihtiyacımız olacaktır :) doldurma formu olan bir HTML sayfası oluşturmak gerekli olacaktır, ancak hiçbir şey, sizin için hazır bir örnek vereceğim :

Gönderi kullanarak değişkenleri iletme örneği ile sayfa

Bilgileri aktarmak için alanları doldurun:

Adınızı belirtin:

Yaşınızı belirtin:

Böylece, basit bir formu olan bir HTML sayfası oluşturduk. Unutmayın, posta yöntemi sadece formda kullanılabilir.
İlk form parametresi "yöntem" dir, iletim için kullanacağımız yöntemi tanımlar. Tahmin edebileceğiniz gibi, ya al ya da gönderin. Bu durumda, eğer alındığında, eğer yüklenirse, alanların tüm adları (değişken isimler şeklinde) ve değerleri, GET yöntemiyle ilgili bölümündeki gibi referans olarak iletilir. Gönderi ayarlanırsa, değişkenlerin tüm adları ve değerleri bir Web sunucusuna tarayıcı isteği olarak iletilecektir. Yani, adres çubuğunda görünmeyecekler. Çoğu durumda, bu çok faydalıdır. Ayrıca, gönderi daha güvenlidir, aynı zamanda, değerleriyle olan değişkenler artık mümkün olmasa da, değişiklikleri artık çok kolay değildir.

Formun ikinci parametresi "eylem" dir. Bu, veri ilettiğimiz komut dosyasının yolu ve adıdır. Bizim durumumuzda, bu index.php. Bu yol iletilebilir ve tamamen iletilebilir, yani, yani: Action \u003d "https://my_site.ru/index.php". "Eylem" parametresinin değerini belirtmezseniz, tüm bilgiler ana betiğe, yani sitenizin index.php dizin sayfasına oldukça mantıklıdır.

Şimdi bizim formumuzdan veri alıyoruz. İndex.php'de geçtikten sonra, kodun bu sayfanın kodu olacağı anlamına gelir:

"; Echo" isim - "; yankı $ _POST [" user_ ad "]; echo"
yaş - "; echo $ _post [" yaş "]; yankı" yıl ";) başka (yankı" değişkenleri ulaşamadı. Tüm zamanları kontrol et. ";)?\u003e?

Boşluğu ve izin verilen değerleri kontrol etmeyi unutmayın. Daha sonra, değişkenlerimizin neden kullanıcı adı ve yaşına neden olduğunu netleştirmeniz gerekiyor? Ve yukarıda oluşturduğumuz şekil alanlarına bakıyorsunuz. Orada görmek giriş Adı \u003d "user_name" Type \u003d "Metin" ? İşte ad parametresi ve bu alanla birlikte aldığımız değişkenin adını ayarlar. Yaşla aynı. Umarım açıktır. Peki, değişkenin ve görevler aracılığıyla değerlerinin edinilmesi, yukarıda düşündüğümüz alımdan neredeyse farklı değildir.

Dersin büyük olduğu ortaya çıktı, ancak en faydalı olanlardan biri, çünkü değişkenlerin formlar ve sayfalar arasındaki aktarımı tam olarak PHP kullandığımız etkileşimdir.

Adreslerin çoğu sitede düşünülebileceğini fark edebilirsiniz:

Http: //syt/index.php? Blog \u003d 2

Burada, PHP'yi bile bilmek bile, dosyaya itiraz ettiğimizi tahmin edebilirsiniz. index.php. Fakat soru sorusundan sonra ne olacak, birkaç kişi biliyor. Her şey oldukça basit: Blog \u003d 2 Bu, "$ _get [" blog "]" 2 "değerinin" $ _GET ["BLOG"] ") 'nın küresel değişkeninin bir duyurudur. Böylece, veritabanından çıktılardan sorumlu olan komut dosyasına bir değişken iletirim. Sadece açıkça göreceğiniz küçük bir betiği yazalım:

if (issas ($ _ almak ["blog"])) (
yankı $ _GET ["BLOG"];
}
?>

İf () koşulu operatörünü () bu satıra değer bir koşul olarak kullanıyoruz:

İsset ($ _ almak ["blog"])

İsset (), parantez içinde listelenen bir değişken olup olmadığını, yani kodda tanımladığım bir değişken olup olmadığını öğrenmenize izin verir, bu, kodda tanımladığım koşulu şu şekildedir: Değişken $ _GET ["BLOG"] varsa, içeriği çıkarın. ekranda bu değişken. Olanlar budur:

Küresel değişkenin açıkça yaratıldığını düşünüyorum. $ _GET. Adres çubuğunda ilan ettiğimiz tanımlayıcı ile ( bu durumda, "Blog" tanımlayıcısı ile)

Şimdi bir anı netleştirmek istiyorum. İki değişken ilan etmemiz gerektiğini varsayalım, nasıl yapılır? İlk değişken, "?" Sorusunun sorusundan sonra ilan edilir. İkinci değişken, böyle bir işaretten sonra bildirilir ("&" ( Dürüst olmak gerekirse ne tür bir işaret bilmiyorum ), işte üç değişkenin bir örnek duyurusu:

Http: //syt/index.php? A \u003d 1 & b \u003d 2 & c \u003d 3

İşte çıktı kodu:

if (isset ($ _ almak ["a"]) ve isset ($ _ almak ["b"]) ve isset ($ _ almak ["c"])) (
Echo $ _get ["a"]. "
";
Echo $ _get ["b"]. "
";
Echo $ _get ["c"]. "
";
}
?>

Durum böyle geliyor:

Global değişken $ _get ["a"] ve Global Değişken $ _get ["B"] ve Global Değişken $ _get ["c"] ve ardından ekranda çıktılar, İşte sonuç:

Formlar

Gitmeden önce İLETİ. İstekler, hangi formun olduğunu sökmek zorundasınız? Neden ihtiyacın var? Çünkü küresel değişken $ _POST ["] formlar aracılığıyla oluşturulur. Bir form nedir? Bunlar, kullanıcının herhangi bir bilgisini girecek alanlardır. Alanlar bir satırda, büyük alanlar, radyo düğmeleri, onay kutuları vardır. Her şeyi sırayla analiz edeceğiz ...

Form bir etikettir:


Formun Elemanları

Formun öznitelikleri var, en yaygın olanı listeler:

Bir form oluşturalım:


Formun Elemanları

Dosyayı bir işleyici dosyası olarak ayarladım test.php. Bu olduğundan, sizin için örnek yazıyorum. Posta yöntemini, vakaların% 99,9'unda kullanan yöntemler olduğu için koydum. Ayrıca form adımızı atadım - form

Şimdi form unsurlarının dünyasına dalın. Her şeyden önce, neredeyse tüm unsurların etiket olduğunu anlamalısınız Sadece nitelikte fark tip Bu etiketler. Kullandığınız formları listeleyelim:

Bu tür tarlalarla tanışmadığınızdan eminim, bu yüzden burada belirtildiği gibi: "Yorum Yok"

Şimdi daha fazla çalışacağımız küçük bir eğitim anketi yapalım. Görevimiz, bize doldurma, zeminin, hangi ülkeden, hangi ülkeden, kullanıcının kendisi hakkında bir şeyler ekleyebileceği metnin adını söyleyen küçük bir form oluşturmaktır. Yaptığım şey bu:

Soyadınız Adı \u200b\u200bPatronymic:

Senin cinsiyet:
M.
J.

Hangi ülkedensin



Favori renk (a):

Siyah:
Kırmızı:
Beyaz:
Diğer:

Kendim hakkında:




Lütfen hemen hemen her etiketin bir niteliğe sahip olduğunu unutmayın. değer.O ne? Başka bir sayfaya aktarabileceğiniz verileri kaydeder. Umarım açıktır

Şimdi bu kodu tarayıcıda çalıştırırsanız, aşağıdakileri göreceğiz:

Form bir öznitelik kullandım aksiyon. anlamı ile test.php. Bu, formdan gelen verilerin Test.php dosyasına gönderildiğini zaten söyledik.

Posta isteği

Şimdi girdiğiniz bilgileri görmemize izin veren PHP kodunu yazın. Veriler nerede saklandı? GET isteği durumunda, verilerimiz $ _GET Global değişkeninde yatıyordu]. Bir yazı talebi ile, veriler global değişken $ _POST ["] içinde yatar. Square parantez içinde, bir tanımlayıcı olan Global değişkeninin durumunda olduğu gibi, reçete etmek gerekir. Soru bu tanımlayıcının aldığı yerdir? Bu yüzden form öğelerinde isim niteliği gereklidir! Bize global yazı dizisindeki anahtarla hizmet veren bu isimlerdir. Peki, script açıklamasını başlatalım:

if (isset ($ _ post ["gönder"])) (
Echo "Tam Adı:" $ _ sonrası ["fio"]. "
";
Echo "Cinsiyet:" $ _ sonrası ["seks"]. "
";
Yankı "ikamet ettiği ülke:" $ _ sonrası ["şehir"]. "
";

Echo "favori renk (a):
";
Echo $ _post ["color_1"]. "
";
Echo $ _post ["color_2"]. "
";
Echo $ _post ["color_3"]. "
";
Echo $ _post ["Color_4"]. "
";
Echo "Hakkımda:" $ _ Post ["Hakkında"]. "


";
}
?>

Eğer yazılı ise, yazılı ise: Global değişken bir $ _POST ["Gönder"] varsa, ardından ekranda verileri görüntüleyin. Bu örneğin, bu örneğin düğmesindeki ad özniteliğini gerektirdiği Gönder düğmesine tıkladığınızda bu Global Değişken oluşturulur. Düğme öznitelik adının neden gerekli olmadığını merak edebilirsiniz? Her şey oldukça basit. Genellikle programcı, düğmenin baskısını izlemez ve gönderilen verileri izler. Doğru işlem için, örneğin, iletişim formu, düğmesine basmadan izlemeniz gerekir, ancak bilgi girişinin doğruluğu ve bu bilgilerin hiç tanıtılmadığını öğrenirsiniz. Örneğimizde, gönderilen verileri kontrol etmedik ve basitçe düğmeye basmak için, örneği basitleştirmek için seyahat ettik ... Şunu yaptığımız şey:

Sonuç

Peki, bugün için, komut dosyaları arasında iki veri aktarımı yöntemi ve Formlara aşina olan Gallopam. Gerçekten bu bilginin en azından faydalı olduğunu umuyorum. Herhangi bir sorunuz veya düşünceniz varsa, yorum yazın. Sana iyi şanslar, bugün her şeyim var!

P.S.: Bilgisayar oyunlarının daha gerçekçi olmasını ister misiniz? DirectX 11 Windows 7 için Windows'ta download özgür olabilir! Harika grafiklerin tadını çıkarın!

Bu yazı, yorumlarda belirtilen sorunun cevabını makalelerimden birine.

Makalede, HTTP yöntemlerinin ne yapıldığını / posta / takma / delete ve diğerlerini, icat edildikleri ve diğerlerinin gerisini nasıl kullanacağını söylemek istiyorum.

Http.

Peki, ana internet protokollerinden biri nedir? Pedantlar RFC2616'ya gönderilir ve gerisi insanca hakkında söyleyecektir :)

Bu protokol, iki bilgisayar (istemci ve sunucu) arasındaki etkileşimi, istek olarak adlandırılan, istek çağrısında bulunur) ve yanıt (yanıt) açıklanmaktadır. Her mesaj üç bölümden oluşur: başlangıç \u200b\u200bçizgisi, başlıklar ve vücut. Bu durumda, sadece başlangıç \u200b\u200bçizgisi zorunludur.

Talep ve yanıt için başlangıç \u200b\u200bçizgileri farklı bir formata sahip - biz sadece bu gibi görünen sorgunun başlangıç \u200b\u200bçizgisi ile ilgileniyoruz:

Yöntem URI Http / Sürüm. ,

Bu yöntem sadece HTTP sorgu yöntemidir, URI kaynak tanımlayıcısıdır, sürüm Protokolün sürümüdür (şu anda güncellenmiş sürüm 1.1).

Başlıklar, kolonla ayrılmış bir çift ad ismidir. Başlıklarda, çeşitli servis bilgileri iletilir: Mesaj kodlaması, tarayıcının adı ve sürümü, müşterinin geldiği adres (yönlendirici) vb.

Mesaj gövdesi aslında, iletilen verilerdir. Tahmin edilen veriler, bir kural olarak, tarayıcının istediğiniz HTML sayfası ve örneğin Mesaj gövdesinde, sunucuya indirilen dosyaların içeriği iletilir. Ancak bir kural olarak, sorgudaki mesaj gövdesi genellikle yoktur.

HTTP etkileşimi örneği

Bir örnek düşünün.

Soruşturma:
/ 1dex.php http / 1.1 ana bilgisayar: example.com Kullanıcı Aracısı: Mozilla / 5.0 (X11; U; Linux I686; RU; RV: 1.9B5) Gecko / 2008050509 Firefox / 3.0B5 Kabul: Metin / HTML Bağlantısı: Kapat
İlk satır sorgu dizesidir, gerisi başlıklardır; Vücut mesajı yok

Cevap:
HTTP / 1.0 200 OK Sunucu: Nginx / 0.6.31 İçerik-Dil: RU İçerik türü: Metin / HTML; Charset \u003d UTF-8 İçerik Boyu: 1234 Bağlantı: Kapat ... HTML Sayfa ...

Kaynaklar ve Yöntemler

Talebin başlangıç \u200b\u200bçizgisine geri dönelim ve bu tür bir parametreyi URI olarak sunduğunu hatırlayalım. Bu, tekdüze kaynak tanımlayıcısı - tek tip bir kaynak tanımlayıcısı olarak şifresi çözülür. Kaynak, bir kural olarak, sunucudaki dosya (bu durumda URI örneği "" /styles.css "), ancak hiç, herhangi bir soyut nesne olabilir (" / bloglar / WebDev / "olabilir - Belirli bir dosyada değil, "Web Geliştirme" bloğu).

HTTP sorgu türü (ayrıca HTTP yöntemi olarak da bilinir), sunucuyu bir kaynakla üretmek istediğimizi gösterir. Başlangıçta (90'lı yılların başlarında), müşterinin yalnızca birinin kaynağından almasını isteyebileceği varsayılmıştır - onu almak için, ancak şimdi, HTTP protokolü tarafından, gönderiler oluşturabilirsiniz, profili düzenleyebilir, mesajları silebilir, mesajları silebilirsiniz. Ve bu eylemlerin "makbuz" terimini birleştirmek zordur.

HTTP yöntem seviyesindeki kaynaklarla eylemi sınırlandırmak ve aşağıdaki seçenekler icat edildi:

  • Almak - bir kaynak almak
  • Kaynak Oluşturma Sonrası
  • Koyu - Kaynak Güncellemesi
  • Sil - Kaynak Sil
HTTP spesifikasyonunun tüm yöntemleri (aslında 4'ten fazla) anlamak için sunucuyu mecburiyet etmemesi gerçeğine dikkat edin - sadece bir istek alırken yapılması gereken sunucuyu göstermez. bir veya başka bir yöntem. Ve bu, Sil / 1Index.php isteğine cevap olarak sunucunun HTTP / 1.1 olduğu anlamına gelir. zorunlu değil Sunucudaki index.php sayfasını silin ve /index.php http / 1.1 isteğini almak için zorunlu değil Dizin.php sayfasını size döndür, örneğin silebilir, örneğin :)

Dinlenme oyuna girer

Dinlenme (Temsilcilik Devlet Transferi), 2000 yılında, Web Uygulamalarının ilkeleri grubunun adı olarak, HTTP protokolünün geliştiricilerinden biri olarak 2000 yılında Roem Fiem (Roy Fielying) tarafından tanıtıldı. Genel olarak, gerisi, daha geniş bir alanı HTTP'den kaplar - diğer protokollerle diğer ağlarda uygulanabilir. Dinlenme, "kaynak" ve "fiil" kavramlarına dayanarak, müşterinin etkileşimi ve sunucusunun ilkelerini açıklar (bunları her ikisine de konu olarak anlayabilirsiniz). HTTP durumunda, kaynak URI ile belirlenir ve fiil bir HTTP yöntemidir.

Dinlenme, farklı kaynaklar için aynı URI'yi kullanmayı reddetmeyi önerir (yani, /index.php?article_id\u003d10 ve /index.php?article_id\u003d20 gibi iki farklı makalenin adresleri, dinlenme yolunda değildir) ve farklı kullanır. Farklı eylemler için HTTP yöntemleri. Yani, dinlenme yaklaşımını kullanarak yazılan bir web uygulaması bir kaynağı silecek (tabii ki, bu, elbette, bu, her şeyi ve her şeyi kaldırma fırsatını vermek için gerekli olduğu anlamına gelmez, ancak hiç Uygulamada silme talebi, HTTP-Sil yöntemini kullanmalıdır).

Dinlenme, programcılara standartlaştırılmış ve biraz daha güzel web uygulamalarını öncekinden daha fazla yazabilir. Gerisini kullanarak, yeni bir kullanıcı eklemek için URI, /user.php?action\u003dCreate (get / posta yöntemi) ve basitçe /user.php (sıkı posta yöntemi) olmayacaktır.

Sonuç olarak, mevcut şartname HTTP ve geri kalanı yaklaşımı nihayetinde çeşitli HTTP yöntemlerinin anlamını kazanır. GET - Kaynağı döndürür, gönderin - Mevcut, Sil - Silleri oluşturan yeni, Put - Güncellemeleri oluşturur.

Sorunlar?

Evet, istirahatin pratikte kullanılmasıyla ilgili küçük bir sorun var. Bu sorunun HTML denir.

Koy / Sil Talepler, Kılavuz Sunucuya (Curl veya hatta Telnet üzerinden bile) atıfta bulunarak XMLHTTpRequest üzerinden gönderilebilir, ancak tam teşekküllü bir Put / Sil isteği gönderen bir HTML formu yapamazsınız.

Gerçek şu ki, HTML spesifikasyonu, almak veya posta yoluyla farklı veri gönderen formlar oluşturmanıza izin vermez. Bu nedenle, normal çalışma için diğer yöntemlerle, yapay olarak taklit etmek zorundalar. Örneğin, rafta (Ruby'nin web sunucusuyla etkileşime girdiği bir mekanizma; raf, raylar, merb ve diğer yakut çerçeveleriyle yapılır) formda "_method" adı verilen gizli bir alan ekleyebilirsiniz. Değer Yöntemin adını belirtin (örneğin "" Put ") - Bu durumda, bir başvuru sonrası gönderilecektir, ancak rafta bulunduğum takas yapabilecek gibi davranabilecektir.

Bu gönderi, iki ana yöntemin yardımıyla İnternetteki veri transferinin ilkelerini açıklamayı amaçlamaktadır: GET ve POST. Detaylar için neredeyse ilginç olanlar için değiştirilebilir bir çalışma programının jeneratörü için talimatlara ek olarak yazdım.

Aşağıdaki adrese gidin (bu görsel bir açıklama içindir): http://calendarin.net/calendar.php?year\u003d2016 Lütfen tarayıcının adres çubuğunu not edin: calendarin.net/calendar.php ? Yıl \u003d 2016 Ana dosyaya, ardından "2016" değeri olan bir soru işareti (?) Ve "Yıl" parametresini takip eder. Öyleyse, bir soru işaretini izleyen her şey, bu bir istek. Her şey basit. Bir parametreyi değil, birkaç dakika, daha sonra, AMPERSAND (& )'yı bölmek gerekir. Örnek: calendarin.net/calendar.php. ? Yıl \u003d 2016 ve DISPLAY \u003d Çalışma günleri-ve-gün-kapalı

Ana dosya da denir, ardından "2016" değeri olan "Yıl" parametresi, ardından "Yıl" parametresi, ardından "çalışma günleri-ve" -Days "parametresi -off.

GET-parametreler doğrudan tarayıcı adres çubuğunda değişebilir. Örneğin, "2016" değerini "2017" e değiştirir ve tuşa basarak, 2017 için takvime gideceksiniz.

Bu veri iletimi gizli bir şekilde (sayfa adresi değişmez); Yani, neyin bulaştığını görmek için, yalnızca programı kullanabilirsiniz (komut dosyası). Örneğin, aşağıdaki araçta metinde karakterleri hesaplamak için, ilk veriler posta yöntemi ile iletilir: http://usefulonlinetools.com/free/Character-counter.php

Sorularınız, yorumlarınız ve e-postamız varsa hizmetinizdadır.

Önceki notada incelediğimiz GET yöntemine ek olarak, HTTP protokolünde bir sorgu gönderme yöntemi var. Posta yöntemi de pratikte çok sık kullanılır.

Eğer, GET yöntemine atıfta bulunmak için, talebi URL'ye yazmamız yeterli, daha sonra her şey başka bir prensipte posta yönteminde çalışır.

Bu tür bir istek yürütmek için, Web sayfasında bulunan Type \u003d "Gönder Özniteliği" ile düğmeye tıklamamız gerekir. Lütfen bu düğmenin öğede bulunduğunu unutmayın. Metod niteliğinde posta değeri ile.

Bu HTML kodunu düşünün:

Metni girin:


Kullanıcı metin alanına bir metne girerse ve "Gönder" düğmesini tıklatırsa, metin değişkeni, kullanıcının girdiği içeriğin içeriğiyle sunucuya gönderilecektir.

Basit kelimelerle gönderin ve istekleri alın

Bu değişken posta yöntemi tarafından gönderilecektir.

Formda yazarsanız:

Bu veriler get yöntemiyle gönderilecektir.

Eğer bir talep isteği durumunda, iletebileceğimiz veri miktarı tarayıcı uzunluğu uzunluğu ile sınırlıdır, daha sonra posta isteğinin durumunda, böyle bir kısıtlama yoktur ve önemli miktarda bilgi iletebiliriz.

POST yönteminin bir diğer farkı, posta yönteminin, kendilerine iletilen tüm değişkenleri ve vücudundaki değerlerini (varlık gövdesi) gizler. GET yöntemi durumunda, sorgu dizesinde (Request-URI) saklandılar.

İşte posta yöntemi tarafından yapılan bir talebe örneği:

/ Http / 1.0 \\ r \\ n
Ana Bilgisayar: www.site.ru \\ r \\ n
Referans: http://www.site.ru/index.html\\r\\n.
Çerez: Gelir \u003d 1 \\ r \\ n
İçerik türü: Uygulama / x-www-form-urlencoded \\ r \\ n
İçerik boyu: 35 \\ r \\ n
\\ r \\ n
Giriş \u003d Dima & Password \u003d 12345

Böylece, verileri posta yöntemiyle geçerken, saldırganı engellemek için çok daha zor olacaktır, çünkü Doğrudan görüntülemeden gizlenirler, bu nedenle verileri sonrası yöntemle iletme yöntemi daha güvenli olduğu düşünülmektedir.

Ek olarak, posta yöntemi sadece metin değil, aynı zamanda multimedya verileri (resim, ses, video) da iletilebilir. İletilecek bilgilerin türünü tanımlayan özel bir içerik türü parametresi vardır.

Ve son olarak, bu yöntemle iletilen verileri elde etmek için, sonrası değişkeni kullanılır.

İşte PHP'de işleme örneği:

echo $ _post ['metin'];
?>

Son notta, tarayıcının (istemcinin) istekleri HTTP sunucusuna gönderdiğini ve sunucunun HTTP istemcisine bir HTTP yanıtı gönderdiğine karar verdik. Bu talepler ve cevaplar belirli kurallara göre verilir. Sekizin yazılacağı gibi sözdizimi gibi bir şey var. Kesinlikle tanımlanmış bir yapı olmalıdır.

HTTP protokolünde istek ve cevaplar oluşturan bu yapıyı daha ayrıntılı olarak düşünelim.

HTTP talebi, aşağıda listelenen sırayla giren üç ana bölümden oluşur. Mesajın başlıkları ve gövdesi arasında boş bir çizgi var (ayırıcı olarak), bir dize çeviri sembolüdür.

Boş Dize (Ayırıcı)

Gönder ve istek alın, aralarındaki fark nedir ve daha iyi ve hangi amaçlar için?

mesaj gövdesi (varlık kuruluşu) - İsteğe bağlı parametre

Satır isteği - Transfer yöntemini gösterir, HTTP protokolünün erişimin sağlanması gereken URL adresi.

Başlıklar - Mesaj gövdesini tanımlayın, farklı parametreler ve diğer bilgileri ve bilgileri iletin.

mesaj gövdesi - Bu, istek üzerine iletilen verilerdir. Mesaj gövdesi isteğe bağlı bir parametredir ve eksik olmayabilir.

Sunucudan bir cevap aldığımızda, mesaj gövdesi en sık bir web sayfasının içeriğidir. Ancak, sunucuya sorgular ne zaman, örneğin, geri bildirim formunda doldurulmuş verileri sunucuya iletirken, bazen de mevcut olabilir.

Daha ayrıntılı olarak, her sorgu öğesi, aşağıdaki notlara bakacağız.

Örneğin, sunucuya bir gerçek isteği düşünelim. Sorgunun her bir kısmını rengimle vurguladım: bir sorgu hattı - yeşil, başlıklar - turuncu, vücut mesajı mavidir.

Tarayıcıdan istek:

Ev sahibi: webgyry.info.

Çerez: WP ayarları

Bağlantı: Keep-canlı

Aşağıdaki örnekte zaten bir mesaj gövdesi var.

Sunucu Cevap:

İçerik türü: Metin / HTML; Charset \u003d UTF-8

Transfer kodlaması: parçalanmış

Bağlantı: Keep-canlı

Keep-canlı: zaman aşımı \u003d 5

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

Belge Başlıksız

İşte istemcinin ve HTTP sunucusunun mesajları.

Bu arada, Sitenizdeki bazı ürünlerde, Yandex Metrics ve Google Analytics'in "Hedefleri" kullanarak mantıklı olup olmadığını bilmek ister misiniz?

Neyi işe yaramadığını, neyin işe yaradığını ve gelirinizi iki katına çıkarın.

Yandex Metrics'in hedeflerini belirleme dersi ..

Google Analytics Gol Kurulum Kursu ..

HTTP istemcisi, sunucuya aşağıdaki formata sahip olan bir istek isteği biçiminde bir istek gönderir:

  • Sorgu Satırı (Zorunlu Öğe)
  • Başlık (isteğe bağlı öğe)
  • Boş Dize (Zorunlu Eleman)
  • Mesaj gövdesi (isteğe bağlı öğe)

Bu elemanların her birini ayrı ayrı düşünün.

Satır isteği

Sorgu dizesi, URI sorgusu ve protokol sürümünün ardından bir yöntem belirteci ile başlar. Elementler birbirinden dağılmıştır:

Bu öğeyi daha ayrıntılı olarak düşünün

İstek yöntemi

Bu eleman, sunucu tarafında belirtilen URI inferticusuna çağrılması gereken bir yöntemi gösterir.

HTTP'de sekiz yöntem var:

  • Kafa.
    Durum dizesini ve başlığını URI sunucusundan almak için kullanılır. Verileri değiştirmez.
  • Almak.
    Sunucudan belirtilen URI'ye veri almak için kullanılır. Verileri değiştirmez.
  • İLETİ.
    HTML formlarını kullanarak sunucuya (örneğin, geliştirici, vb. Bilgiler) veri göndermek için kullanılır.
  • Koymak.
    Kaynak yeni indirilen verilerdeki tüm önceki tüm verileri değiştirir.
  • Silmek.
    Tüm güncel verileri URI tarafından tanımlanan bir kaynak üzerine kaldırır.
  • Bağlan.
    Tünel bağlantısını sunucuya belirtilen URI'ye göre ayarlar.
  • Seçenekler.
    Belirtilen kaynağın bağlantı özelliklerini açıklar.
  • İz.
    URI'de belirtilen kaynağın geri dönüş izini içeren bir mesaj sağlar.

URI Talebi

URI (Tekdüzen Kaynak Tanımlayıcısı), sorgunun gönderildiği bir kaynak tanımlayıcısıdır. Aşağıdaki en yaygın URI formatıdır:

‘*’ Bir HTTP isteği belirli bir kaynağa, ancak sunucuya uygulanmadığında kullanılır. Yalnızca yöntemin kaynağa başvurmak için gerekli olmadığı durumlarda kullanılır. Örneğin,

absoluteuri. Bir proxy üzerinde bir HTTP isteği gerçekleştirildiğinde kullanılır. Proxy, uygun bir önbellekten bir sorgu iletmesi istenir ve cevabı döndürür. Örneğin:

Asbutivated_put | bir kaynaken Chatso kullanılmıştır.

GET ve GÖNDERİN İSTİYORUM İLE ÇALIŞMAYIN

Belirli bir sunucunun belirli bir kaynağı istenmektedir. Örneğin, istemci, sunucudan 80. bağlantı noktası üzerinden bir kaynak almak istiyor. Kaynak adresi "www.proselyte.net" ve aşağıdaki talebi gönderir:

Başlık Alanları İste

Başlık alanları, müşterinin istek hakkında ve kendileri hakkında sunucuya ek bilgi aktarmasını sağlar. Bu alanlar sorgu değiştiricileri olarak işlev görür.

Aşağıda kullanılabilecek en önemli başlık alanlarının kesişimidir:

  • KABUL EDİLMESİ.
  • Kabul etme
  • Kabul-dil.
  • yetki
  • Beklemek
  • Eğer maç
  • Eğer değiştirilmiş
  • İf-hiçbir maç
  • Eğer aralık.
  • Eğer değiştirilmemiş
  • Aralık.
  • Referans.
  • Kullanıcı aracısı

Kendi müşterinizi ve kendi web sunucunuzu uygulamaya karar verirsek, o zaman kendi başlık alanlarınızı oluşturabiliriz.

HTTP isteğine bir örnek

Bu konuda HTTP isteklerini öğrenmeyi tamamlıyoruz.
Bir sonraki makalede, HTTP cevaplarına bakacağız.

HTTP ile sunucuya bir istek göndermenin bir yolu, GET yöntemini istemektir. Bu yöntem en yaygın olanıdır ve sunucunun kullanımı ile en sık gerçekleşir.

Bir get sorgusu oluşturmanın en kolay yolu, URL'yi tarayıcının adres çubuğuna yazmak için kullanılabilir.

Tarayıcı, sunucuyu yaklaşık olarak aşağıdaki bilgiler için gönderir:

Al / http / 1.1
Ev sahibi: webgyry.info.
Kullanıcı Aracısı: Mozilla / 5.0 (Windows NT 6.1; RV: 18.0) Gecko / 20100101 Firefox / 18.0
Kabul Et: Metin / HTML, Uygulama / XHTML + XML, Uygulama / XML; Q \u003d 0.9, * / *; Q \u003d 0.8
Kabul etme Dili: RU-TR, RU; Q \u003d 0.8, EN-US; Q \u003d 0.5, EN; Q \u003d 0.3
Kabul etme kodlaması: GZIP, Deflate
Çerez: WP ayarları
Bağlantı: Keep-canlı

İstek iki bölümden oluşur:

1. İstek satırı (istek çizgisi)

2. Başlıklar (Mesaj Başlıkları)

Lütfen GET sorgunun bir mesaj gövdesi olmadığını unutmayın. Ancak, bu onunla birlikte, herhangi bir bilgiyi sunucuya aktaramadığımız anlamına gelmez.

GET ve POST YÖNTEMLERİ arasındaki fark

Bu, özel alma parametreleri yardımı ile yapılabilir.

Talep etmek için parametreleri elde etmek için, URL adresinin sonunda bir işaret "?" Ve ardından aşağıdaki kuralda ayarlamaya başladıktan sonra:

parametre_name1 \u003d değer parametreleri1 ve parametre adı2 \u003d değer parametreleri2 & ...

Parametreler arasındaki ayırıcı "&" işaretidir.

Örneğin, iki değeri geçmek istiyorsak, kullanıcı adı ve yaşı, bir sonraki satır yapılabilir:

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

Bu sorgu yürütüldüğünde, veri, Web Programlama Sunucusunu kullanarak sunucuda elde edilebilecekleri Query_string ortam değişkenine düşer.

İşte PHP'de yapılabileceği gibi bir örnek.

"Adınız:" exo. $ _GET ["İsim"]. "
»;
"Yaşınız:" exho. $ _GET ["Age"]. "
»;
?>

$ _Get tasarım ["parametre adı"], iletilen parametrenin değerini görüntülemenizi sağlar.

Bu kodun yürütülmesinin bir sonucu olarak tarayıcıda görüntülenecektir:

İsminiz: Dima
Yaşınız: 27

ayrıca, GET sunucusuna bir istek de gerçekleştiriyoruz.

Aralarında ortak olarak, eşit olarak çalıştıkları gerçeği. Aralarındaki fark teknik olarak no. Ancak ideolojik farklılıklar var.

PHP bağlamında onlar hakkında söyleyeceğim. HTTP protokolünün PHP'ye yapılan HTTP protokolünün dolaylı bir tutum olduğunu, çünkü HTML sayfalarını değiştirmek için oluşturulduğu ve PHP'nin olasılıkları ve diğerini genişlettiğini unutmayın.

Verileri göndermek için bir posta almak için bir sorgu alın. (Size teknik olarak eşit olarak çalıştığını hatırlatırım).

Bu nedenle, PHP bağlamında, bu ideolojiye güvenmek aşağıdaki gibi yapıldı:
1. Her PHP piyasaya sürülürken, süperglobal dizileri ($ _GET, $ _POST) varsayılan olarak oluşturulur.
2. Sorgu dizesinde (?) Bir soru işareti varsa. Sonra her şey peşinden sayılır parametreler "Anahtar" formatında sunuldukları istekleri alın \u003d "değer" ve bir AMPERSAND işareti (&) ayırıcı olarak kullanılır
Misal:
Al /index.php?name\u003dandrey&surname\u003dhalkin
Bu, burada 2 parametre bir sorgu dizesidir. Bu parametreler $ _GET dizisine düşecektir.
3. $ _POST başka bir yolla doludur. Bu dizinin içeriği "istek başlıkları" ndan doldurulur. Yani, gözlerden gizlenen yerden açıkça. Bu tür başlıkları oluşturmak için tüm rutin bir tarayıcıyı alır. Bazen bir şey manuel olarak manuel olarak düzenlenmesine rağmen.

En sık, posta isteği formlarda kullanılır (veri göndermek için).

Örneğin, 2 alan giriş ve şifreyi oturum açmak için bir formumuz var.

GET yöntemini kullandığımızı hayal edin. Ardından, bir form gönderirken, aşağıdaki adrese döneriz. /Login.php?login\u003dandrey&password\u003d123, bu bilgileri iletmek için güvenli olmadığına karar veriyoruz. Herkes tarayıcınızı açabilir ve site adresini girmeye başlayabilir. Şifrelerinizi ve girişinizi görebilir.

Ancak posta yöntemiyle belirtildiysek, aşağıdaki talebi alırız:
Post / login.php (login \u003d Andrey & Password \u003d 123) Parantez içindeki neyin gizleneceği ve tarayıcıya kaydedilmemelidir.

Genel olarak, özetleme:
Alın, belirli bir formda belirli bir sayfada (sıralama, Blogdaki geçerli sayfayı, arama dizesi, vb.) Almaktır.
Post - Sayfa ekranını etkilemeyen mandrel verileri için, bu verilerin yalnızca komut dosyası yürütülmesi sonucunu etkiler (girişler, şifreler, kredi kartı numaraları, mesajlar vb.).

Ve örneğin bir daha iyi haber birleştirilebilir, örneğin
Post /index.php?page\u003dLogin (login \u003d Andrey & Password \u003d 123) Sanırım, ortaya çıktığını ve hangi dizinin hangi parametrelerin düşeceğini yeterince açıkladım.