Gönderme ve alma istekleri nelerdir. PHP ve GET ve POST veri aktarım yöntemleri. HTTP protokolü. Tanıtım

  • 03.11.2019

Ortak noktaları, aynı şekilde çalışmalarıdır. Aralarında teknik olarak bir fark yoktur. Ama ideolojik farklılıklar var.

Bunları PHP bağlamında ele alacağım. Lütfen HTTP protokolünün PHP ile dolaylı olarak ilişkili olduğunu unutmayın, çünkü html sayfalarını değiştirmek için oluşturulmuştur ve PHP her ikisinin de yeteneklerini genişletir.

GET isteği veri almak ve POST göndermek için kullanılır. (Bir hatırlatma olarak, teknik olarak aynı şekilde çalışırlar).

Bu nedenle, bu ideolojiye dayalı olarak PHP bağlamında şunları yaptılar:
1. Süper küresel diziler ($ _GET, $ _POST) PHP'yi her başlattığınızda varsayılan olarak oluşturulur.
2. Sorgu dizesinde soru işareti (?) varsa. Ondan sonra önemli olan her şey parametreler GET isteği, "anahtar" = "değer" biçiminde sunulurlar ve ayırıcı olarak ve işareti (&) karakteri kullanılır
Örnek:
GET /index.php?name=Andrey&surname=Galkin
bu bir sorgu dizesidir, 2 parametre vardır. bu parametreler $ _GET dizisinde sona erecektir.
3. $ _POST başka bir şekilde doldurulur. bu dizinin içeriği "istek başlıklarından" doldurulur. Yani, açık bir biçimde görünmeyen bir yerden. Bu tür başlıkları oluşturma rutininin tamamı tarayıcı tarafından üstlenilir. Her ne kadar bazen başlıklarda manuel olarak bir şeyler düzenlense de.

Çoğu zaman, gönderi isteği formlarda kullanılır (veri göndermek için).

Örneğin, giriş formu 2 alan giriş ve şifremiz var.

GET yöntemini kullandığımızı düşünelim. Ardından, formu gönderirken /login.php?login=Andrey&password=123 adresine gideceğiz, bu tür bilgileri bu şekilde aktarmanın hiç güvenli olmadığını kabul ediyoruz. Herkes tarayıcınızı açabilir ve site adresini girmeye başlayabilir, geçmişten şifrelerinizi ve girişlerinizi görebilir.

Ancak POST yöntemini kullanarak belirtmişsek, aşağıdaki isteği alırız:
POST /login.php (login = Andrey & password = 123) nelerin parantez içinde gizleneceği ve tarayıcıya kaydedilmediği.

Genel olarak özetlemek gerekirse:
GET, belirli bir sayfayı belirli bir şekilde elde etmektir (sıralama, mevcut blog sayfası, arama dizesi vb.).
POST - sayfanın görüntülenmesini etkilemeyen verilerin gönderilmesi için, bu verilerin yalnızca komut dosyası yürütme sonucunu etkilemesi (oturum açma bilgileri, parolalar, kredi kartı numaraları, mesajlar vb.).

Ve bir iyi haber daha, örneğin birleştirilebilirler
POST /index.php?page=login (login = Andrey & password = 123) Sanırım bundan ne çıkacağını ve hangi diziye hangi parametrelerin gireceğini yeterince açıkladım.

Son güncelleme: 1.11.2015

get yöntemi, sunucuya bir GET isteği yapar, yani tüm istek verileri sorgu dizesinde iletilir. Aşağıdaki parametreleri kabul eder:

    url: İsteğin yapılacağı kaynağın adresini içeren gerekli bir parametre

    data: istekle birlikte sunucuya gönderilecek basit bir javascript nesnesini veya dizesini içeren isteğe bağlı bir parametre

    başarı (veri, textStatus, jqXHR): isteğe bağlı parametre - istek başarılı olduğunda yürütülecek bir geri arama işlevi. Üç parametre alabilir: veri, sunucudan alınan veridir, textStatus, isteğin durumudur ve jqXHR, nesnenin genişletilmiş bir sürümünü temsil eden özel bir jQuery nesnesidir. XMLHttpRequest.

    dataType: "xml" veya "json" gibi bir dize olarak veri türünü içeren isteğe bağlı bir parametre

Çıkışta, get yöntemi, istek verilerini kapsülleyecek bir jqXHR nesnesi döndürür. Bu nesneye daha sonra daha yakından bakacağız.

Öyleyse, get yöntemini kullanarak önceki paragraftaki örneği yeniden yazalım:

$ (işlev () ($ ("düğme"). (işlev ()) ($ .get ("ajax.php", işlev (veri) ($ ("# haber")). html (veri); uyarı (" Veri yüklendi ");));)));));

İlk iki parametre burada kullanılır: kaynak adresi ve geri arama işlevi. Bu fonksiyonda data parametresi olarak sunucudan alınan datayı alıyoruz ve markup olarak seçim elemanına yüklüyoruz ($ ("# haber"). Html (data);). Özünde, aynı şeyi load yöntemiyle de yapabilirdik.

veri gönderme

data parametresini kullanarak ek veri gönderebiliriz. Örneğin, kimliğe göre veritabanından bir öğe almak için bir istek gönderebilirsiniz:

$ .get ("ajax.php", (id: "1"));

Ve bir GET isteğinde tüm veriler sorgu dizesine aktarıldığından, bu kod aşağıdakine benzer olacaktır:

$ .get ("ajax.php? id = 1");

Buna göre, sunucu tarafında, bu parametreyi alabilir ve onunla herhangi bir eylemi gerçekleştirebiliriz, örneğin, belirli bir kimlik için veritabanından bir öğe alabiliriz:

Veri türünü kullanma

Genellikle, sunucu belirli bir biçimde, örneğin json veya xml'de veri gönderdiğinde böyle bir durum vardır. Yani bir sunucu tarafı php dosyası şöyle görünebilir:

"Rus şampiyonasının başlangıcı", "tarih" => "13.07.2013")); ?>

Bu durumda, bir json nesnesi döndürür. Ardından, istemci tarafında, veri türünü açıkça yazabiliriz ve işlev sürecinde alınan verileri:

$ .get ("ajax.php", işlev (veri) ($ ("# haber"). boş (). ekle ("

Bu yazı, makalelerimden birinde sorulan bir sorunun cevabıdır.

Bu yazımda sizlere GET / POST / PUT / DELETE ve diğer HTTP yöntemlerinin ne olduğunu, ne için icat edildiğini ve REST'e uygun olarak nasıl kullanılacağını anlatmak istiyorum.

HTTP

Peki internetin ana protokollerinden biri tam olarak nedir? Bilgiçleri RFC2616'ya göndereceğim ve gerisini insan gibi anlatacağım :)

Bu protokol, İstek ve Yanıt adı verilen mesajlara dayalı olarak iki bilgisayar (istemci ve sunucu) arasındaki iletişimi tanımlar. Her mesaj üç bölümden oluşur: başlangıç ​​satırı, başlıklar ve gövde. Bu durumda, sadece başlangıç ​​çizgisi gereklidir.

İstek ve yanıt için başlangıç ​​satırları farklı bir biçime sahiptir - yalnızca şuna benzeyen isteğin başlangıç ​​satırıyla ilgileniyoruz:

YÖNTEM URI HTTP / VERSİYON ,

METHOD yalnızca HTTP istek yöntemi olduğunda, URI kaynak tanımlayıcıdır, VERSION protokol sürümüdür (sürüm 1.1 şu anda alakalıdır).

Başlıklar, iki nokta üst üste ile ayrılmış bir ad-değer çiftleri topluluğudur. Başlıklarda çeşitli hizmet bilgileri iletilir: mesaj kodlaması, tarayıcı adı ve sürümü, istemcinin geldiği adres (Yönlendiren) vb.

Mesajın gövdesi aslında iletilen verilerdir. Yanıtta, iletilen veriler, kural olarak, tarayıcının talep ettiği html sayfasıdır ve istekte, örneğin mesajın gövdesinde, sunucuya yüklenen dosyaların içeriği iletilir. Ancak bir kural olarak, mesajın gövdesi talebe hiç dahil edilmez.

Örnek HTTP iletişimi

Bir örneğe bakalım.

Sorgu:
GET /index.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ı: kapat
İlk satır istek satırıdır, geri kalanı başlıklardır; mesaj gövdesi eksik

Cevap:
HTTP / 1.0 200 Tamam Sunucu: nginx / 0.6.31 İçerik-Dil: ru İçerik-Türü: metin / html; charset = utf-8 İçerik-Uzunluk: 1234 Bağlantı: kapat ... HTML SAYFASININ KENDİSİ ...

Kaynaklar ve yöntemler

Başlangıç ​​sorgu dizesine geri dönelim ve URI gibi bir parametre içerdiğini hatırlayalım. Bu, Tekdüzen Kaynak Tanımlayıcısı anlamına gelir - tek tip bir kaynak tanımlayıcısı. Bir kaynak, kural olarak, sunucudaki bir dosyadır (bu durumda örnek URI, "/styles.css" dir), ancak genel olarak, bir kaynak soyut bir nesne olabilir ("/ blogs / webdev /" - belirtir "Web geliştirme" bloğu ve belirli bir dosya için değil).

HTTP istek türü (HTTP yöntemi de denir), sunucuya kaynakla hangi eylemi yapmak istediğimizi söyler. Başlangıçta (90'ların başında) müşterinin kaynaktan yalnızca bir şey isteyebileceği varsayıldı - onu elde etmek için, ancak şimdi HTTP protokolünü kullanarak gönderiler oluşturabilir, profili düzenleyebilir, mesajları silebilir ve çok daha fazlasını yapabilirsiniz. Ve bu eylemleri “alma” terimiyle birleştirmek zordur.

Kaynaklarla eylemleri HTTP yöntemleri düzeyinde ayırt etmek için aşağıdaki seçenekler icat edildi:

  • GET - bir kaynak almak
  • POST - bir kaynak oluşturma
  • PUT - kaynak güncellemesi
  • DELETE - bir kaynağı silme
HTTP spesifikasyonunun, sunucunun tüm yöntemleri (aslında 4'ten çok daha fazlasıdır) anlamasını gerektirmediğine dikkat edin - yalnızca GET gereklidir ve ayrıca sunucuya bir istek alırken ne yapması gerektiğini söylemez. belirli bir yöntemle. Bu, sunucunun bir DELETE /index.php HTTP / 1.1 isteğine yanıt verdiği anlamına gelir. zorunda değil sunucudaki index.php sayfasını silin, tıpkı GET /index.php HTTP / 1.1 isteğinde olduğu gibi zorunda değil index.php sayfasını size iade edin, onu silebilir :)

REST devreye giriyor

REST (Representational State Transfer) - bu terim, 2000 yılında HTTP protokolünün geliştiricilerinden biri olan Roy Fielding tarafından web uygulamaları oluşturmak için bir grup ilkenin adı olarak ortaya çıktı. Genel olarak REST, HTTP'den daha geniş bir alanı kapsar - diğer protokollerle diğer ağlarda kullanılabilir. REST, "kaynak" ve "fiil" kavramlarına dayanan istemci-sunucu etkileşiminin ilkelerini açıklar (bunları özne ve yüklem olarak anlayabilirsiniz). HTTP durumunda, kaynak URI'si tarafından tanımlanır ve fiil HTTP yöntemidir.

REST, farklı kaynaklar için aynı URI'nin kullanılmasından vazgeçmeyi önerir (yani, /index.php?article_id=10 ve /index.php?article_id=20 gibi iki farklı makalenin adresleri bir REST yolu değildir) ve farklı eylem için farklı HTTP yöntemleri. Yani REST yaklaşımı kullanılarak yazılmış bir web uygulaması, HTTP DELETE yöntemiyle erişildiğinde bir kaynağı silecektir (tabii bu, her şeyi ve her şeyi silebilmeniz gerektiği anlamına gelmez, ancak herhangi uygulamanın silme isteği, HTTP DELETE yöntemini kullanmalıdır).

REST, programcılara standartlaştırılmış ve her zamankinden biraz daha güzel web uygulamaları yazma yeteneği verir. REST kullanarak, yeni bir kullanıcı eklemek için URI, /user.php?action=create (GET / POST yöntemi) değil, sadece /user.php (kesinlikle POST yöntemi) olacaktır.

Sonuç olarak, mevcut HTTP belirtimi ve REST yaklaşımını birleştirerek, çeşitli HTTP yöntemleri nihayet anlamlı hale gelir. GET - bir kaynak döndürür, POST - yeni bir tane oluşturur, PUT - mevcut olanı günceller, DELETE - siler.

Sorunlar?

Evet, pratikte REST uygulamakla ilgili küçük bir sorun var. Bu soruna HTML denir.

PUT / DELETE istekleri, sunucuyla "manuel" (örneğin, curl veya hatta telnet aracılığıyla) iletişim kurarak XMLHttpRequest aracılığıyla gönderilebilir, ancak tam bir PUT / DELETE isteği gönderen bir HTML formu oluşturamazsınız.

Mesele şu ki, HTML spesifikasyonu, GET veya POST dışında veri gönderen formlar oluşturmanıza izin vermiyor. Bu nedenle, diğer yöntemlerle normal çalışma için bunları yapay olarak taklit etmeniz gerekir. Örneğin, Rack'te (Ruby'nin web sunucusuyla etkileşime girdiği mekanizma; Rails, Merb ve diğer Ruby çerçeveleri Rack kullanılarak yapılır), bir forma "_method" adlı gizli bir alan ekleyebilir ve adını belirtebilirsiniz. değer olarak yöntem (örneğin, "PUT") - bu durumda, bir POST isteği gönderilir, ancak Rack bir POST değil, bir PUT almış gibi davranabilir.

Modern web kaynakları, ziyaretçiye yalnızca bilgi sağlamakla kalmaz, aynı zamanda onunla etkileşime girer. Kullanıcıyla etkileşime geçmek için ondan bazı bilgiler almanız gerekir. Veri almanın birkaç yöntemi vardır, çok yaygın yöntemler ELDE ETMEK ve İLETİ... Ve buna göre PHP bu veri aktarım yöntemleri için destek var ELDE ETMEK ve İLETİ... Bu yöntemlerin nasıl çalıştığını görelim.
GET yöntemi Veri GET yöntemini kullanarak alınan bilgileri işlemek için çağrılan komut dosyasının URL'sine eklenerek iletilir. Bu yöntemi açıklamak için, tarayıcınızın adres çubuğuna kaynak URL'sini yazın ve önce bir soru işareti (?) ekleyin, ardından satır num = 10. Örneğin

http://domain.ru/script.php?num = 10


Yerel bir sunucunuz varsa, genellikle etki alanı localhost olur ve ardından önceki giriş şöyle görünür:

http://localhost/script.php?num = 10


Bu durumda num parametresini 10'a eşit olarak geçiyoruz. Aşağıdaki parametreleri scripte eklemek için ve işareti ayırıcısını (&) kullanmanız gerekiyor, örneğin

http: //domain.ru/script.php?num = 10 & type = yeni & v = metin


Bu durumda, komut dosyasına üç parametre ilettik: 10 değeriyle num, "yeni" değeriyle yazın ve "metin" değeriyle v.
Bu parametreleri komut dosyasına almak için yerleşik diziyi kullanmanız gerekir. $ _GET $ _GET ["sayı"], $ _GET ["tür"], $ _GET ["v"]... Bu dizi elemanları, geçirilen parametrelerin değerlerini içerecektir. Bu örneği göstermek için aşağıdaki içeriğe sahip bir script.php dosyası oluşturun.



PHP'de bir GET yöntemini kontrol etme


yankı ($ _GET ["sayı"]. "
");
yankı ($ _GET ["tür"]. "
");
yankı ($ _GET ["v"]);
?>




Ve şimdi bu dosyayı tarayıcıda arayın

http: //path/script.php?num = 10 & type = yeni & v = metin


ve geçirilen parametreleri tarayıcı penceresinde göreceksiniz. Ancak bu dosyayı http://path/script.php ek parametreleri olmadan çağırırsanız, yorumlayıcının vereceği hataları göreceksiniz. PHP, $ _GET dizisinin böyle bir elemanı yoktur. Kullanıcıdan alınan verileri kontrol etmeye birden fazla makale ayrılabilir, bu yüzden bu yazıda bu noktaya değinmeyeceğim.
Muhtemelen anladığınız gibi, kullanıcıyı tarayıcının adres çubuğuna veri yazmaya zorlamak çok iyi değil ve tamamen elverişsiz. Bu nedenle, kullanıcıdan veri almak için html formlarını kullanmanız gerekir. Basit bir html formu yazalım.


Numarayı girin

Bilgisayarın var mı?

Senin yorumun:





Oluşturulan form hakkında biraz yorum yapacağım. Formlar, form etiketi ile oluşturulur. Form alanları input, select, textarea etiketleri ile oluşturulur (bunun hakkında daha fazla bilgi edinebilirsiniz). Form etiketinde, action özelliği, form verilerini alacak komut dosyasının URL'sini belirtir. Bizim durumumuzda, bizim için zaten mevcut olan script.php dosyasını belirledik. Method niteliği, veri gönderme yöntemini belirtir. Yöntemi belirledik ELDE ETMEK... Artık form verilerinin hangi dosyaya aktarılacağını biliyoruz ve hangi şekilde onları nerede bulacağımızı bulmaya devam ediyor ?!
Bu formun verileri, URL'ye eklenerek tarayıcı tarafından web kaynağına iletilecektir: önce bir soru işareti (?) olacak, Daha sonra bir ve işareti (&) ile ayrılmış parametreler sunulacaktır. Parametre adı, herhangi bir form alanına yazılması gereken name özelliğinden alınacaktır. Parametre değeri alan tipine bağlı olacaktır. Alan metin ise, değer kullanıcı tarafından girilen metin olacaktır. Alan bir liste, bir radyo düğmesi veya onay kutusu grubuysa, parametrenin değeri, seçilen öğenin değer özniteliğinin değeri olacaktır. Formumuzdan bir örnekle açıklayayım. Kullanıcı giriş alanına 10 sayısını girerse, parametre adı num (giriş etiketinin ad özniteliğinin değeri) ve değer 10 (kullanıcı tarafından girilen sayı) olur. Buna göre, tarayıcı bir "num = 10" çifti oluşturacaktır. Kullanıcı listeden "Evet"i seçerse, parametre adı type (seç etiketinin name özniteliğinin değeri) ve değer, yes (seçenek etiketinin value özniteliğinin değeri) olacaktır. Buna göre, tarayıcı bir "tip = evet" çifti oluşturacaktır.
Şimdi bu formu forma.php sayfasına yerleştireceğiz.



GET yöntemi ve PHP kullanarak veri gönderme formu



Numarayı girin

Bilgisayarın var mı?

Senin yorumun:









Form alanlarına herhangi bir değer girin ve "Gönder" düğmesini tıklayın. Butona tıkladıktan sonra tarayıcı başka bir sayfa (script.php) açacak ve girdiğiniz veriler tarayıcı penceresinde görüntülenecektir. Nedeni açık sanırım: tarayıcı verileri script.php komut dosyasına iletecek ve komut dosyasında bu veriler işlenecek ve görüntülenecektir.
POST yöntemiŞimdi yöntemin nasıl çalıştığını görelim İLETİ.
Yöntemi kullanarak veri göndermek için İLETİ HTML formlarını kullanmanız gerekir. Hatırladığımız gibi, form etiketinin method özelliği, form verilerini gönderme yönteminden sorumludur. Bu nedenle, form etiketinin method özniteliğinde POST değerini belirtmeniz gerekir. Aksi takdirde, form GET yöntemiyle aynı olabilir. GET yöntemiyle veri göndermek için kullandığımız formumuzu POST yöntemiyle göndermek için değiştirelim.


Numarayı girin

Bilgisayarın var mı?

Senin yorumun:





Gördüğünüz gibi, yöntem ve eylem öznitelikleri dışında form aynı kalır. Veriler şimdi script_post.php betiğine iletilecektir. Formumuzu forma_post.php sayfasına yerleştirelim.



POST ve PHP ile veri gönderme formu



Numarayı girin

Bilgisayarın var mı?

Senin yorumun:









Şimdi formumuzdaki verileri işleyecek bir script yazmamız gerekiyor.
Komut dosyasında geçirilen yöntemle veri almak için İLETİ yerleşik dizi kullanmanız gerekir $ _POST... Bu dizinin anahtarları, parametrelerin adları olacaktır. Bizim durumumuzda, kullanmanız gerekir $ _POST ["sayı"], $ _POST ["tür"], $ _ POST ["v"]... Bu dizi öğeleri, geçirilen verilerin değerlerini içerecektir. Gördüğünüz gibi, GET yöntemini kullanmaktan farkı yalnızca $ _POST dizisinin kullanılmasıyla ifade edilir. Bu nedenle script_post.php dosyasını yazmamız zor olmayacaktır:



PHP POST Yöntem Doğrulaması


yankı ($ _POST ["sayı"]. "
");
yankı ($ _POST ["tür"]. "
");
echo ($ _POST ["v"]);
?>




Şimdi forma_post.php dosyasını bir tarayıcıda açın. Form alanlarına bazı veriler girin ve "Gönder" düğmesini tıklayın. Şimdiye kadar, muhtemelen POST yöntemi ile GET yöntemi arasındaki farkı fark etmişsinizdir - form verileri tarayıcının adres çubuğunda görünmüyordu. Yönteme göre veri İLETİ tarayıcının adres çubuğundan geçilemez. Bu hatırlanması gereken önemli bir farktır.
V PHP verilerin nasıl gönderildiğine bakılmaksızın - POST yöntemiyle veya GET yöntemiyle - verileri $ _REQUEST dizisini kullanarak alabilirsiniz. GET ve POST Yöntemlerinin Karşılaştırılması GET yöntemini kullanırken, veriler URL'ye eklenerek iletilir. Böylece, güvenlik açısından her zaman iyi olmayan kullanıcı tarafından görülebilirler. Ayrıca, iletilen maksimum veri miktarı tarayıcıya bağlı olacaktır - tarayıcının adres çubuğunda izin verilen maksimum karakter sayısına.
POST yöntemini kullanırken, veriler kullanıcıya görünmez (tarayıcının adres çubuğunda görüntülenmez). Dolayısıyla daha güvenlidirler ve dolayısıyla bu verileri işleyen program güvenlik açısından daha güvenlidir. Ayrıca, iletilen veri miktarı pratik olarak sınırsızdır.
Bir veri aktarım yöntemi seçerken, yukarıdaki özellikleri dikkate almanız ve en kabul edilebilir yöntem üzerinde durmanız gerekir.

Çoğu sitede aşağıdaki adresleri görebileceğinizi fark etmiş olabilirsiniz:

Http: //site/index.php?Blog = 2

Burada php bilmeden bile dosyadan bahsettiğimizi tahmin edebilirsiniz. index.php Ancak soru işaretinden sonra ne geldiğini çok az kişi biliyor. Oldukça basit: ? blog = 2 bu, "2" değerine sahip "$ _GET [" blog "]" global değişkeninin bildirimidir. Böylece, veri tabanından bilgileri görüntülemekten sorumlu olan komut dosyasına bir değişken iletiyorum. Her şeyi açıkça göreceğiniz küçük bir komut dosyası yazalım:

if (isset ($ _ GET ["blog"])) (
echo $ _GET ["blog"];
}
?>

Koşul aşağıdaki satırda olduğu için koşul ifadesini if ​​() kullanırız:

Isset ($ _ GET ["blog"])

isset (), parantez içinde belirtilen değişkenin var olup olmadığını, yani kodda tanımladığım koşulun olup olmadığını bulmanızı sağlar: $ _GET ["blog"] değişkeni varsa, içeriğini görüntüleyin. bu değişken ekranda İşte olanlar:

Bence gayet açık Genel bir değişken yaratılıyor $ _GET adres çubuğunda bildirdiğimiz tanımlayıcı ile ( bu durumda "blog" tanımlayıcısı ile)

Şimdi bir noktaya açıklık getirmek istiyorum. Diyelim ki iki değişken tanımlamamız gerekiyor, bunu nasıl yapacağız? İlk değişken "?" soru işaretinden sonra bildirilir. İkinci değişken, böyle bir "&" işaretinden sonra bildirilir ( Dürüst olmak gerekirse, bu işaretin ne olduğunu bilmiyorum), işte üç değişken bildirmeye bir örnek:

Http: //site/index.php?A = 1 & b = 2 & c = 3

İşte çıktı kodu:

if (isset ($ _ GET ["a"]) AND isset ($ _ GET ["b"]) AND isset ($ _ GET ["c"])) (
echo $ _GET ["a"]. "
";
echo $ _GET ["b"]. "
";
echo $ _GET ["c"]. "
";
}
?>

Durum şu şekilde olur:

$ _GET ["a"] global değişkeni ve $ _GET ["b"] global değişkeni ve $ _GET ["c"] global değişkeni varsa, bunları görüntüleyin, işte sonuç:

Formlar

biz varmadan önce İleti sorgular, formların ne olduğunu anlamanız gerekiyor? Neden gerekli? Çünkü $ _POST [""] global değişkeni formlar üzerinden oluşturulmaktadır. form nedir? Bunlar, kullanıcı tarafından bir tür bilgi girmek için kullanılan alanlardır. Alanlar tek satırda, geniş alanlar, ayrıca radyo düğmeleri, onay kutuları var. Her şeyi sırayla düzenleyelim ...

Form bir etikettir:


form öğeleri

Formun özellikleri var, en yaygın olanları listeleyeceğim:

Bir form oluşturalım:


form öğeleri

Bir işleyici dosyası olarak dosyayı koydum test.phpİçinde olduğu gibi, sizin için örnekler yazıyorum. Vakaların %99,9'unda bu yöntemler kullanıldığı için gönderi gönderme yöntemini belirledim. Formumuza bir isim de verdim - form

Şimdi form öğeleri dünyasına dalalım. Anlamanız gereken ilk şey, hemen hemen tüm öğelerin etiket olduğudur. tek fark özellikte tip bu etiketlerde. Kullanılan form öğelerini listeleyeyim:

Eminim bu tür alanları bir kereden fazla görmüşsünüzdür, bu yüzden burada dedikleri gibi: "yorum yok"

Şimdi, bundan sonra üzerinde çalışacağımız kısa bir eğitim anketini bir araya getirelim. Görevimiz, dolduran kişinin adını, cinsiyetini, hangi ülkeden olduğunu, en sevdiği rengi ve kullanıcının kendisi hakkında bir şeyler ekleyebileceği bir metin alanını bize bildirecek küçük bir anket oluşturmaktır. Ben de öyle yaptım:

Soyadınız Ad Soyadınız:

Cinsiyetin ne?
m
F

Hangi ülkedensin



Favori renkler):

Siyah:
Kırmızı:
Beyaz:
Bir diğeri:

Kendim hakkında:




Hemen hemen her etiketin bir özelliği olduğunu unutmayın. değer, bu ne için? Başka bir sayfaya aktaracağınız verileri kaydeder. umarım açıktır

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

Form için özniteliği kullandım eylem anlamı ile test.php bu, dediğim gibi, formdaki verilerin test.php dosyasına aktarılacağı anlamına geliyor.

POST isteği

Şimdi girdiğimiz bilgileri görmemizi sağlayacak php kodunu yazalım. Veriler nerede saklanıyor? Alma isteği durumunda, verilerimiz $ _GET [""] global değişkeninde saklandı. Bir gönderi isteği yapıldığında, veriler $ _POST [""] global değişkeninde olacaktır. Köşeli parantezler içinde, get global değişkeninde olduğu gibi tanımlayıcıyı yazmalısınız. Soru şu ki, bu tanımlayıcıyı nereden alabilirim? Bu yüzden form öğelerinde name niteliğine ihtiyacımız var! Global dizi gönderisinde bizim için anahtar görevi gören bu isimler. Pekala, senaryoyu açıklamaya başlayalım:

if (isset ($ _ POST ["gönder"])) (
echo "Ad:". $ _ POST ["fio"]. "
";
echo "Seks:". $ _ POST ["seks"]. "
";
echo "İkamet edilen ülke:". $ _ POST ["şehir"]. "
";

Yankı "Favori renk (ler):
";
echo $ _POST ["color_1"]. "
";
echo $ _POST ["color_2"]. "
";
echo $ _POST ["color_3"]. "
";
echo $ _POST ["color_4"]. "
";
echo "Hakkımda:". $ _ POST ["hakkında"]. "


";
}
?>

Yazdığımız if koşulu şöyle diyor: Eğer global bir değişken $ _POST ["submit"] varsa, o zaman ekranda verileri gösteriyoruz. Bu global değişken, gönder düğmesine tıkladığımızda oluşturulur, bu nedenle bu örnekte düğmede name niteliğine ihtiyacımız var. Düğme için name niteliğinin neden isteğe bağlı olduğunu merak ediyor olabilirsiniz? Oldukça basit. Genellikle programcı düğmeye basılmasını izlemez, gönderilen verileri izler. Örneğin iletişim formlarının doğru çalışması için bir düğmeye basılması değil, girilen bilgilerin doğruluğunu takip etmek ve bu bilgilerin girilip girilmediğini öğrenmek gerekir. Örneğimizde, gönderilen verileri kontrol etmedik, ancak örneği basitleştirmek için düğme tıklamasını izledik ... İşte elde ettiğimiz:

Çözüm

Pekala, bugün, betikler arasında veri aktarmanın iki yöntemini analiz ettik ve dörtnala formlarla tanıştık. Bu bilgilerin en azından bir yerde sizin için yararlı olacağını umuyorum. Herhangi bir sorunuz veya düşünceniz varsa, yorum yazın. İyi şanslar, bugün için her şeye sahibim!

Not: Bilgisayar oyunlarının daha da gerçekçi olmasını ister misiniz? Windows 7 için Directx 11, Windows'ta ücretsiz olarak indirilebilir! Harika grafiklerin tadını çıkarın!