formulir HTML. PHP dan Formulir Itu saja




Bukan rahasia lagi bahwa cara paling umum halaman html berinteraksi dengan situs adalah melalui formulir. Formulir (yaitu elemen html yang dibentuk oleh tag formulir) juga digunakan oleh layanan email gratis, toko online, dan banyak jenis situs lainnya.

Memproses formulir sederhana dengan PHP itu mudah. Namun, dari waktu ke waktu ada kebutuhan untuk memproses formulir yang berisi beberapa bidang dengan jenis yang sama, meskipun jumlahnya dapat bervariasi dalam kisaran yang luas dan jumlahnya tidak diketahui sebelumnya. PHP menyediakan untuk kasus seperti itu pemrosesan bidang dengan tipe yang sama sebagai array nilai.


Mari kita lihat lebih dekat opsi untuk berbagai jenis bidang.

Bidang teks

Untuk keperluan artikel ini, bidang teks mengacu pada elemen yang dibuat oleh tag masukan dengan nilai parameter jenis teks dan tag textarea. Paling mudah untuk mengatur pemrosesan formulir yang terdiri dari beberapa bidang tersebut. Daftar di bawah ini menunjukkan markup html untuk formulir tersebut.






Seperti yang Anda lihat dari daftar, nama elemen form, dari sudut pandang PHP , adalah elemen array. Oleh karena itu, skrip PHP yang akan memproses formulir ini akan memperlakukan banyak bidang teks formulir ini sebagai satu larik. Elemen individual dapat diakses dengan indeks atau dihitung menggunakan daftar dan setiap perintah, seperti pada contoh berikut.

n"; ?>

Beralih

Kotak centang (checkbox) dalam artikel ini adalah elemen yang dibuat oleh tag input dengan nilai parameter tipe sama dengan kotak centang. Bentuk untuk menggunakan sejumlah variabel "sakelar" dibuat dengan cara yang persis sama. Perhatikan bahwa pilihan nilai tombol radio tertentu (yaitu, nilai properti nilai) tidak penting. Contoh ditunjukkan dalam daftar di bawah ini:






Namun, pemrosesan formulir tersebut berbeda dari pemrosesan yang dijelaskan untuk bidang teks. Dalam hal ini, perlu untuk menentukan apakah pengunjung situs telah mengaktifkan satu atau beberapa peralihan. Jika dimasukkan, maka elemen array yang sesuai ada, jika tidak, maka tidak ada. Daftar berikut adalah contoh skrip PHP yang mencetak tombol radio yang diaktifkan:

Tombol radio

Sebelum menjelaskan pemrosesan tombol radio, perlu diingat cara kerjanya. Inti dari tombol radio (elemen yang dibuat oleh tag input dengan nilai parameter tipe sama dengan radio ) adalah dengan memilih satu tombol, pengguna secara otomatis membatalkan pilihan tombol lain dari set yang sama. Tombol digabungkan menjadi satu set dengan sangat sederhana: semua tombol di set memiliki nama yang sama.

Tetapi nilai (yaitu, parameter nilai) dari tombol di set berbeda. Dan nilai tombol yang dipilih dengan nama set akan dikirim ke situs. Seperti bidang teks dan tombol radio, nama set tombol radio harus diformat sebagai nama elemen array di PHP. Contoh formulir seperti itu ditunjukkan dalam daftar berikut:

// set tombol pertama
// set tombol kedua
// set tombol ketiga

Menangani tombol radio menggabungkan ide, menggunakan bidang teks dan tombol radio dalam pemrosesan. Jika pembuat halaman html belum menetapkan nilai default, dan pengguna belum memilih tombol tertentu di kumpulan tombol radio, maka elemen ini tidak akan ada dalam larik (seperti untuk tombol radio).

Jika tombol dipilih, maka elemen larik yang sesuai akan berisi nilainya (seperti untuk bidang teks). Di bawah ini adalah daftar contoh yang menangani formulir dengan beberapa kumpulan tombol radio.

n"; ?>

Dengan demikian, tidak ada yang rumit dalam mengolah bentuk yang kompleks.

Dalam tutorial ini, kita akan membuat skin switcher sederhana menggunakan variabel PHP dan CSS.

Ada banyak sakelar seperti itu, dan beberapa kali saya telah menerjemahkan pelajaran tentang topik ini. Anda dapat mengubah desain sepenuhnya dengan bantuan skrip PHP khusus, Anda dapat menggunakan JavaScript. Dalam hal ini, skrip cukup mengubah style sheet. Namun bagaimana jika kita perlu mengubah beberapa gaya saja pada halaman? Kami tidak akan membuat beberapa file CSS yang berbeda karena hal ini.

Untungnya, ada jalan keluar dari situasi ini. Variabel PHP akan membantu kami dalam hal ini, yang akan mengubah beberapa baris dalam style sheet dan, karenanya, kami akan mengubah desainnya.

Pertama-tama, kita perlu membuat file PHP untuk konten halaman kita. Kami akan membuatnya sesederhana mungkin, tetapi Anda dapat mengembangkan skema aplikasi yang lebih kompleks. Harap perhatikan bahwa style sheet kami memiliki ekstensi .php, dan terletak di folder CSS.


< html >

Variabel PHP Dalam Demo CSS
< meta http -equiv="Content -Type" content="text /html; charset = utf-8" />










Lorem ipsum dolor sit amet, consectetur adipisicing elite, sed do eiusmod tempor insidedunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Pengecualian karena pekerjaan yang tidak menyenangkan, sunt in culpa qui officia deserunt mollit anim id est laborum.





Saya membuat beberapa konten dengan sedikit navigasi yang memungkinkan kita mengubah template (dalam kasus kita, header akan berubah).

Kami akan menggunakan string kueri untuk mengubah kulit saat ini dengan meneruskan nilai nama ke file PHP yang sama. Kami juga membutuhkan skrip untuk mengingat desain apa yang sedang kami gunakan dan tetap ada di seluruh situs.

Tempelkan kode berikut sebelum doctype:

session_start();


$_SESSION["template"] = $_GET["template"];

) elseif (isset($_SESSION["template"])) (
$template = "?template=".$_SESSION["template"];
) kalau tidak (
$templat = "";
}
?>

Jadi, inilah yang dilakukan kode ini. Karena kami menggunakan sesi, pertama-tama kami harus memulai sesi. Selanjutnya, kami memeriksa apakah string kueri berisi nilai variabel template. Jika tidak, kami kemudian menetapkan variabel sesi ke nilai template. Selanjutnya, kita membuat variabel lokal dengan string yang akan kita tambahkan ke lokasi file CSS. Ini akan memungkinkan kita untuk meneruskan nama template yang ingin kita gunakan ke file PHP, membuat gaya CSS.

Sekarang kita dapat membuat pengalih template. Kami menggunakan angka 1-3 untuk mengidentifikasi pola yang diinginkan:

beralih tema:
1
2
3

Kita juga perlu mengubah lokasi file PHP yang bertanggung jawab untuk menghasilkan CSS.

Kami sekarang siap untuk membuat file PHP yang akan bertanggung jawab untuk membuat template kami. Kita perlu memberi tahu browser di awal file bahwa gaya CSS akan dimuat di sini. Baris kode berikut akan membantu kita dalam hal ini:

Header("Tipe konten: teks/css; charset: UTF-8");

Sekarang Anda bisa menggunakan file ini seperti stylesheet normal dengan kemampuan untuk memasukkan variabel PHP. Ini membuka peluang besar bagi Anda tidak hanya untuk mengubah tampilan halaman, tetapi juga untuk mengganti konten secara dinamis.

Karena kita hanya memiliki 3 kemungkinan pola, kita perlu memastikan bahwa hanya 3 angka ini yang dapat digunakan. Jika tiba-tiba, seseorang dalam string kueri mencoba memberikan nilai yang berbeda, template default akan terbuka di depan matanya (dalam kasus kami, ini adalah "1").

$jumlahtemplat = 3;
jika (isset($_GET["templat"])) (
$template = $_GET["template"];
if ((!is_numeric($template)) || ($template > $numberoftemplates) || ($template< 0)) {
$templat = 1;
) kalau tidak (
$template = bulat($template);
}
) kalau tidak (
$templat = 1;
}

Sekarang kita memiliki variabel lokal bernama $template yang berisi nomor template yang akan digunakan. Untuk lebih jelasnya, Anda dapat menguji ini dengan menggunakannya sebagai komentar CSS:

echo "/*====== template yang digunakan: ".$template." ======*/";

Anda kemudian dapat membuka file style.php dan melihat tulisan berikut di kode sumber: “/*====== template used: 1 ======*/”. Jika browser mengakses style.php?template=2, maka akan ada nilai yang berbeda.

Karena kita tidak membuat style sheet terpisah untuk setiap template, kita hanya perlu menentukan perbedaan antara desain kita dalam satu file. Kita dapat menulis perubahan ini ke dalam array:

$css = larik(
"header-background" => array(
1 => "url(../images/header-bg-1.jpg) jangan ulangi",
2 => "url(../images/header-bg-2.jpg) jangan ulangi",
3 => "url(../images/header-bg-3.jpg) jangan ulangi"
),
"header-h1-warna"=> larik(
1 => "#fff",
2 => "#fff",
3 => "#666"
),
"header-h1-font"=> larik(
1 => "tebal normal 35px Helvetica, Arial, sans-serif",
2 => "tebal normal 35px Trebuchet MS, Arial, sans-serif",
3 => "normal normal 35px Georgia, serif"
);

Seperti yang Anda lihat, saya telah mengalokasikan 3 elemen dalam array untuk setiap pemilih CSS.

Sekarang, di tempat yang tepat, kita hanya perlu mengganti:

latar belakang:;

dan kami, bergantung pada templatnya, akan memiliki gambar latar belakang yang berbeda.

Itu saja yang Anda butuhkan. Gunakan konstruksi seperti itu di seluruh file. Dengan cara ini Anda dapat mengganti banyak elemen berbeda di halaman. Lembar gaya lengkap:

* {
margin:0;
bantalan:0;
}
tubuh (
font-size:.8em;
latar belakang:#F3F4F9;
font-family:Arial;
perataan teks: tengah;
}
#membungkus (
lebar:990px;
margin:0 otomatis;
perataan teks: kiri;
}
#nav(
padding:10px 0;
lebar:990px;
meluap: otomatis;
}
#logo(
mengambang:kiri;
}
#pengalih (
mengapung: benar;
lebar:170px;
perataan teks: kanan;
padding:45px 20px 0 0;
}
# rentang pengalih(
mengambang:kiri;
padding:6px 10px 0 0;
}
#beralih a (
tampilan: blok;
mengambang:kiri;
padding:4px 8px;
perbatasan:1px padat #ccc;
latar belakang:#eee;
margin:0 0 0 2px;
}
#mengalihkan a:arahkan(
latar belakang:#fff;
}
#tajuk(
jelas: keduanya;
latar belakang:;
tinggi: 206px;
}
#tajuk h1 (
perataan teks: kanan;
padding:155px 25px 0 0;
warna:;
jenis huruf:;
}
#col1 (
lebar:450px;
mengambang:kiri;
margin:20px 0 0 0;
}
#col2(
lebar:450px;
mengapung: benar;
margin:20px 0 0 0;
}

Itu dia! Menikmati!

Seringkali di situs Web Anda dapat menemukan halaman dengan formulir HTML ditempatkan di sana. Formulir web adalah cara mudah untuk mendapatkan informasi dari pengunjung situs web Anda. Contohnya adalah buku tamu, yang memberikan umpan balik kepada pengunjung dan pengembang situs. Formulir juga nyaman bagi pengembang situs saat mengembangkan CMS, yang memungkinkan Anda mempertahankan properti utama situs - relevansi. Artikel ini berfokus pada dasar-dasar pembuatan formulir HTML, pemrosesannya, dan cara meneruskan data dari formulir di layar ke skrip PHP.

1) Membuat bentuk sederhana

tag

Dan
mengatur awal dan akhir formulir. Tag awal formulir
mengandung dua atribut: tindakan Dan metode. Atribut tindakan berisi URL skrip yang harus dipanggil untuk memproses skrip. Atribut metode memberi tahu browser jenis permintaan HTTP apa yang digunakan untuk mengirimkan formulir; nilai-nilai yang mungkin POS Dan MENDAPATKAN.

Komentar

Perbedaan utama antara metode POST dan GET adalah cara penyampaian informasi. Dalam metode GET, parameter dilewatkan melalui bilah alamat, mis. sebenarnya, di header HTTP permintaan, sedangkan dalam metode POST, parameter dilewatkan melalui badan permintaan HTTP dan tidak tercermin dalam bentuk bilah alamat.

$teks = nl2br($_POST["teksku"]);
?>

Tugas: Katakanlah kita ingin membuat daftar dropdown dengan tahun dari 2000 hingga 2050.
Larutan: Anda perlu membuat formulir HTML dengan elemen SELECT dan skrip PHP untuk memproses formulir.

Diskusi:

Mari kita mulai dengan membuat dua file: form.html Dan action.php. Dalam file form.html akan berisi formulir html dengan daftar drop-down. Selain itu, nilai dalam daftar dapat ditentukan dengan dua cara:

I. Entri data manual:

II. Memasukkan data melalui loop:

Seperti yang Anda lihat, contoh kedua dengan loop lebih ringkas. Menurut saya tidak ada gunanya memberikan skrip penangan formulir, karena diproses seperti bidang teks, mis. daftar nilai dapat diambil dari array superglobal $_POST.

Keterangan:

Mari buat formulir HTML untuk mengirim file ke server.




Formulir html ini memiliki elemen telusuri, yang membuka kotak dialog untuk memilih file yang akan diunggah ke server. Dengan menekan tombol "Transfer file", file diteruskan ke skrip handler.

Maka Anda perlu menulis penangan skrip action.php. Sebelum menulis handler, Anda perlu memutuskan di direktori mana kami akan menyalin file:

if(isset($_FILES [ "myfile" ])) // Jika file tersebut ada
{
$katalog = "../gambar/" ; // Direktori kami
jika (is_dir ($catalog )) // Jika ada direktori seperti itu
{
$filesaya = $_FILES [ "filesaya" ][ "nama_tmp" ]; // File sementara
$namafile_saya = $_FILES [ "filesaya" ][ "nama" ]; // Nama file
if(! copy ($myfile , $catalog )) gema "Kesalahan menyalin file". $namafile_saya // Jika penyalinan file gagal
}
lain mkdir("../gambar/"); // Jika tidak ada direktori seperti itu, kami akan membuatnya
}
?>

Komentar

Jika Anda mempercayai pengguna untuk mengunggah file apa pun ke server Anda, Anda harus sangat berhati-hati. Penyerang dapat menyuntikkan kode "buruk" ke dalam gambar atau file dan mengirimkannya ke server. Dalam kasus seperti itu, Anda perlu mengontrol unduhan file dengan ketat.

Contoh ini mendemonstrasikan pembuatan direktori dan penyalinan file ke direktori tersebut di server.

Saya juga ingin menunjukkan contoh dengan sebuah elemen kotak centang. Elemen ini sedikit berbeda dari elemen lain jika bukan salah satu elemen kotak centang'a tidak dipilih, maka variabel superglobal $_POST akan mengembalikan nilai kosong:


Biru
Hitam
Putih

if (!kosong($_POST [ "warnaku" ])) echo $_POST [ "warnaku" ]; // Jika setidaknya 1 item dipilih
gema "Pilih nilai";
?>




Jika Anda memiliki pertanyaan lebih lanjut atau ada sesuatu yang tidak jelas - selamat datang di kami

Dalam semua bahasa di dunia ada kata "beralih",
dan hanya dalam bahasa Rusia - "beralih"!
Mikhail Zadornov

Hari ini kita akan berbicara tentang elemen sintaksis seperti itu PHP seperti sakelar. Jangan bingung dengan tag HTML. , yang juga membuat tombol radio. Jadi,

pernyataan beralih

Tugas: tergantung pada apa yang dipilih pengguna, tampilkan opsi yang diperlukan untuknya. Mari kita lihat kodenya:

Contoh 1. Halaman HTML dengan formulir:

jajak pendapat

Masukkan nilai bahasa Rusia Anda:

Dan ini kode handlernya:

Contoh 2. Penangan formulir (file cup6.php):

jika (! $skor ) (
gema();
) elseif ($skor == 1 ) (
gema ("Horor!");
) elseif ($skor == 2 ) (
echo ("Gagal %-(" );
) elseif ($skor == 3 ) (
gema ("UD...");
) elseif ($skor == 4 ) (
gema("Bagus");
) elseif ($skor == 5 ) (
gema ("Bagus!");
) kalau tidak (
gema ( "Penilaian yang menarik ...");
}
?>

Saya pikir Anda semua dengan mudah menemukan kode dan memahami cara kerjanya. Secara umum, kode ini benar, dan tidak ada kesalahan di dalamnya (sepertinya ...), tetapi sangat merepotkan: banyak kondisi, cukup sulit untuk melacak di mana. Apa yang harus dilakukan? Sekarang kita membutuhkan saklar saklar.

Saklarnya terlihat seperti ini:

Contoh 3. Tampilan saklar saklar:

beralih (ekspresi ) (
nilai kasus1 :
// perintah yang dijalankan jika ekspresi = nilai1
merusak; // tidak perlu
nilai kasus2 :
// perintah yang dijalankan jika ekspresi = nilai2
merusak; // tidak perlu
...
bawaan:
// perintah yang akan dieksekusi jika tidak ditemukan
// tidak ada yang cocok
merusak; // tidak perlu
}

Bagaimana seluruh blok ini bekerja:

  1. Nilai ekspresi dievaluasi.
  2. Nilai ekspresi diperiksa terhadap nilai 1 . Jika sama, maka kode setelah perintah case value1 dijalankan:
  3. Jika nilai ekspresi tidak sama dengan nilai 1, maka akan diperiksa terhadap nilai 2, 4, dan seterusnya.
  4. Jika tidak ditemukan kecocokan, maka kode dari blok default dijalankan.

Blok default adalah opsional: dapat dihilangkan.

istirahat() perintah; setelah setiap blok kode diperlukan sehingga setelah kode dieksekusi, semua kasus selanjutnya dilewati begitu saja.

Sekarang mari kita ubah kode dari contoh kedua agar lebih nyaman! Misalnya, seperti ini:

Contoh 4. Kode contoh 2 yang dimodifikasi (file cup6.php):

beralih ($skor ) (
kasus 0 :
gema ( "Kamu masih memasukkan penilaian tentang sesuatu ...");
merusak;
kasus 1 :
gema ("Horor!");
merusak; kasus 2 :
echo ("Gagal %-(" );
merusak;
kasus 3 :
gema ("UD...");
merusak;
kasus 4 :
gema("Bagus");
merusak;
kasus 5 :
gema ("Hebat!" );
merusak;
bawaan:
gema (
"Penilaian yang menarik ...");
}
?>

Seperti ini. Sederhana dan nyaman. Hasil pekerjaan ini ditunjukkan pada gambar:

Sebelum setelah

Koneksi

Seringkali jauh lebih nyaman untuk memecah kode menjadi beberapa bagian dan menampilkannya di tempat yang tepat. Untuk memasukkan isi dari satu file ke dalam file lain, kita dapat menggunakan dua perintah: require(); dan termasuk();

memerlukan()

Penampilan tim:

Contoh 6. Tampilan perintah require() :

membutuhkan ("nama file");

Sebelum memulai skrip PHP menemukan semua perintah require(); Dan menggantinya (perintah) dengan konten file yang ditentukan.

Penggantian hanya terjadi satu kali sebelum skrip dimulai, sehingga Anda tidak dapat menyertakan perintah require(); dalam lingkaran tubuh!

File yang Anda sertakan dengan perintah require(); mungkin berisi PHP-kode. Kode ini akan dieksekusi.

termasuk()

Penampilan tim:

Contoh 7. Tampilan perintah include() :

termasuk ("nama file");

sertakan() perintah; menyisipkan dan mengeksekusi konten file yang ditentukan, dan ini terjadi selama eksekusi skrip setiap kali perintah inlcude () ditemui; .

Terlepas dari kesamaan yang jelas, require(); dan termasuk(); sangat berbeda: perintah require (); dieksekusi sekali sebelum dimulainya eksekusi skrip, dan inlcude(); setiap kali itu muncul dalam kode dan Anda dapat dengan mudah meletakkan perintah inlcude(); ke dalam siklus.

Bagaimana ini dapat membantu dalam kehidupan: hampir setiap situs memiliki bagian halaman yang tidak berubah di seluruh situs - misalnya, header (header, header) situs dan footer ("footer", bawah) dari situs. Agar tidak mencetaknya lagi di setiap halaman, Anda harus meletakkannya di dua file terpisah (misalnya, header.php dan footer.php) dan sertakan sesuai kebutuhan.

Kode untuk halaman tersebut mungkin terlihat seperti ini:

Contoh 8. Menghubungkan tajuk dan bagian bawah halaman dari file eksternal:

membutuhkan("header.php"); // ini adalah teks dari halaman saat ini
membutuhkan("footer.php");
?>

Penggunaan require() dalam contoh ini lebih disukai, karena kita hanya menyertakan file-file ini satu kali.

require_once() dan inlcude_once()

Jika Anda perlu memastikan bahwa file tertentu disertakan dalam kode hanya sekali, alih-alih memerlukan(); dan termasuk(); perlu menggunakan require_once(); dan membutuhkan_sekali();

Lihat contoh:

Contoh 9. Penggunaan ganda include_once():

include_once("top.php");
// beberapa kode di sini include_once("top.php");
?>

Pada contoh sebelumnya, file top.php hanya akan dimasukkan dalam kode halaman satu kali, meskipun ada dua perintah dalam kode tersebut.

Itu saja...

Nah, sepertinya hanya itu yang ingin saya sampaikan kepada Anda hari ini. Apakah akan ada masalah dengan PHP- menulis kepada saya, saya akan membantu!

Sebagai pekerjaan rumah: buat kalkulator sederhana. Sebagai petunjuk, inilah gambar untuk Anda:

Dan satu hal lagi: apakah pantas menanyakan "pekerjaan rumah" seperti itu?