PHP'deki HTML Formları ile veri aktarma. PHP _, eylem formunda özniteliğinde

Bu PHP Dersinde, dilin temel kavramları göz önünde bulundurulur: Bir web sayfası gönderme talebinde bulunur, PHP'nin ana kontrol yapıları, formları işleme sırasında, PHP formundan bir dosyaya veri kaydedin, PHP'deki tarih işlevi tarih ().

1. Tüm dosyaların olduğunu hatırlayın php. Yalnızca çalışırken test edin Denver Ve sadece tarayıcı adres çubuğundan. PHP dosyalarını çift tıklayarak çalıştıramazsınız!

2. Denver'ı çalıştırın.

Egzersiz 1. Basit formu işleme

Bu sınıf PHP'de, HTML sayfasındaki form işlemesini, form alanları için PHP değişkenlerinin oluşturulmasını düşünün.

1. Şekil 2'deki gibi bir form oluşturun. 3.1. Gönder düğmesine tıkladığınızda, formdaki verilerin yöneticiye aktarılacağı ve müşteri ekrandaki cevabı göreceği anlaşılacağı anlaşılmaktadır. Talep alındı. Bir form yazarken zorsanız, aşağıdaki kodu uygulayın ve klasöre kaydedin php_2. isim altında forma_bob.html. Size form işleyicisinin formunun nitelikte yazıldığını hatırlatırız. aksiyon. Etiket form.

Şekil 3.1.

2. Kullanıcının veri gönderdikten sonra bir cevap alması için, PHP'de bir form işleyicisi oluşturmanız gerekir. Aşağıdaki kodu oluşturun ve klasöre kaydedin. php_2. isim altında zakaz.php.

3. İşleyicinin performansını kontrol edin. Bunu yapmak için dosyayı çalıştırın forma_bob.html. Tarayıcıdan yazarak adres satırı Tarayıcı Adresi http: //localhost/php_2/forma_bob.html

4. Form alanında, herhangi bir sayı girin ve tıklayın sipariş vermek. Sonuç, Şekil 2'dedir. 3.2.

Şekil 3.2

Değişken Formlar

Sipariş formunun tüm kullanım noktası, klavyedeki girdiği müşterinin sırası hakkında bilgi almaktır. PHP senaryosunun içinde Form alanlarının her birine, hem form alanıyla aynı ada sahip olan bir değişkeye erişebilirsiniz. Dilde Php değişkenleri tanımak kolay çünkü dolar işareti başlıyorlar $ .

Alanın içeriğine erişebilirsiniz. tire Aşağıdaki şekillerde:

$ tireqty // kısa tarzı

$ _POST ['tireqty'] // orta stil

$ Http_post_vars ['tireqty'] // uzun tarzı

Değişkenlere referanslar için uzun bir tarz kullanacağız, ancak kısa kullanım sürümlerini oluşturmak için kullanım kolaylığı için. Bu uygun bir I. güvenli yöntem Seçilen sürümlerden ve ayarlardan bağımsız olarak, tüm sistemlerde etkili bir şekilde çalışan verileri manipüle edin.

Bir değişkenin içeriğini diğerine kopyalamak, atama işlemini, PHP dilinde bir eşitlik işareti kullandığının belirlenmesi için uygularız ( = ). Aşağıda belirtilen kod dizesi, adlandırılmış yeni bir değişken yaratır. $ tireqty ve içeriği aktarır $ _POST ['tireqty'] Bu yeni değişken için:

$ tireqty \u003d $ _ post ['tireqty']

Bu komut dosyası herhangi bir çıktı oluşturmadığından, fark yoktur, tanımlayıcının üstüne veya altına yerleştirilecektir. . Genellikle bu blok, komut dosyasının başlangıcına yerleştirilir.

5. Dosyada zakaz.php. Kodu aşağıdaki şekilde değiştirin ve formun performansını kontrol edin. Sonuç, Şekil 2'dedir. 3.3. Numaralar, hangi verilerin girdiğinize bağlı olarak değişebilir.

Şekil 3.3.

Alıştırma 2. "Bob'tan oto parçaları" formu için bir hesap makinesi oluşturma

Bu PHP dersinde, hesaplamalar için ana aritmetik PHP işlevlerini göz önünde bulundurun.

1. Dosya forma_bob.html. İsminin altına kaydet forma_bob_2.html

2. Dosya zakaz.php. İsminin altına kaydet zakaz_2.php.

3. Dosyada. forma_bob_2.html "Bob'tan otomobil parçalarının" şeklidir, böylece Şekil l'deki gibi görünümü alır. 3.4. İşleyicinin adını değiştirmeyi unutmayın zakaz_2.php.. Zorunu bulursanız, aşağıdaki kodu uygulayabilirsiniz.

Şekil 3.4.

4. Dosyada yeni bir form işleme oluşturun zakaz_2.php.Önceki derslerden edinilen bilgiyi kullanmak. İşleme aşağıdaki çıktı ve koşulları içermelidir:

1. Her ürünün maliyeti sabit tarafından belirlenir. PHP sabiti tanımlama işlevi ile ayarlanır. Örnek tanımlayın ("Pokrprice", 10); İlk fonksiyon parametresi, büyük harflerle yazılan sabitin adıdır, ikinci parametre sabitin değeridir.

2. Mantıksal İşlem VEYA ifade etmek ||

3. Mantıksal İşlem VE ifade etmek && .

4. İşlemleri karşılaştırın: daha fazlası > , Daha az < , daha fazla veya eşit\u003e \u003d, daha az veya eşit <=

5. Bir bilgisayardan zaman okuyan fonksiyon tarih ("h: i, j f")

6. noktalı virgül sayısını biçimlendiren fonksiyon number_Format.. Misal number_Format ($ Sumnalog, 2). İlk parametre, işaretleri biçimlendiren bir değişkendir, ikinci parametre noktalı virgül sayısıdır.

7. Bir form işleme oluşturmayı zor bulursanız, aşağıdaki kodu kullanabilir (Şek. 3.8):

Şekil 3.8.

Alıştırma 3. Bir metin dosyasındaki formdan veri kaydetmek

PHP dersimizde, formdan bir metin dosyasına ve şeklin işlenmesi durumunda tarih () tarihi işlevine veri kaydetmeyi de düşünüyoruz.

1. Sürücü dosyasında "Bob ile ilgili Otomatik Parçalar" formu son kapanışın ardından, kodu ekleyin.

Şekil 3.9.

2. Programı kontrol edin. Metin dosyası siparişler.txt Otomatik olarak oluşturulur, içeriğini görüntüleyin.

Kontrol görevi

Bu dersi inceledikten sonra, PHP kazanılan bilgileri güvence altına almak için bir referans işi yapmaya davet edilir.

Şekil 3.10

1. Şekil 2'deki gibi bir şekil oluşturun. 3.10.

2. Şekil 2'deki gibi sipariş sonuçlarını görüntüleyen bir form işleme oluşturun. 3.11 (Sonuçlar, forma girilen verilere bağlı olarak değişecektir.

3. Sipariş sonuçları ayrı bir metin dosyasına kaydedilmelidir.

Sipariş listesi aşağıdakileri yansıtmalıdır:

  • Mal cinsi.
  • Maliyet 1 PC. mal.
  • Sipariş edilen malların sayısı.
  • Teslimatsız siparişin toplam maliyeti, satış vergisi ve indirimler.
  • Teslimat ücreti.
  • Satış vergisinin değeri.
  • Yüzde ve ruble indirim.
  • Sipariş değeri, teslimat, satış vergisi ve indirimleri dikkate alarak.
  • Teslimat adresi.

Sorunun Koşulları:

  1. Malların maliyeti:
    • kolları - 10 ruble.
    • kitaplar - 100 ruble.
    • hatıra - 1000 ruble.
    • bilgisayar - 10.000 ruble.
  2. Satış Vergisi -% 18. Vergi, indirimi dikkate alan tüm malların toplam değerine eklenir.
  3. Nakliye maliyeti - 500 ruble. Nakliye maliyeti, indirim ve satış vergisini dikkate alarak tüm malların toplam değerine eklenir.
  4. İndirimler:
    • Sipariş verirken, 5 adetten az kollar veya kitaplar. İndirim -% 5, 5 ila 10 ADET. - 10, 10 adet üstünde. - yirmi%;
    • Hatıra Eşyası veya Bilgisayarları 10 ila 20 ADET sipariş ederken. İndirim -% 10, 20 ila 30 ADET. -% 20, 30 adet üzerinde. -% 40.

"PHP formu, PHP formuyla çalışıyor" - PHP eğitiminin sekizinci dersi. Bu derste, PHP'nin işleme biçimleri hakkında konuşacağız.

Formlarla çalışmak

PHP, kullanıcının form alanlarına girdiği verileri işleme yapmanızı sağlar. Gönder düğmesini etkinleştirdikten sonra, veriler sayfaya gönderilir - eleman alanı alanında belirtilen işleyici

. İşleyici sayfasında, PHP komut dosyası, örneğin elde edilen veriler üzerine belirli işlemleri gerçekleştiren, belirtilen kullanıcı gereksinimlerine bir harf oluşturur.

Verileri işleyiciye aktarın.

Formdan gelen veriler, sunucuya bir çift ad / değer dizisi olarak iletilir. Bu, her bir form elemanının adının (etiketin ad özniteliğinde görünen) bu öğenin (girilen veya seçilen kullanıcının) değeri ile ilişkili olduğu anlamına gelir. İletimde kullanılan format adı / değeri, adın bir görünümüne sahiptir \u003d değer.

Formdan işleyici programına iletilen tüm veriler aşağıdaki süperglobal dizilerde bulunur: $ _ GET, $ _POST ve $ _REQUEST.

$ _GET - GET yöntemiyle iletilen tüm değerleri içerir.

$ _POST-POST yöntemiyle iletilen tüm değerleri tutar.

$ _Request-POST ve GET yöntemler tarafından iletilen tüm değerler.

Soyadı:

Kent:

İleti:

Düğmeye bastıktan sonrasunmak Tüm veriler işleyiciye iletilirproses.php. . Bu form yöntemi kullandığındanİLETİ. Tüm değişkenler dizinin içine yerleştirilecektir. $ _POST.

Şimdi bir işleyici oluşturalım:

Echo "adı: " $ _POST [FNAME]. "
»;
Echo "Soyadı: " $ _Post ["lname"]. "
»;
Echo "şehir: " $ _POST ["şehir"]. "
»;
Eko "
»;
"Mesajınız:" exo. $ _POST ["mesaj"];
?>

Bu dosyayı form sayfasına göre dizine yerleştirin. Şimdi, formu kullanırken, veriler işleyiciye aktarılır, bu da kullanıcı verilerini içeren bir mesaj görüntüleyecektir.

Array $ _Request

SuperGlobal Dizisinin Kullanımı$ _Request Özellikle verilerin nasıl aktarıldığı bilinmediğinde, çok uygundur.

Foreach döngüsü sayesinde, $ _REQUEST dizisinin değerini çözebilirsiniz.

İÇİNDE bu örnek $ _REQUEST dizisinin tüm değerleri ekranında görüntüleniriz. Bu, kullanıcı tarafından veri girişinin doğruluğunu kontrol etmek için yapılabilir. Yani, kullanıcı verilere formun içine girer, Gönder'i tıklatır, ancak ekranda görüntülenen verileri işlemek yerine, girilen verilerle mesaj ve yazıt onaylamak veya reddetmek. Bu fikir birçok sitede ve genel olarak birçok programda uygulanır.

Bu derste, form formlarını işlemek için PHP kullanmayı öğrendik. Gördüğünüz gibi PHP güçlü araç Oluşturan işleme, kullanıcı verilerini bir veritabanında bir veritabanında bir veritabanında kaydetme, kullanıcı postasına bir mesaj göndermek, kullanıcı postasına bir mesaj göndermenize olanak tanır.

Bir sonraki derste, doğrudan işlemden önce kullanıcı tarafından girilen verileri kontrol etmeyi öğreneceğiz.

Tarayıcınızda bir javascript engellendi. Site çalışması için JavaScript'e izin ver!

Formlarla çalışmak

HTML-Formlar, veri sayfasının web sayfasından veri aktarmak için kullanılır. PHP'de formlarla çalışmak için bir dizi özel fon sağlar.

Önceden tanımlanmış değişkenler

PHP'de, belirli bir ortamda tüm uygulamaları gerçekleştirirken değişmeyen bir dizi önceden tanımlanmış değişken vardır. Ayrıca ortam değişkenleri veya değişkenleri de denir. Apache'nin web sunucusunun ayarlarını yanı sıra bu tarayıcının istek hakkında bilgi yansıtıyorlar. URL değerleri, sorgu dizeleri ve diğer HTTP istek öğeleri elde etmek mümkündür.

Önceden tanımlanmış tüm değişkenler $ Küresel İlişkili Dizide yer almaktadır. Çevre değişkenlerine ek olarak, bu dizi ayrıca programda tanımlanan genel değişkenler içerir.

Örnek 1.

$ Globals Dizisini Görüntüleyin $ Value) echo "\\ $ globals [\\" $ tuşu \\ "] \u003d\u003d $ değeri
"; ?>

Sonuç olarak, çevre değişkenleri de dahil olmak üzere ekranda tüm genel değişkenlerin bir listesi görünecektir. En sık kullanılanlar:

DeğişkenAçıklamaBina
$ _Server ["http_user_agent"]İsim ve Müşteri SürümüMozilla / 5.0 (uyumlu; GoogleBot / 2.1; + http: //www.google.com/bot.html)
$ _Server ["remote_addr"]IP adresi144.76.94.14
getenv ("http_x_forwarded_for")Dahili İstemci IP Adresi
$ _Server ["Request_method"]İstek yöntemi (GET veya POST)Almak.
$ _Server ["query_string"]URL ile iletilen kodlanmış verileri talep ederken
$ _Server ["Request_url"]Bir sorgu dizesi de dahil olmak üzere müşterinin tam adresi
$ _Server ["http_referer"]İsteğin yapıldığı sayfanın adresi
$ _Server ["php_self"]Programın Yolu Yürütülmesi/İndex.php.
$ _Server ["server_name"]Alan adıİnternet sitesi
$ _Server ["Request_uri"]Yol/Php/php_form.php.

Kullanıcı Girişi İşleme

PHP giriş işleme programı, giriş kalıpları içeren HTML metninden ayrılabilir ve bir sayfada düzenleyebilirsiniz.

Örnek 2.

Giriş işleme örneği

"Yöntem \u003d" POST "\u003e

Kart numarası:



Burada veri aktarımı yok, çünkü Bir alandan oluşan bir form, tuşuna bastığınızda otomatik olarak iletilir. .

Seçilen tüm değerlere erişmek için çok değerli bir seçim içeren bir öğeyi işlerken, elementi adına bir kaç köşeli parantez eklemeniz gerekir. Birden fazla element seçmek için, CTRL tuşunu basılı tutun.

Örnek 3.1.

Liste



Örnek 3.1'in sonucu:

Çay kahve süt jambon peyniri

Örnek 3.2.

EX1.HTM dosyasından işleme listesi

    "; Foreach ($ ürün olarak $ değer olarak) echo"
  • $ Değeri "; echo"
"; ?>

Örnek 4. Onay Kutusu-Bayraklarından Değerleri Alın

$ V) (eğer ($ v) echo "Programlama dilini biliyorsanız $ K!
"; Else Echo" Programlama dilini bilmiyorsunuz $ k.
"; } } ?>
"Yöntem \u003d" POST "\u003e Hangi programlama dillerini biliyorsunuz?
Php.
Perl

Örnek 4'in sonucu:

Hangi programlama dillerini biliyorsunuz? Php. Perl

Örnek 5.

"; ?>
"Yöntem \u003d" POST "\u003e

Gerçek alan adları hakkında endişelenmeden formları işleyebilirsiniz.

Bunu yapmak için, (iletim yöntemine bağlı olarak), $ http_get_vars veya $ http_post_vars'ın ilişkisel bir dizisini kullanabilirsiniz. Bu diziler, iletilen formun her bir elemanı için çift isim / değer içerir. Eğer umursamıyorsanız, bir ilişkisel dizi $ _REQUEST kullanabilirsiniz.

Örnek 6.

Transfer yönteminden bağımsız olarak rastgele girişin işlenmesi $ Value) echo "$ key \u003d\u003d $ değeri
"; ?>

Örnek 7. "@" operatörünü kullanarak düğmeye basmak.

">

Header () işlevini kullanarak, tarayıcı başlığını gönderme, kullanıcıyı yeni bir sayfaya yönlendirebilirsiniz.

Örneğin:

Dosyayı sunucuya aktarın. Dosyayı dökün. Yükleme.

PHP dosyaları sunucuya iletmenizi sağlar. Dosyayı iletmek için tasarlanmış HTML formu, ektype \u003d "Multipart / Form-Data" argümanı içermelidir.

Ek olarak, Max_File_Size adına sahip gizli bir alan, dosyayı kopyalamak için dosyanın önündeki formda olmalıdır. İletilen dosyanın maksimum boyutu bu Gizli alanda kaydedilmelidir (genellikle 2 MB'den fazla değil).

Alanın kendisi dosyayı aktarmaktır - türlü giriş elemanı Type \u003d "" Dosya "argümanı ile.

Örneğin:

"Yöntem \u003d" POST "\u003e

Dosya sunucuya aktarıldıktan sonra, benzersiz bir ad alır ve geçici dosyalar için dizinde saklanır. Dosyanın tam yolu, adı bu dosyayı aktarmak için adı alan adıyla eşleşen Global değişkene kaydedilir. Ek olarak, PHP, diğer global değişkenlerde iletilen dosya hakkında daha fazla bilgi korur:

Örnek 8.

Aktarılan dosyanın işlenmesi "; Echo" adı: "$ _ dosyaları [" userfile "] [" İsim "]."
"; Echo" boyutu: "$ _ dosyaları [" userfile "] [" Boyut "]."
"; Echo" tipi: ". $ _ Dosyaları [" userfile "] [" Tip "]."
"; } ?>
"Yöntem \u003d" POST "\u003e



Dosyaları sunucuya indirme örnekleri

İndirilen dosyanın kod kodlama sunucusuyla ilgili sorunlar varsa, kod sembolü 0x00 Bir boşlukla değiştirildi (kod sembolü) 0x20), Dosyaya ekle httpd.conf. Apache kataloğundan (/ usr / local / apache) aşağıdaki satırlardan.

Charsetrecodemultipartforms kapalı

Uygulamadaki en yaygın görevlerden biri, geri bildirim biçimini uygulamaktır. Tobash, HTML kodunu yazarak, CSS'de tasarlama, kullanıcıdan alınan verileri işleyecek ve postalarımıza gönderecek bir PHP betiği oluşturan bir PHP betiği oluşturarak, giriş verilerinin korunmasını yeterince girmesini sağlayan bir JS komut dosyası yazan bir PHP betiği oluşturma Spam'umuzun posta kutumuzun botların saldırılarından düşmediğinden emin olmak için yeterliliğimiz.

Yukarıdaki anların tümü incelememizde göz önünde bulundurulacak ve ayrıntılı olarak yorumlanacaktır.

Yani, bir geri bildirim formu oluşturmaya başlıyoruz:

Html

Her şeyden önce, HTML kodunu yazıyoruz, kullanıcıyı dolduracak alanlara ayarlanır. Verilmeye devam edecekler. Kod kodu şöyle görünür:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" > İsim: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" > Telefon: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" > E-posta: < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" > İleti: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Göndermek" />

Ve görsel olarak böyle görünüyor:

Katılıyorum, her şey çirkin ve hiçbir şey açık değilken, ama yeni başladık.

Yukarıdaki kod detayını düşünün:

  • < form method= "post" action= "mail.php" > …


    Bir form oluşturmak için form etiketini kullanmanız gerekir. Kod tercümanı için formun başlangıcını ve sonunu belirleyen budur. Herhangi bir etiket gibi, bir bütün nitelik kümesi vardır, ancak zorunlu formlar sadece iki oluşturur, bu bir yöntemdir (sunucuya bir istek gönderme yöntemi, formlar için formlar için bir istek gönderme yöntemi) ve eylemdir (formdaki yolun yolunu gösterir. Dosya, özellikle bu dosyadaki, kullanıcının girdiği postaya gönderecek olan bir PHP komut dosyası içerecektir, bu dosyada bu dosyanın mail.php olarak adlandırıldığını ve sorudaki sayfa olarak aynı site dizininde yattığını görüyoruz. ).
  • < input maxlength= "30" type= "text" name= "name" />


    Sonra, bunun yerine takip ediyoruz. Bu, kullanıcıların ihtiyaç duyduğunuz bilgileri gireceği gerçek form alanlarıdır (Type \u003d "Metin" yazacağını söylüyor. MaxLength özniteliği, kullanıcıya bu alan formunda kaç karakter girebileceğini gösterir. En önemli özellik ismidir - belirli bir alanın adını belirtir. Bu isimlerde gelecekteki PHP komut dosyası içinde gelen bilgileri işler. İsterseniz, imleci içeri girerken, alanın içindeki metni görüntüleyen yer tutucu özniteliğini belirleyebilirsiniz. PlaySholder problemlerinden biri, bazı eski tarayıcılar tarafından desteklenmemesidir.
  • < label for = "name" > İsim:


    Yer sahiplerini reddettiğimizde kullanılır. Her zamanki alan imzası, form özniteliği, alanın bu imzayı özel olarak içerdiğini bildirir. Bize ilgi alanının değeri adı ile gösterilir.
  • < textarea rows= "7" cols= "50" name= "message" >


    Ayrıca, girişin kullanıcı bilgileri tarafından uygulanması amaçlandığı için, yalnızca bu sefer alan uzun mesajlar için keskinleştirilir. Satırlar, dizgelerdeki alanın boyutunu, kollarda karakterlerde belirtir. Genel olarak, alanımızın yüksekliğini ve genişliğini belirlerler.
  • < input type= "submit" value= "Göndermek" />


    Bunun bir form göndermek için bir düğme olduğu gerçeği, Bize Tip \u003d "Gönder" ve değer, bu düğmenin içinde olacak metni ayarlar.
  • < div class = "right" >


    Sadece daha fazla görsel tasarım formu için kullanılır.

CSS.

Geri bildirim formumuzun sunulabilmesi için, verilmesi gerekiyor. Aşağıdaki sonucu elde etmek için:

Bu kodu kullandık:

form (Arka Plan: # F4F5F7; Dolgu: 20px;) Form. Sol, form. Sağ (ekran: satır içi blok; dikey- hizala: üst; genişlik: 458px;) formu. Doğru (Dolgu-Sol: 20px;) Etiket (Ekran: Blok; Yazı Tipi- boyutu: 18px; Metin - Hizala: Merkez; Marj: 10px 0px 0px 0px;) Giriş, TextArea (Sınır: 1px Katı # 82858D; Dolgu: 10px; Yazı Tipi: 16px; Genişlik: 436px;) Textarea (Yükseklik: 98px; Marjı alt: 32px;) Giriş [Type \u003d "Gönder"] (Genişlik: 200px; Şamandıra: Sağ; Sınır: Yok; Arka Plan: # 595B5F; Renk: #FFF; Metin- Dönüştür: Büyük harf;)

CSS'yi boyamak için detaylı olarak, noktayı görmüyorum, dikkatinizi sadece kilit noktalara çekeceğim:

  1. Formdaki her etikete kayıt yazmayın. Seçicilerinizi oluşturmaya çalışın, böylece bir çift kod satırı ihtiyacınız olan tüm öğeleri yapar.
  2. Çizgileri kullanmayın ve girintiler yaratmayın, türüne göre ekstra etiketler < br>, < p> Ve böylece, bu görevler ile CSS, ekran mülkü ile mükemmel bir şekilde başa çıkıyor: Blok ve Dolgu ile Marj. Neden kullanmıyorum hakkında daha fazla bilgi < br> Maddede BR makalesinde okuyabilirsiniz ve gerekli mi? .
  3. Tablo düzenini formlar için kullanmayın. Bu, bu etiketin anlambilimini çelişiyor ve arama motorları anlamsal kodu sever. Görsel bir belge yapısı oluşturmak için, yeterince DIV etiketlerine ve CSS'de belirlenen ekran özelliklerine sahibiz: satır içi blok (üst üste blok oluşturur) ve dikey hizala: üst (etrafında çalışmalarına izin vermez) Ekran), onlara gerekli yüksekliği ve volata soruyoruz, gereksiz bir şey yok ve her şey ihtiyacımız olarak bulunuyor.

Site tasarımında zamanlarını kurtarmak isteyenler için, özellikle kendi kendine yazılmış siteler oluştururken CSS çerçeveleri kullanmayı tavsiye edebilirim. Bu plandaki seçimim Twitter Bootstrap'dır. Kullanımı ile formların tasarımında ders görülebilir.

Php.

Peki, formumuzu uygulanabilir hale getirme zamanı.

Sitenin kök dizinimize gidiyoruz ve daha önce form etiketinin form özniteliğindeki yolu gösterdiğimiz bir mail.php dosyası oluştururuz.

Sonuçta, kodu şöyle görünecek:

Mesajınız başarıyla gönderilmiştir \\ "JavaScript: Tarihçe.back () \\"\u003e Geri dön

" ; if (! Boş ($ _POST ["ad"]) ve! Boş ($ _POST ["telefon"]) ve! Boş ($ _POST ["Posta"]) ve! Boş ($ _POST ["mesaj"]))) ($ isim \u003d trim (strip_tags ($ _POST ["ad"])); $ telefon \u003d trim (strip_tags ($ _POST ["telefon"])); $ mail \u003d trim (strip_tags ($ _POST ["posta"]) ); $ Mesaj \u003d trim (strip_tags ($ _POST ["mesajı"])); Posta ("yazdınız:" $ isim. "
Onun numarası: "$ telefon."
Postası: "$ posta. "
Onun mesajı: "
. $ Mesaj,); Eko. "Mesajınız başarıyla gönderildi!
Yakında cevabı alacaksın
$ geri "
; çıkış; Başka (yankı; çıkış;)?\u003e

Bu belgenin HTML ve CSS bölümlerinin tartışılması atlanabilir. Özünde, bu, isteğiniz ve gerekliliğinizi ayarlayabileceğiniz sitenin normal sayfasıdır. Bunun en önemli kısmını düşünün - PHP Form İşleme Komut Dosyası:

$ geri \u003d "

\\ "JavaScript: Tarihçe.back () \\"\u003e Geri dön

" ;

Bu dize için önceki sayfaya dönmek için bir bağlantı oluştururuz. Önceden bilmediğimiz için, kullanıcının bu sayfaya düşeceğini, küçük bir JS işlevi ile yapılır. Gelecekte, ihtiyacımız olan yerlerde onu geri çekmek için bu değişkeni basitçe ifade edeceğiz.

if (! Boş ($ _POST ["ad"]) ve! Boş ($ _POST ["telefon"]) ve! Boş ($ _POST ["Posta"]) ve! Boş ($ _POST ["mesaj"]))) ( // işleyicinin iç kısımları ) Başka (yankı "Bir mesaj göndermek için tüm alanları doldur! $ Geri"; çıkış; )

Burada, tarlaların dolgunluğundaki şekil kontrolünü vidalayın. Tekliflerde, $ _POST ["İsim"] açısından tahmin ederken, inkontinimizin ad özniteliğinin değerini yazıyoruz.

Tüm alanlar doldurulursa, komut dosyası verileri iç kısmında işlemeye başlayacaktır, ancak en az bir alan doldurulmamışsa, mesaj dolumunu göndermek için tüm yankı form alanlarını doldurma isteği ile mesaj görüntülenecektir. Tüm alanlar! $ geri "ve ilk dizgiyi oluşturduğumuz önceki sayfaya geri dönmek için referans.

Form işleyicisinin içine dale ekleyin:

$ İsim \u003d Trim (Strip_Tags ($ _POST ["NAME"])); $ Telefon \u003d trim (strip_tags ($ _POST ["telefon"])); $ Posta \u003d trim (strip_tags ($ _POST ["posta"])); $ Message \u003d Trim (Strip_Tags ($ _POST ["mesajı"]));

Böylece, kullanıcı tarafından girilen verileri HTML etiketlerinden ve gereksiz boşluklardan temizledik. Bu, kendinizi bize gönderilen mesajlarda kötü amaçlı bir kod almaktan korumamızı sağlar.

Çekler karmaşık olabilir, ancak zaten isteğinizdadır. Sunucu tarafındaki minimum koruma, daha önce ayarladık. Ayrıca, JS kullanarak müşteri tarafında yapacağız.

Sunucu tarafındaki formu JS lehine korumayı tamamen reddetmesi önerilmez, çünkü son derece nadir olmasına rağmen, ancak unitümler, tarayıcıda bağlantısı kesildi.

Etiketleri temizledikten sonra, bir mesaj göndermek ekleyin:

posta ( "[email protected]", "Address_Isight ile mektup""Ben sana Yazdım:". $ İsim. "
Onun numarası: "$ telefon."
Postası: "$ posta. "
Onun mesajı: "
. $ Mesaj, "İçerik türü: Metin / HTML; Charset \u003d Windows-1251") ;

Bu çizgidir ve oluşumuyla meşgul ve bize bir mesaj gönderir. Aşağıdaki gibi doldurulur:

  1. "[email protected]" - Tırnaklar Arasında Posta Ekle
  2. "Address_name ile mektup", postaya gelecek mesajın konusudur. Burada bir şey yazabilirsiniz.
  3. "Yazdınız:" $ isim. " < br /> Onun numarası: "$ telefon." < br /> Postası: "$ posta." < br /> Mesajı: "$ Mesaj - Mesaj metninin kendisini oluşturuyoruz. $ İsim - Kullanıcı tarafından doldurulan bilgileri, önceki adımdan gelen alanlara itirazda bulur, alıntılarda bu alanın ne anlama geldiğini açıklayın. < br /> Hattın transferini, böylece mesajın genel olarak okunabilmesi içindir.
  4. İçerik tipi: Metin / HTML; Charset \u003d Windows-1251 - Sonunda, mesajda iletilen veri türünün ve kodlamasının net bir göstergesi vardır.

ÖNEMLİ!

Belgenin "kafasına" olarak belirtilen kodlama ( < meta http- equiv= "Content-Type" content= "Metin / HTML; Charset \u003d Windows-1251" /> ), içerik türünden kodlama: Metin / HTML mesajı; charset \u003d Windows-1251 ve genel olarak, PHP dosyasının kodlaması, aksi takdirde "Krakoyarbra", Rusça veya İngilizce harfler yerine görüntülenecektir.

Birçoğu, açıkça gönderilen mesajın kodlamasını, ancak bazı posta istemcilerinde, bu nedenle, gelecekte sorunlar olabilir (okunamayan mektuplar postaneye gel), bu yüzden bunu belirtmesini tavsiye ederim.

Yeterli veri için formun doğrulanması

Böylece kullanıcıların dikkatsizlik için alanlara gülmemesi ve her şeyi doldurmadıkları, giriş verilerini doğrulamak için doğru bir şekilde ihtiyaç duyar.

Bu, hem sunucu tarafındaki ve istemci tarafındaki JS'de hem PHP tarafından yapılabilir. İkinci seçeneği kullanıyorum, çünkü böylece bir kişi, sayfalarda ek geçiş yapmadan hemen ne yaptığını ve hatayı düzelttiğini öğrenebilir.

Script kodu aynı dosyaya, formun bir HTML kısmına sahibiz. Olayımız için şöyle görünecek:

< script> Fonksiyon kontrolü (form) (Form) (var name \u003d form. Name. Değer; var n \u003d İsim. Eşleşme (/ ^ [a-za-zaza] * [a-za-za-i] + $ /); if (! N) (Uyarı ( "İsim yanlış girilir, lütfen hatayı düzeltin"); Yanlış döndür; ) Var telefonu \u003d form. Telefon. Değer; Var p \u003d telefon. Eşleşme (/ ^ [0 - 9 +] [0 - 9 -] * [0 - 9 -] + $ /); if (! p) (uyarı ( "Telefon yanlış girilir"); Yanlış döndür; ) Var mail \u003d form. Posta. Değer; Var m \u003d mail. Maç (/ ^ [a-za-z0-9] [a-za-z0-9 \\. _-] * [A-Za-Z0-9 _] * @ ([A-ZA-Z0- 9] + ([A-za-z0-9 -] * [a-za-z0-9] +) * \\.) + [A-za-z] + $ /); if (! m) (uyarı ( "E-posta yanlış girildi, lütfen hatayı düzeltin"); Yanlış döndür; ) Doğru döndürün; )

Şimdi, şimdi olağan analiz:

İçin, gönder düğmesine tıklayın, test ettik Komut dosyamızın başlatılmasını form etiketine gizliyoruz:

< form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

Şimdi, noktalarda, doğrulamanın bileşimini alırız:


Böyle bir mini çekin her biri için her bir mini çek yazılır. Bir ekran görüntüsünde kırmızı bir kare ile tahsis ettiğim bir alanda bir inceleme, diğer alanlarda benzer bir yapıya sahiptir ve bir alan eklemek veya kaldırmak gerekirse, artık kolayca yapabilirsiniz.

PHP'nin en önemli avantajlarından biri, HTML formlarıyla nasıl çalıştığıdır. Burada asıl şey, formun her bir unsurunun PHP programlarınız için otomatik olarak kullanılabilmesidir. PHP'deki formların kullanımı hakkında ayrıntılı bilgi için, bölümü okuyun. İşte HTML formunun bir örneği:

Örnek # 1 Basit HTML Formu

Adınız:

Yaşınız:

Bu formda özel bir şey yoktur. Bu, özel etiketleri olmayan sıradan bir HTML formudur. Kullanıcı formu doldurduğunda ve Gönder düğmesine basıldığında, Action.php sayfası aranacaktır. Bu dosya gibi bir şey olabilir:

Örnek # 2 Bu formları görüntüleyin

Merhaba, .
Sen yıllar.

Bu programın çıktısına bir örnek:

Merhaba, Sergey. 30 yaşındasın.

Kod parçalarını dikkate almazsanız htmlspecialchars () ve (int)Bu kodun çalışma prensibi basit ve anlaşılabilir olmalıdır. htmlspecialchars () "Özel" HTML karakterlerinin doğru kodlamasını sağlar, böylece kötü amaçlı HTML veya JavaScript sayfanıza eklenir. Age alanı, bunun bir numarası olması gerektiğini bildiğimiz için, basitçe dönüştürebiliriz. tamsayıBu bizi istenmeyen karakterlerden otomatik olarak rahatlatır. PHP ayrıca filtre uzantısını kullanarak bunu otomatik olarak da yapabilir. Değişkenler $ _POST ["NAME"] ve $ _POST ["AG"], sizin için PHP araçları için otomatik olarak yüklenir. Daha önce, $ _Server SuperGlobal değişkenini kullandık, burada tüm posta verilerini içeren $ _POST SuperGlobal değişkenini de kullanıyoruz. bildirim, bu gönderme yöntemi (Yöntem) Formumuzun görevidir. Eğer yöntemi kullanırsak Almak.Formumuzun bilgisi, süperglobal değişken bir $ _get içinde olacaktır. Ek olarak, veri kaynağı önemli değilse, $ _REQUEST değişkeni kullanabilirsiniz. Bu değişken, bir veri karışımı, post, çerez içerir.

15 YIL ÖNCE.

HTTP spesifikasyonuna göre, Sunucu ucundaki bir şeyin durumunu değiştirmek için formu kullanırken, posta yöntemini kullanmanız gerekir. Exlow için, bir sayfanın tüm yorumlarını eklemek için kendi yorumlarını eklemeye izin verecek bir form varsa Bu sayfa burada, formun gönderilmelidir. "Yeniden yükle" veya "Yenile" yi tıklatırsanız, "Neredeyse her zaman bir hata), aynı yorumu iki kez göndermemelisiniz - bu yüzden bu Sayfalar arena" t işaretlendi veya önbelleğe alındı.

Formunuz olduğunda, sunucudan bir şey edinme ve aslında hiçbir şeyi değiştirmediğinde get yöntemini kullanmalısınız. Örneğin, bir arama motorunun formu, müşterinin her şeyi umursayabileceği her şeyi değiştirmek ve bir arama motoru sorgusunun sonuçlarını yer imi veya önbelleğe alma işlemini değiştirmelidir.

1 yıl önce.

Açıklığa değer:

Posta almaktan daha güvenli değil.

GET'i seçme nedenleri, istek niyeti gibi çeşitli faktörleri içerir (bir URL'nin ne kadar süreyle olabileceği ve URL'de bir gönderilen parametreler olsun) ve eylemin nasıl paylaşılabilir olmasını istediğiniz gibi, örneğin, Google Arama IRE olsun, Arama Sorgusunu kopyalamayı ve paylaşmayı kolaylaştırır ve URL'yi paylaşarak bir başkasıyla paylaşmayı kolaylaştırır.

Güvenlik, birinin bir gönderinin paylaşılması daha kolay olması nedeniyle burada sadece bir değerlendirmedir. Örnek: Kullanıcı tarafından gönderilecek bir şifrenin gönderilmesini istemiyorsunuz, çünkü kullanıcı sonuç olan URL'yi paylaşabilir ve yanlışlıkla şifrelerini açığa çıkarabilir.

Bununla birlikte, ağ bağlantısını korumak için TLS / SSL'yi dağıtamazsanız, iyi yerleştirilmiş bir kötü niyetli kişinin kesilmesini kolayca kolay bir şekilde gönderin.

HTTP (USAL Port 80) üzerinden gönderilen tüm formlar güvensizdir ve bugün (2017), ortak bir web sitesinin HTTPS kullanmamasının (temel olarak HTTP + taşıma katmanı güvenliği) kullanılmamasının çok iyi nedenleri vardır.

Bonus olarak, TLS kullanıyorsanız, kullanıcılarınızın riskinini en aza indirirsiniz. Kod (reklamlar) trafiğinize enjekte edildi.

Konuya devam ediyor:
Akıllı telefon

Minitool Güç Veri Kurtarma Serbest Sürümü, verileri kurtarmak için tasarlanmış kullanımı kolay bir programdır. Minitool Güç Veri Kurtarma ile çalışmak için ...