Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Cara Melaksanakan Pengesahan E-mel untuk Ahli Baru

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Umar bin Abdul Aziz (you can also view the original English article)

Pernahkah anda membuat akaun dengan laman web, dan diminta untuk memeriksa e-mel anda dan klik melalui pautan pengesahan yang dihantar oleh syarikat untuk mengaktifkannya? Melakukan begitu banyak mengurangkan jumlah akaun spam. Dalam pelajaran ini, kita akan belajar bagaimana melakukan perkara yang sama!


Apa yang Akan Kita Bina?

Kami akan mencipta skrip pendaftaran PHP yang baik di mana pengguna boleh membuat akaun untuk mendapatkan akses kepada "bahagian ahli" laman web.
Selepas pengguna membuat akaun, akaun tersebut akan dikunci sehingga pengguna mengklik pada pautan pengesahan yang akan diterima dalam peti masuk e-melnya.


Langkah 1 - Halaman Pendaftaran

Mula-mula kita memerlukan halaman mudah di mana pelawat kita boleh mendaftarkan akaun mereka; jadi itu perkara pertama yang kita akan bina.
Saya ingin mengingatkan anda bahawa ini adalah tutorial PHP, dan pada pandangan saya, saya fikir anda perlu mengetahui asas-asas HTML sebelum meneruskan dengan PHP. Saya akan menambah komen kepada HTML & CSS untuk menjelaskan setiap baris kod.

index.php - Ini adalah halaman pendaftaran kami dengan bentuk asas.

css / style.css - Ini adalah stylesheets untuk index.php dan halaman seterusnya.

Seperti yang anda lihat, saya telah menambah komen untuk setiap baris yang menerangkan apa yang mereka lakukan. Juga, anda mungkin perhatikan komen berikut dalam fail index.php:

Kami akan menulis PHP kami di antara 2 baris ini!


Langkah 2 - Pengesahan Input

Perkara pertama yang kami akan bina adalah sekeping kod yang akan mengesahkan maklumat. Berikut adalah senarai pendek yang merinci apa yang perlu dilakukan.

  • Jika medan nama tidak kosong.
  • Jika nama itu tidak terlalu pendek.
  • Jika medan e-mel tidak kosong.
  • Jika alamat e-mel adalah sah xxx@xxx.xxx

Jadi langkah pertama kami adalah untuk memeriksa sama ada borang itu dihantar, dan medan itu tidak kosong.

Masa untuk maklumat lanjut! Kami mulakan dengan pernyataan IF dan kami terlebih dahulu mengesahkan bidang nama:

Jadi jika anda menghantar borang sekarang dengan medan kosong, tiada apa yang berlaku. Jika anda mengisi kedua-dua bidang, skrip anda akan menjalankan kod antara kurungan.
Sekarang kita akan membuat kod yang akan memeriksa sama ada alamat e-mel adalah sah. Jika tidak, kami akan mengembalikan ralat. Juga, mari ubah pemboleh ubah pos kami kepada pembolehubah setempat:

Kami kini boleh mencapai data kami melalui pembolehubah tempatan kami. Seperti yang anda dapat lihat, saya juga menambah string melarikan MySQL untuk mencegah suntikan MySQL ketika memasukkan data ke dalam pangkalan data MySQL.

"Fungsi mysql_real_escape_string () melarikan diri aksara khas dalam rentetan untuk digunakan dalam penyataan SQL."Ekspresi Biasa

Ekspresi Biasa

Seterusnya adalah coretan kecil yang memeriksa sama ada alamat e-mel adalah sah.

Harap maklum bahawa saya tidak secara peribadi menulis ungkapan biasa ini, ini adalah coretan kecil dari php.net.
Pada asasnya, mengesahkan sama ada e-mel ditulis dalam format berikut:

Sekarang di Eregi, anda dapat melihatnya sama ada e-mel mengandungi aksara daripada abjad, jika ada nombor, atau tanda hantu (_), dan sudah tentu keperluan asas untuk e-mel (e-mel) '@' dan titik (').' Sekiranya tidak ada watak-watak ini yang ditemui, ungkapan akan mengembalikan "palsu". Okay, jadi sekarang kita perlu menambah beberapa mesej ralat asas.

Seperti yang anda lihat, kami telah mencipta pembolehubah tempatan "$ msg", ini membolehkan kami memaparkan ralat atau mesej yang berjaya di mana-mana sahaja di halaman.
Dan kami akan memaparkannya antara teks arahan dan borang.

Tambahkan ini ke style.css , untuk memberikan status kami sedikit gaya mesej.


Langkah 3 - Membuat Pangkalan Data & Membina Sambungan

Kini kita perlu membuat sambungan pangkalan data dan membuat jadual untuk memasukkan data akaun. Jadi, mari pergi ke PHPMyAdmin dan buat pangkalan data baru bernama pendaftaran dan buat akaun pengguna yang mempunyai akses kepada pangkalan data untuk memasukkan dan mengemas kini data.

Mari buat jadual pengguna kami, dengan 5 bidang:

Jadi sekarang kita perlu memasukkan butiran untuk bidang ini:

Bagi mereka yang tidak mahu memasukkan data ini secara manual, anda boleh menjalankan kod SQL berikut.

Pangkalan data kami telah diwujudkan, kini kami perlu membuat sambungan menggunakan PHP. Kami akan menulis kod berikut pada permulaan skrip kami di bawah baris berikut:

Kami akan menggunakan kod berikut untuk menyambung ke pelayan pangkalan data dan memilih pendaftaran pangkalan data. (sambungan MySQL asas)

Selepas kami membuat sambungan ke pangkalan data kami, kami boleh meneruskan ke langkah seterusnya dan masukkan butiran akaun.


Langkah 4 - Masukkan Akaun

Kini tiba masanya untuk memasukkan butiran akaun yang dihantar ke pangkalan data kami dan menghasilkan hash pengaktifan. Tulis kod berikut di bawah baris ini:

Hash Pengaktifan

Dalam pangkalan data kami, kami mencipta medan yang dinamakan hash, hash ini adalah 32 watak teks aksara. Kami juga menghantar kod ini ke alamat e-mel pengguna. Mereka kemudiannya boleh mengklik pada pautan (yang mengandungi hash) dan kami akan mengesahkan sama ada ia sepadan dengan yang dalam pangkalan data. Mari kita buat pembolehubah tempatan yang dipanggil $ hash dan menghasilkan rawak md5 rawak.

Apa yang kita buat? Sekarang kita menggunakan fungsi PHP "rand" untuk menghasilkan angka rawak antara 0 dan 1000. Di sebelah fungsi MD5 kita akan menukar nombor ini kepada 32 aksara aksara aksara yang akan kita gunakan dalam e-mel pengaktifan kami. Pilihan saya ialah menggunakan MD5, kerana ia menghasilkan hash 32 aksara yang selamat dan, dalam hal ini, mustahil untuk diselesaikan.

Buat Kata Laluan Rawak

Perkara seterusnya yang perlu dilakukan ialah membuat kata laluan rawak untuk ahli kami:

Masukkan maklumat berikut ke pangkalan data kami menggunakan pertanyaan MySQL

Seperti yang anda dapat lihat, kami memasuki semua data dengan tali melarikan diri MySQL mengelilinginya untuk mencegah suntikan MySQL.
Anda juga mungkin dapat melihat bahawa fungsi MD5 menukarkan kata laluan rawak ke dalam hash selamat. Contoh: jika orang yang "jahat" mendapat akses kepada pangkalan data, dia tidak dapat membaca kata laluan.

Untuk ujian, isikan borang dan periksa sama ada data sedang dimasukkan ke dalam pangkalan data kami.


Langkah 5 - Hantar E-mel Pengesahan

Selepas kami memasukkan maklumat ke pangkalan data kami, kami perlu menghantar e-mel kepada pengguna dengan pautan pengesahan. Jadi mari kita gunakan fungsi "mel" PHP untuk melakukannya.

Sekarang mari terperinci mesej:

Dalam kod di atas, kami menghantar penerangan ringkas kepada pengguna kami yang mengandungi nama pengguna dan kata laluan - menggunakan pembolehubah setempat yang kami buat apabila data telah diposkan.

Dalam seksyen kod ini, kami membuat pautan dinamik. Hasilnya akan kelihatan seperti ini:

Seperti yang anda lihat, ia mewujudkan url padat, yang mustahil ditebak. Ini adalah cara yang sangat selamat untuk mengesahkan alamat e-mel pengguna.


Langkah 6 - Pengaktifan Akaun

Seperti yang anda dapat lihat, taip url kami untuk mengesahkan.php jadi mari kita buatnya , dengan menggunakan template asas yang sama yang kita gunakan untuk index.php.
Bagaimanapun, padamkan borang dari templat.

Perkara pertama yang perlu kita lakukan ialah menyemak jika kita mempunyai pembolehubah $ _GET (e-mel & hash)

Untuk membuat perkara lebih mudah, mari kita tetapkan pembolehubah tempatan kita dan tambahkan beberapa pencegahan suntikan MySQL dengan, sekali lagi, menggunakan rentetan melarikan MySQL.

Seterusnya adalah menyemak data dari url untuk data dalam pangkalan data kami menggunakan pertanyaan MySQL.

Dalam kod di atas, kami menggunakan pernyataan pilih MySQL, dan semak sama ada e-mel dan hash sesuai. Tetapi selain itu, kami semak sama ada status akaun "tidak aktif". Akhirnya, kami menggunakan mysql_num_rows untuk menentukan bilangan padanan yang dijumpai. Jadi mari kita cuba ini. Hanya gunakan gema mudah untuk mengembalikan hasilnya.

Kami mempunyai MATCH ! Untuk menukar keputusan, ubah e-mel dan anda akan melihat nombor yang dikembalikan adalah 0 .
ita boleh menggunakan pemboleh ubah padanan $ untuk mengaktifkan akaun atau mengembalikan ralat apabila tiada perlawanan dijumpai.

Untuk mengaktifkan akaun, kami mesti mengemas kini medan aktif kepada 1 menggunakan pertanyaan MySQL.

Jadi kami menggunakan istilah carian yang sama untuk kemas kini seperti yang kami gunakan dalam pertanyaan pilih MySQL kami. Kami menukar aktif ke 1 tempat e-mel, hash dan medan aktif = 0 perlawanan. Kami juga mengembalikan mesej yang memberitahu pengguna bahawa akaun telah diaktifkan. Anda boleh menambah mesej seperti yang kami lakukan di sini untuk bahagian "tidak sepadan". Jadi kod akhir sepatutnya seperti:

Sekiranya anda melawat verify.php tanpa rentetan, ralat berikut akan dipaparkan:


Langkah 7 - Log masuk

Dalam langkah terakhir ini, saya akan menunjukkan kepada anda cara membuat borang login asas dan memeriksa sama ada akaun telah diaktifkan. Pertama buat fail baru yang disebut login.php dengan templat dasar yang kami gunakan sebelum ini, tetapi kali ini saya menukar borang tersebut ke borang login.

Bentuknya adalah html asas, dan hampir sama dengan bentuk pendaftaran, tidak ada penjelasan lanjut. Kini tiba masanya untuk menulis kod untuk skrip log masuk, yang akan kami tulis di bawah kod sambungan MySQL. Kami mulakan dengan sesuatu yang kami lakukan dalam borang pendaftaran.

Jadi kita mula-mula semak untuk melihat jika data sedang diposkan, dan kita pastikan ia tidak kosong.
Seterusnya adalah untuk membuat beberapa pembolehubah setempat untuk menyiarkan data:

Kami membuat pembolehubah tempatan dan menukar kata laluan ke hash md5 untuk menyesuaikan hash kata kunci yang kami simpan dalam pangkalan data.
Sekarang, sudah tiba masanya untuk membuat sambungan ke jadual "pengguna" kami dan mengesahkan sama ada data yang dimasukkan betul.

Kami menulis pertanyaan MySQL yang akan memilih nama pengguna, kata laluan dan maklumat aktif dari pangkalan data kami, jika nama pengguna dan kata laluan sepadan.
DAN aktif = '1' adalah! PENTING !, ini memastikan bahawa anda hanya boleh log masuk jika akaun anda diaktifkan. Kami menggunakan MySQL sekali lagi untuk melihat berapa banyak perlawanan yang ditemui.

Dalam kod di atas, periksa sama ada log masuk berjaya atau tidak.


Selesai

Dan itulah akhir tutorial ini! Saya harap anda menikmatinya, dan jika anda melakukannya, sila tinggalkan komen di bawah!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.