Biri ana avantajlar PHP, HTML formlarıyla nasıl çalıştığıdır. Buradaki anahtar, her form öğesinin otomatik olarak PHP programlarınıza sunulmasıdır. İçin detaylı bilgi PHP'de formları kullanma bölümüne bakın. İşte bir HTML formu örneği:

Örnek #1 En basiti HTML formu

Adınız:

Yaşınız:

Bu form hakkında özel bir şey yok. Bu, herhangi bir özel etiket içermeyen normal bir HTML formudur. Kullanıcı formu doldurup gönder butonuna tıkladığında action.php sayfası çağrılır. Bu dosya şöyle bir şey içerebilir:

Beispiel #2 Form verilerini işleme

Merhaba, .
Sanayıllar.

Bu programdan örnek çıktı:

Merhaba Sergey. 30 yaşındasın.

İle kod parçalarını dikkate almazsanız htmlözel karakterler() ve (int), bu kodun çalışma prensibi basit ve açık olmalıdır. htmlözel karakterler()"özel" HTML karakterlerinin düzgün bir şekilde kodlanmasını sağlar, böylece kötü amaçlı HTML veya Javascript sayfanıza eklenmez. Bir sayı olması gerektiğini bildiğimiz yaş alanı, basitçe şuna dönüştürebiliriz: tam sayı, istenmeyen karakterlerden otomatik olarak kurtulacak. PHP ayrıca filtre uzantısıyla bunu otomatik olarak yapabilir. $_POST["name"] ve $_POST["age"] değişkenleri sizin için PHP tarafından otomatik olarak ayarlanır. Daha önce $_SERVER süper küreselini kullandık, ancak burada tüm POST verilerini içeren $_POST süper küreselini de kullanıyoruz. dikkat, ki gönderme yöntemi(yöntem) formumuz POST'tur. yöntemi kullanacak olursak ALMAK, o zaman form bilgimiz $_GET süper küresel içinde olur. Alternatif olarak, veri kaynağı alakasızsa $_REQUEST değişkenini kullanabilirsiniz. Bu değişken, GET, POST, COOKIE verilerinin bir karışımını içerir.

15 yıl önce

HTTP spesifikasyonuna göre, sunucu tarafında bir şeyin durumunu değiştirmek için formu kullanırken POST yöntemini kullanmalısınız. Örneğin, bir sayfanın kullanıcıların kendi yorumlarını eklemelerine izin veren bir formu varsa, bunun gibi sayfa burada, form POST kullanmalıdır.

Formunuz sunucudan bir şeyler alırken GET yöntemini kullanmalısınız. ve yok aslında herhangi bir şeyi değiştirmek. Örneğin, için form Bir arama motoru GET'i kullanmalıdır, çünkü bir Web sitesinde arama yapmak, müşterinin umursadığı hiçbir şeyi değiştirmemelidir ve bir arama motoru sorgusunun sonuçlarını işaretlemek veya önbelleğe almak, statik bir HTML sayfasını işaretlemek veya önbelleğe almak kadar faydalıdır.

2 yıl önce

Açıklığa kavuşturmaya değer:

POST, GET'ten daha güvenli değildir.

GET'e karşı POST'u seçmenin nedenleri, isteğin amacı (bilgi "gönderiyor musunuz?"), isteğin boyutu (bir URL'nin ne kadar uzun olabileceği konusunda sınırlamalar vardır ve GET parametrelerinin gönderildiği gibi) çeşitli faktörleri içerir. URL) ve İşlemin ne kadar kolay paylaşılabilir olmasını istediğinizi - Örnek, Google Aramaları GET'dir, çünkü yalnızca URL'yi paylaşarak arama sorgusunu kopyalayıp başka biriyle paylaşmayı kolaylaştırır.

Bir GET'in paylaşılması POST'tan daha kolay olduğu için güvenlik burada yalnızca bir husustur. Örnek: GET tarafından bir parola gönderilmesini istemiyorsunuz, çünkü kullanıcı elde edilen URL'yi paylaşabilir ve yanlışlıkla parolasını ifşa edebilir.

Ancak, ağ bağlantısının kendisini korumak için TLS/SSL dağıtmazsanız, bir GET ve bir POST'un iyi konumlanmış kötü niyetli bir kişi tarafından ele geçirilmesi eşit derecede kolaydır.

HTTP üzerinden gönderilen tüm Formlar (genellikle 80 numaralı bağlantı noktası) güvensizdir ve bugün (2017), herkese açık bir web sitesinin HTTPS (temelde HTTP + Aktarım Katmanı Güvenliği) kullanmaması için pek iyi neden yoktur.

Bonus olarak, TLS kullanırsanız, kullanıcılarınızın sizin tarafınızdan konmamış trafiğinize kod (AD'ler) enjekte etme riskini en aza indirirsiniz.

Bu dersimizde fonksiyonu öğreneceğiz. posta(), oluşturma örneğinde formlar geri bildirim PHP'de alınan verilerin daha sonra posta ile gönderilmesiyle.

Bunu yapmak için iki dosya oluşturacağız - format.php ve mail.php. İlk dosya yalnızca kullanıcı girişi için alanları olan bir form içerecektir. etiketin içinde biçim- buton "Göndermek" ve nitelik eylem, işleyiciye atıfta bulunur - mail.php, düğmeye basıldığında formdaki verilere erişilmesidir. "Göndermek". Örneğimizde, form verileri adlı bir web sayfasına gönderilir. "/mail.php". Bu sayfa için bir komut dosyası içerir PHP form verilerini işleyen:


Form verileri yöntemle gönderilir İLETİ(olarak işlenir $_POST). $_POST yöntem aracılığıyla geçerli komut dosyasına iletilen bir değişkenler dizisidir. İLETİ.

Aşağıda dosyanın içeriğini görebilirsiniz format.php, alanları kullanıcının kendisi tarafından bazı web sitelerinde doldurulur. Tüm veri girişi alanları özniteliğe sahip olmalıdır isim, mantığa dayalı olarak değerleri kendimize reçete ediyoruz.




Posta ile gönderme ile PHP'de geri bildirim formu


PHP'de geri bildirim formu







Mesaj bırakın:
Adınız:



E-posta:

Telefon numarası:

İleti:

Metin alanı sınırsız sayıda karakter içerebilir -->







Form, tarayıcıda görsel olarak bu şekilde görünür.

Ardından, dosyanın kodunu yazın mail.php. Değişkenlerin isimlerini kendimiz buluyoruz. AT PHP değişken işaretle başlar $ , ardından değişkenin adı. Metin değeri değişken tırnak içine alınır. Değişkenlerin yardımıyla, formun içeriği yöneticinin e-postasına gönderilir, sadece form öğesinin adı köşeli parantez içindeki değer ile değiştirilir. isim.

$to=" [e-posta korumalı]"; // formdaki verilerin alıcısının e-posta adresi
$tema = "PHP İletişim Formu"; // alınan e-postanın konusu
$message = "Adınız: ".$_POST["ad"]."
";// name=name formundan elde edilen değeri değişkene atayın
$message .= "E-posta: ".$_POST["email"]."
"; //formdan elde edildi name=email
$message .= "Telefon numarası: ".$_POST["telefon"]."
"; //ad=telefon formundan alınmıştır
$mesaj .= "Mesaj: ".$_POST["mesaj"]."
"; //formdan elde edildi name=message
$headers = "MIME Sürümü: 1.0" . "\r\n"; // başlık, format artı yeni satır karakteriyle eşleşir
$headers .= "İçerik türü: metin/html; charset=utf-8" . "\r\n"; // gönderilen içeriğin türünü belirtir
mail($to, $tema, $mesaj, $başlıklar); //değişkenlerin değerlerini alıcının e-postasına gönderir
?>

Böylece dizideki veriler $_POST karşılık gelen değişkenlere geçirilecek ve işlev kullanılarak postaya gönderilecek posta. Formumuzu dolduralım ve gönder butonuna basalım. E-postanızı eklemeyi unutmayın. Mektup hemen geldi.

JavaScript tarayıcınızda engellendi. Bu sitenin çalışması için JavaScript'e izin verin!

Formlarla Çalışmak

HTML formları, Web sayfasının kullanıcısından sunucuya veri göndermek için kullanılır. PHP, formlarla çalışmak için bir dizi özel araç sağlar.

Önceden Tanımlanmış Değişkenler

PHP, tüm uygulamalar belirli bir ortamda çalıştığında değişmeyen bir dizi önceden tanımlanmış değişkene sahiptir. Bunlara ortam değişkenleri veya ortam değişkenleri de denir. Apache Web sunucusu ortamının ayarlarını ve istekle ilgili bilgileri yansıtırlar. bu tarayıcı. URL, sorgu dizesi ve HTTP isteğinin diğer öğelerinin değerlerini almak mümkündür.

Tüm önceden tanımlanmış değişkenler $GLOBALS ilişkisel dizisinde bulunur. Bu dizi, ortam değişkenlerine ek olarak programda tanımlanan global değişkenleri de içerir.

örnek 1

$GLOBALS dizisini görüntüleme $değer) echo "\$KÜRESEL[\"$anahtar\"] == $değer
"; ?>

Sonuç olarak, ekranda aşağıdakiler de dahil olmak üzere tüm global değişkenlerin bir listesi görünecektir. Ortam Değişkenleri. En sık kullanılanlar şunlardır:

DeğişkenTanımİçerik
$_SERVER["HTTP_USER_AGENT"]İstemci adı ve sürümüMozilla/5.0 (uyumlu; Googlebot/2.1; +http://www.google.com/bot.html)
$_SERVER["UZAKTAN_ADDR"]IP adresi144.76.78.3
getenv("HTTP_X_FORWARDED_FOR")Dahili istemci IP adresi
$_SERVER["İSTEK_YÖNTEMİ"]İstek yöntemi (GET veya POST)ALMAK
$_SERVER["QUERY_STRING"]Bir GET isteğinde, URL ile birlikte iletilen kodlanmış veriler
$_SERVER["REQUEST_URL"]Sorgu dizesi dahil tam istemci adresi
$_SERVER["HTTP_REFERER"]İsteğin yapıldığı sayfanın URL'si
$_SERVER["PHP_SELF"]Yürütülebilir programın yolu/index.php
$_SERVER["SERVER_NAME"]Alan adıİnternet sitesi
$_SERVER["REQUEST_URI"]Yol/php/php_form.php

Kullanıcı girdisini işleme

PHP giriş işleyicisi, giriş formlarını içeren HTML metninden ayrılabilir veya aynı sayfaya yerleştirilebilir.

Örnek 2

Giriş İşleme Örneği

"yöntem="gönder">

Kart numarası:

Burada veri aktarım düğmesi yok çünkü. bir tuşa basıldığında bir alandan oluşan bir form otomatik olarak gönderilir .

Çoklu değer seçimine sahip bir öğeyi işlerken, seçilen tüm değerlere erişmek için öğe adına bir çift köşeli parantez eklemelisiniz. Birden çok öğe seçmek için Ctrl tuşunu basılı tutun.

Örnek 3.1

Liste

ÖRNEK 3.1 SONUÇ:

Örnek 3.2

ex1.htm dosyasından işlem listesi

    "; foreach ($değer olarak $Item) echo "
  • $değer"; yankı "
"; ?>

Örnek 4. Onay kutularından değerleri kabul etme

$v) ( if($v) echo "$k programlama dilini biliyorsunuz!
"; else echo "$k programlama dilini bilmiyorsunuz.
"; } } ?>
" method="post"> Hangi programlama dillerini biliyorsunuz?
PHP
Perl

ÖRNEK 4 SONUÇ:

Örnek 5

"; ?>
"yöntem="gönder">

Formları gerçek alan adlarına bakmadan işlemek mümkündür.

Bunu yapmak için (aktarım yöntemine bağlı olarak) $HTTP_GET_VARS veya $HTTP_POST_VARS ilişkisel dizisini kullanabilirsiniz. Bu diziler, gönderilen formun her bir öğesi için ad/değer çiftleri içerir. Umursamıyorsanız, $_REQUEST ilişkisel dizisini kullanabilirsiniz.

Örnek 6

Transfer Yöntemi Ne olursa olsun Rastgele Girdileri İşleme $değer) echo "$anahtar == $değer
"; ?>

Örnek 7. "@" operatörünü kullanarak bir düğme tıklamasını işleme.

">

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

Örneğin:

Bir dosyayı sunucuya aktarma. Dosya yükleme. Yüklemek

PHP, sunucuya dosya göndermenizi sağlar. Dosya gönderimi için HTML formu, enctype="multipart/form-data" bağımsız değişkenini içermelidir.

Ayrıca, formun dosya kopyalama alanından önce max_file_size adlı gizli bir alanı olmalıdır. Bu gizli alan, aktarılan dosyanın maksimum boyutunu içermelidir (genellikle 2 MB'den fazla değildir).

Dosya aktarım alanının kendisi, type="file" bağımsız değişkenine sahip normal bir INPUT öğesidir.

Örneğin:

"yöntem="gönder">

Bir dosya sunucuya yüklendikten sonra benzersiz bir ad verilir ve geçici dizinde saklanır. Dosyanın tam yolu, adı bu dosyanın aktarılacağı alanın adıyla eşleşen global bir değişkene yazılır. Ayrıca PHP, geçirilen dosya hakkında bazı ek bilgileri diğer global değişkenlerde saklar:

Örnek 8

Aktarılan dosyanın işlenmesi "; echo "ad: ".$_FILES["kullanıcı dosyası"]["ad"]."
"; echo "size: ".$_FILES["userfile"]["size"]."
"; echo "type: ".$_FILES["userfile"]["type"]."
"; } ?>
"yöntem="gönder">

Sunucuya dosya yükleme örnekleri

Yüklenen dosyanın sunucu tarafından dönüştürülmesiyle ilgili sorunlar varsa, kodlu sembol 0x00 boşlukla değiştirilir (kodlu karakter 0x20), dosyaya ekleyin httpd.conf Apache dizininden (/usr/local/apache) aşağıdaki satırları alın.

CharsetRecodeMultipartForms Off