Saya mencoba membuat program php mendaftar, masuk, keluar sendiri untuk beberapa waktu sekarang. Akhirnya saya pikir saya berhasil. Karena saya seorang pemula dalam pengkodean php, saya akan senang jika kalian dapat memeriksanya dan memberi saya kritik. Seperti di mana saya dapat meningkatkannya, ancaman keamanan apa yang dapat ditimbulkan oleh kode saya atau apa pun:P/>.

Ini yang harus Anda lakukan:
1) Unduh semua 7 file php dan html. (Ketika saya menerapkan logika saya, saya keluar dengan 7 file!! :(/> Semua kode kecil mungkin kalian bisa membuatnya menjadi satu program haha)
2) Jalankan createdatabase.php terlebih dahulu untuk membuat database.
3) Gunakan wamp atau xampp atau apa pun yang Anda punya untuk mengkompilasi php dan membuka homepage.html.
4) Ya, itu saja, Anda harus mendaftar sebelum login.
5) Anda mungkin perlu mengubah detail mysql_connect di login.php dan signup.php. Saya menggunakan localhost default, root, (tanpa kata sandi) untuk terhubung.

Atau jika Anda tidak ingin mendownload lihat saja kode di bawah ini:

Buat database.php

Ini adalah formulir yang memiliki formulir login dan pendaftaran.
SITUS WEB UBER KEREN

SITUS WEB UBER KEREN

mendaftar

nama belakang:
Kata sandi:
Konfirmasi sandi:
 

Gabung

nama belakang:
Kata sandi:
 


"; else echo "Nama Pengguna Tidak Valid
"; echo " Kembali ke halaman login "; ) /* 1) Kita tidak boleh mengizinkan nama pengguna yang serupa. (Y) 2) membuat halaman kembali ke login berfungsi. (Y) 3) Kita tidak boleh mengizinkan nama pengguna dan kata sandi null.( kamu) */ ?>

Kembali ke halaman login "; ) else ( $_SESSION["access"]=1; $_SESSION["user"]=$_POST; header("Location: website.php"); ) mysql_close($con); / * 1) Saat ini, hanya sebuah pesan yang tercetak saat Anda mengetikkan kata sandi yang benar dan pesan lainnya, jika kata sandinya salah. TETAPI jika kata sandinya benar. Jika link ke halaman itu ditulis langsung tanpa login, Anda akan diarahkan ke halaman login. ) Berikan kata sandi ke server. 3) Halaman baru yang akan dimasuki pengguna ketika mereka mengetikkan kata sandi yang benar adalah profil pengguna. 4) Seharusnya ada opsi untuk menghapus profil di halaman profil .Anda juga dapat mengunggah gambar tampilan, menulis tentang saya dan sebagainya.*/ ?>

Akses.php

Website.php (Situs web yang terhubung dengan pengguna yang login. Ini juga berisi tombol logout.

SITUS WEB UBER KEREN

Selamat datang di situs web uber-keren



Terima kasih banyak kepada semua orang yang menyapa di thread ini:D/>

Selama beberapa tahun terakhir, web hosting telah mengalami perubahan dramatis. Layanan hosting web telah mengubah cara kerja situs web. Ada beberapa jenis layanan tetapi hari ini kita akan membahas tentang opsi yang tersedia untuk penyedia hosting reseller. Mereka adalah Hosting Pengecer Linux dan Hosting Pengecer Windows. Sebelum kita memahami perbedaan mendasar keduanya, mari kita cari tahu apa itu reseller hosting.

Hosting Pengecer

Secara sederhana, reseller hosting adalah bentuk web hosting di mana pemilik akun dapat menggunakan ruang hard drive khusus dan bandwidth yang dialokasikan untuk tujuan menjual kembali ke situs web pihak ketiga. Terkadang, pengecer dapat menyewa server khusus dari perusahaan hosting (Linux atau Windows) dan selanjutnya melepaskannya ke pihak ketiga.

Sebagian besar pengguna situs web menggunakan Linux atau Windows. Ini ada hubungannya dengan waktu aktif. Kedua platform memastikan bahwa situs web Anda selalu aktif 99%.

1.Kustomisasi

Salah satu perbedaan utama antara paket Hosting Pengecer Linux dan yang disediakan oleh Windows adalah mengenai penyesuaian. Meskipun Anda dapat bereksperimen dengan kedua pemain tersebut dalam beberapa cara, Linux jauh lebih dapat dikustomisasi daripada Windows. Yang terakhir ini memiliki lebih banyak fitur dibandingkan versi lainnya dan itulah sebabnya banyak pengembang dan administrator menganggap Linux sangat ramah pelanggan.

2. Aplikasi

Layanan hosting reseller yang berbeda memiliki aplikasi yang berbeda pula. Linux dan Windows sama-sama memiliki rangkaian aplikasinya masing-masing, namun Windows memiliki keunggulan dalam hal jumlah dan keserbagunaan. Ini ada hubungannya dengan sifat open source Linux. Pengembang mana pun dapat mengunggah aplikasinya di platform Linux dan ini menjadikannya penyedia hosting yang menarik bagi jutaan pemilik situs web.

Namun, perlu diingat bahwa jika Anda menggunakan Linux untuk hosting web tetapi pada saat yang sama menggunakan OS Windows, beberapa aplikasi mungkin tidak berfungsi.

3.Stabilitas

Meskipun kedua platform tersebut stabil, Linux Reseller Hosting lebih stabil dari keduanya. Ini adalah platform sumber terbuka, yang dapat bekerja di beberapa lingkungan. Platform ini dapat dimodifikasi dan dikembangkan sesekali.

4.Kompatibilitas NET

Bukan berarti Linux lebih unggul dari Windows dalam segala hal. Dalam hal kompatibilitas .NET, Windows mencuri perhatian. Aplikasi web dapat dengan mudah dikembangkan pada platform hosting Windows.

5. Keuntungan biaya

Kedua platform hosting tersebut terjangkau. Namun jika Anda merasa kekurangan uang, Anda sebaiknya memilih Linux. Ini gratis dan itulah sebabnya banyak pengembang dan administrator sistem di seluruh dunia memilihnya.

6. Kemudahan pengaturan

Windows lebih mudah diatur dibandingkan versi Windows lainnya. Semua hal dikatakan dan dilakukan, Windows masih mempertahankan keramahan penggunanya selama bertahun-tahun.

7 Keamanan

Pilihlah hosting reseller Linux karena lebih aman dibandingkan Windows. Hal ini berlaku terutama bagi orang-orang yang menjalankan bisnis E-commerce mereka.

Kesimpulan

Memilih di antara keduanyaakan tergantung pada kebutuhan Anda dan fleksibilitas biaya. Kedua layanan hosting tersebut memiliki keunggulan unik. Meskipun Windows mudah diatur, Linux hemat biaya, aman, dan lebih serbaguna.



Pada bulan Maret tahun ini, saya mempunyai pengalaman yang sangat buruk dengan perusahaan media yang menolak membayar saya dan menjawab email saya. Mereka masih berhutang ribuan dolar kepada saya dan perasaan marah yang saya rasakan setiap hari. Ternyata saya tidak sendirian, dan ratusan pemilik situs web lainnya juga mengalami hal yang sama. Ini setara dengan kursus periklanan digital.

Sejujurnya, saya sudah memiliki blog ini sejak lama dan saya telah berpindah-pindah jaringan iklan yang berbeda di masa lalu. Setelah menghapus unit iklan dari perusahaan yang membuat saya kaku, saya kembali ke titik awal. Saya juga harus mencatat bahwa Saya tidak pernah begitu menyukai produk Google AdSense, hanya karena produk tersebut terasa seperti "dasar" iklan bergambar. Bukan dari sudut pandang kualitas, namun dari sudut pandang pendapatan.

Dari apa yang saya pahami, Anda ingin Google beriklan di situs Anda, tetapi Anda juga ingin perusahaan dan agensi besar lainnya juga melakukannya. Dengan begitu Anda memaksimalkan permintaan dan pendapatan.

Setelah pengalaman negatif saya, saya mendapat rekomendasi sebuah perusahaan bernama Newor Media. Dan jika saya jujur, saya tidak menjualnya pada awalnya terutama karena saya tidak dapat menemukan banyak informasi tentangnya. Saya menemukan beberapa ulasan yang layak di situs lain, dan setelah berbicara dengan seseorang di sana, saya memutuskan untuk mencobanya. Menurut saya, mereka SANGAT membantu. Setiap jaringan yang pernah bekerja dengan saya cukup pendek dalam hal jawaban dan cara memulai. Mereka menjawab setiap pertanyaan dan itu merupakan proses yang sangat membesarkan hati.

Saya "telah menjalankan iklan selama beberapa bulan dan penghasilannya hampir sama dengan apa yang saya peroleh dengan perusahaan lain. Jadi saya tidak bisa mengatakan apakah iklan tersebut jauh lebih baik daripada yang lain, tetapi di mana iklan tersebut menonjol?" adalah poin yang benar-benar ingin saya sampaikan. Komunikasi dengan mereka tidak seperti jaringan lain yang pernah saya kerjakan. Berikut adalah kasus di mana mereka benar-benar berbeda:

Mereka memberikan pembayaran pertama kepada saya tepat waktu dengan Paypal. Tetapi karena saya "tidak berada di AS (dan menurut saya ini terjadi pada semua orang), saya mendapat biaya yang diambil dari Paypal. Saya mengirim email kepada perwakilan saya tentang hal itu, menanyakan apakah ada cara untuk menghindari hal itu di masa mendatang.

Mereka mengatakan bahwa mereka tidak dapat menghindari biaya tersebut, tetapi mereka akan MENGEMBALIKAN SEMUA BIAYA.... TERMASUK PEMBAYARAN TERBARU! Tidak hanya itu, pembayaran penggantian telah diterima dalam waktu 10 MENIT! Kapan Anda bisa mengajukan permintaan seperti itu tanpa harus diteruskan ke "departemen keuangan" untuk kemudian tidak pernah ditanggapi.

Intinya adalah saya menyukai perusahaan ini. Saya mungkin bisa menghasilkan lebih banyak di tempat lain, saya "tidak begitu yakin, tetapi mereka memiliki penerbit seumur hidup bersama saya. Saya" bukan situs besar dan saya tidak menghasilkan banyak pendapatan, tapi saya merasa seperti seorang klien yang sangat penting ketika saya berbicara dengan mereka. Ini benar-benar merupakan angin segar dalam industri yang penuh dengan penipuan dan ketidaktanggapan.

Mikrokomputer yang diciptakan oleh Raspberry Pi Foundation pada tahun 2012 telah sangat sukses dalam memicu tingkat kreativitas pada anak-anak muda dan perusahaan yang berbasis di Inggris ini mulai menawarkan program startup belajar kode seperti pi-top dan Kano. Kini ada startup baru yang memanfaatkan perangkat elektronik Pi, dan perangkat tersebut dikenal dengan nama Pip, konsol genggam yang menawarkan layar sentuh, banyak port, tombol kontrol, dan speaker. Ide dibalik perangkat ini adalah untuk melibatkan generasi muda dengan perangkat game retro namun juga menawarkan pengalaman pembelajaran kode melalui platform berbasis web.

Platform perangkat lunak luar biasa yang ditawarkan dengan Pip akan menawarkan kesempatan untuk memulai pengkodean dengan Python, HTML/CSS, JavaScript, Lua dan PHP. Perangkat ini menawarkan tutorial langkah demi langkah untuk membantu anak-anak memulai coding dan bahkan memungkinkan mereka membuat LED berkedip. Meskipun Pip masih berupa prototipe, Pip pasti akan menjadi sukses besar di industri ini dan akan melibatkan anak-anak yang memiliki minat dalam coding dan akan memberi mereka pendidikan dan sumber daya yang diperlukan untuk memulai coding pada usia muda.

Masa Depan Pengkodean

Pengkodean memiliki masa depan yang cerah, dan bahkan jika anak-anak tidak menggunakan pengkodean sebagai karier, mereka dapat memperoleh manfaat dari mempelajari cara membuat kode dengan perangkat baru ini yang menjadikannya lebih mudah dari sebelumnya. Dengan Pip, bahkan penggemar coding termuda pun akan belajar berbagai bahasa dan siap membuat kode sendiri, memiliki game, memiliki aplikasi, dan banyak lagi. Ini adalah masa depan era elektronik dan Pip memungkinkan Anda menguasai dasar-dasar pengkodean.
Ilmu komputer telah menjadi bagian penting dalam pendidikan dan dengan perangkat seperti Pip baru, anak-anak dapat mulai meningkatkan pendidikan mereka di rumah sambil bersenang-senang. Pengkodean lebih dari sekadar membuat situs web atau perangkat lunak. Ini dapat digunakan untuk meningkatkan keselamatan di kota, membantu penelitian di bidang medis, dan banyak lagi. Karena kita sekarang hidup di dunia yang didominasi oleh perangkat lunak, coding adalah masa depan dan penting bagi semua anak untuk setidaknya memiliki pemahaman dasar tentang cara kerjanya, meskipun mereka tidak pernah memanfaatkan keterampilan ini sebagai karier. Di masa depan, coding akan menjadi komponen penting dalam kehidupan sehari-hari. Ini adalah bahasa dunia dan ketidaktahuan tentang komputer atau cara kerjanya dapat menimbulkan tantangan yang sama sulitnya untuk diatasi seperti halnya buta huruf.
Pengkodean juga akan memberikan perubahan besar dalam dunia game, terutama dalam hal game online, termasuk akses kasino online. Untuk melihat bagaimana coding telah meningkatkan dunia game, lihatlah beberapa situs kasino berperingkat teratas yang mengandalkan coding. Intip sekilas untuk memeriksanya dan lihat bagaimana pengkodean dapat menghadirkan lingkungan online yang realistis.

Bagaimana Pip Melibatkan Anak-Anak

Ketika berbicara tentang kesempatan belajar coding, anak-anak mempunyai banyak pilihan. Ada sejumlah perangkat dan perangkat keras yang dapat dibeli, tetapi Pip mengambil pendekatan berbeda dengan perangkatnya. Portabilitas perangkat dan layar sentuh menawarkan keunggulan dibandingkan perangkat pengkodean lain yang ada di pasaran. Pip akan sepenuhnya kompatibel dengan komponen elektronik selain sistem Raspberry Pi HAT. Perangkat ini menggunakan bahasa standar dan memiliki alat dasar serta merupakan perangkat yang sempurna untuk pembuat kode pemula mana pun. Tujuannya adalah untuk menghilangkan hambatan apa pun antara ide dan kreasi serta membuat alat segera tersedia untuk digunakan. Salah satu kelebihan Pip lainnya adalah ia menggunakan kartu SD, sehingga dapat digunakan sebagai komputer desktop juga jika dihubungkan ke monitor dan mouse.
Perangkat Pip akan membantu anak-anak dan pemula pembuat kode yang tertarik dengan antusiasme dalam belajar dan berlatih coding. Dengan menawarkan kombinasi penyelesaian tugas dan upaya memecahkan masalah, perangkat ini tentu akan melibatkan generasi muda. Perangkat ini kemudian memungkinkan para pembuat kode muda ini untuk beralih ke tingkat pengkodean yang lebih tinggi dalam berbagai bahasa seperti JavaScript dan HTML/CSS. Karena perangkat ini meniru konsol game, perangkat ini akan segera menarik perhatian anak-anak dan akan mengajak mereka belajar tentang coding di usia muda. Itu juga dilengkapi dengan beberapa game yang dimuat sebelumnya untuk mempertahankan perhatian, seperti Pac-Man dan Minecraft.

Inovasi yang Akan Datang

Inovasi di masa depan sangat bergantung pada kemampuan anak saat ini dalam membuat kode dan pemahaman mereka secara keseluruhan terhadap proses tersebut. Saat anak-anak belajar coding sejak usia dini dengan menggunakan perangkat seperti Pip baru, mereka akan memperoleh keterampilan dan pengetahuan untuk menciptakan hal-hal menakjubkan di masa depan. Hal ini bisa berupa pengenalan permainan atau aplikasi baru, atau bahkan ide yang dapat diwujudkan untuk membantu penelitian dan perawatan medis. Ada kemungkinan yang tidak terbatas. Karena masa depan kita akan dikendalikan oleh perangkat lunak dan komputer, memulai dari usia muda adalah cara terbaik, itulah sebabnya Pip baru ditujukan untuk generasi muda. Dengan menawarkan perangkat konsol yang dapat bermain game sambil mengajarkan keterampilan coding, anggota masyarakat muda sedang dalam perjalanan untuk menjadi pencipta perangkat lunak di masa depan yang akan mengubah seluruh hidup kita. Ini hanyalah permulaan, namun ini adalah sesuatu yang mulai dipelajari dan dikuasai oleh jutaan anak di seluruh dunia. Dengan penggunaan perangkat seperti Pip, dasar-dasar pengkodean akan tercakup dan anak-anak akan dengan cepat mempelajari berbagai bahasa pengkodean yang dapat menuntun mereka ke jalur yang menakjubkan saat mereka memasuki masa dewasa.

Dalam tutorial ini, kita akan membuat formulir pendaftaran pengguna yang menambahkan pengguna ke database, dan kemudian mengirimkan email konfirmasi yang harus diklik pengguna sebelum akun mereka diaktifkan.

Butuh pertolongan?

Tutorial ini akan membawa Anda melalui proses dari awal, tetapi jika Anda mau, Anda dapat menggunakan salah satu dari banyak formulir pendaftaran email siap pakai di Envato Market. Berikut adalah beberapa opsi yang paling populer.

1.

Plugin jQuery Formulir Pendaftaran Sederhana akan mengumpulkan alamat email pengunjung di situs web Anda dengan cara yang efektif dan menarik perhatian. Ini memiliki banyak opsi penyesuaian opsional yang dapat Anda atur dalam hitungan menit.

2. Hype: Formulir Pendaftaran SmartR

Hype adalah formulir Pendaftaran SmartR, dikonfigurasikan sebelumnya dan ditambahkan ke halaman mana pun hanya dalam satu klik. Ini memanfaatkan kekuatan pengguna Anda dan jaringan mereka untuk secara aktif meningkatkan pendaftaran dan mengembangkan basis pengguna Anda secara eksponensial.

3. Formulir Pendaftaran Email Halaman Splash Beta

Ini adalah formulir yang sangat sederhana namun bergaya untuk situs web Anda di mana pengunjung dapat memasukkan alamat email mereka (dan nama jika diinginkan) untuk ditambahkan ke daftar kontak. Ia menggunakan AJAX untuk mengirimkan dan memvalidasi email dan juga akan berfungsi jika JavaScript pengguna dinonaktifkan.

Pemasangannya cepat dan tidak menimbulkan rasa sakit. Formulir ini tidak memerlukan database untuk berfungsi karena akan membuat dan menyimpan masukan ke dalam file CSV.

Jadi, kita "telah membersihkan variabel kita, sekarang mari kita periksa apakah pengguna lupa kolom apa pun.

If(empty($username))( //tolong masukkan kode ke saya ) if(empty($password))( //tolong masukkan kode ke saya ) if(empty($email))( //tolong masukkan kode ke saya )

Sekarang kita mempunyai tiga pernyataan if yang memeriksa apakah setiap kolom kosong. Jika bidangnya kosong, kita akan menetapkan beberapa variabel.

Untuk membuat segalanya bersih kita akan membuat sebuah array yang akan menyimpan status proses pendaftaran serta teks apa pun yang perlu kita tunjukkan kepada pengguna.

Tepat di atas potongan kode itu, mari buat sebuah array dan beberapa variabel.

$aksi = susunan(); $aksi["hasil"] = nol; $teks = susunan();

Pertama kita membuat array kosong yang disebut tindakan dan kemudian menetapkan nilai array hasil. Hasil akan memiliki nilai keberhasilan atau kesalahan. Selanjutnya kita membuat array kosong lain yang disebut teks. Ini akan menampung teks apa pun yang ingin kami tampilkan kepada pengguna saat mendaftar.

Saat ini, pernyataan if yang memeriksa variabel kita tidak mengeksekusi kode apa pun, jadi mari lanjutkan dan masukkan beberapa kode ke dalam pernyataan if pertama.

Letakkan kode ini di dalam pernyataan nama pengguna if.

$tindakan["hasil"] = "kesalahan"; array_push($text,"Anda lupa nama pengguna Anda");

Katakanlah pengguna mengirimkan formulir tanpa nama pengguna. Pernyataan kita akan menjalankan kode di atas. Pertama, ini akan menyetel bidang hasil array tindakan kita ke kesalahan.

Kemudian kita akan menggunakan array_push() untuk memasukkan beberapa teks ke dalam array teks kita. Kita akan menggunakan potongan kode yang sama untuk dua pernyataan "if" terakhir, jadi salin dan tempel kode tersebut ke dalam dua pernyataan if terakhir. Anda mungkin ingin mengubah teks agar sesuai dengan pernyataan if saat ini.

Catatan: Kami menggunakan array_push() jika kami memiliki banyak kesalahan dalam pengiriman formulir. Jika semua pernyataan if dijalankan, array teks akan terlihat seperti:

Array( => "Anda lupa nama pengguna Anda", => "Anda lupa kata sandi Anda", => "Anda lupa email Anda")

Kami sekarang perlu memeriksa apakah ada kesalahan sehingga kami dapat melanjutkan proses pendaftaran.

Langkah 6: Tidak Ada Kesalahan, Ayo Daftarkan Pengguna

Kita akan memeriksa apakah nilai hasil array tindakan kita disetel ke kesalahan.

If($action["result"] != "error")( //tidak ada kesalahan, lanjutkan pendaftaran $password = md5($password); ) $action["text"] = $text;

Kami juga menjalankan kata sandi kami melalui fungsi md5(). Ini mengambil kata sandi dan mengembalikan string 32 karakter yang terlihat seperti ini: . Merupakan praktik yang baik untuk menjalankan kata sandi melalui semacam fungsi hashing sebelum memasukkannya ke dalam database. Hal ini mencegah orang melihat kata sandi pengguna jika database Anda diretas.

Periksa dengan cepat nilai hasil tindakan kami dan kami dapat melanjutkan pendaftaran. Jika hasil kami adalah kesalahan, kami akan melewatkan semua kode ini dan menampilkan kesalahan tersebut kepada pengguna sehingga mereka dapat melakukan perubahan yang diperlukan.

Bagian terakhir dari kode ini kami memasukkan nilai array teks Anda ke dalam array tindakan kami.

Langkah 7: Menambahkan Pengguna ke Database

Tempatkan kode ini di dalam pernyataan if terakhir kita.

If Pernyataan memeriksa kesalahan ... //tambahkan ke database $add = mysql_query("INSERT INTO `users` VALUES(NULL,"$username","$password","$email",0)"); if($add)( //pengguna telah ditambahkan ke database )else( $action["result"] = "error"; array_push($text,"Pengguna tidak dapat ditambahkan ke database. Alasan: " . mysql_error ()); = )

Kami menggunakan mysql_query() dan INSERT untuk memasukkan informasi pengguna ke dalam database. Selanjutnya, kita membuat pernyataan if lainnya untuk memeriksa apakah pengguna telah ditambahkan ke database. Kita melakukan ini dengan memeriksa apakah variabel $add benar atau salah.

Jika pengguna ditambahkan, kami dapat melanjutkan pendaftaran; jika tidak, kami akan menetapkan beberapa variabel yang sudah dikenal dan menghentikan pendaftaran.

Saat bekerja dengan kueri MySQL, kami menggunakan fungsi mysql_error() jika ada kesalahan karena ini membantu dalam men-debug apa yang salah dengan kueri Anda. Ini akan menampilkan kesalahan teks ketika ada sesuatu yang salah. Ini bagus!

Langkah 8: Diperlukan Konfirmasi

Pengguna telah mengirimkan formulir, semuanya sudah diperiksa dan mereka "sekarang tinggal di database. Kami ingin pengguna dapat menggunakan akun mereka, jadi mari kita siapkan konfirmasinya.

Jika ditambahkan centang ... //dapatkan user id baru $userid = mysql_insert_id(); //buat kunci acak $key = $username . $email. tanggal("saya"); $kunci = md5($kunci); //tambahkan baris konfirmasi $confirm = mysql_query("INSERT INTO `confirm` VALUES(NULL,"$userid","$key","$email")"); if($confirm)( //ayo kirim email )else( $action["result"] = "error"; array_push($text,"Baris konfirmasi tidak ditambahkan ke database. Alasan: " . mysql_error( )); )

Untuk mempermudah, mari tetapkan id pengguna baru ke sebuah variabel sehingga kita dapat menggunakannya nanti. Kita melakukan ini dengan menggunakan m ysql_insert_id() . Ini akan menyetel $userid ke berapa pun ID pengguna barunya.

Selanjutnya kita membuat kunci acak untuk pengguna tertentu. Kami membuat variabel bernama kunci dan mengisinya dengan nilai nama pengguna, email dan tanggal. Stringnya akan terlihat seperti ini [dilindungi email]. Setelah itu kita menggunakan fungsi md5() untuk mengubahnya menjadi string acak yang unik untuk pengguna tersebut.

Menggunakan mysql_query() dan INSERT lagi, kami memasukkan ID pengguna baru, kunci dan email pengguna ke dalam database.

Langkah 9: Menyiapkan Template Email

Kami akan berhenti sejenak dari pengkodean PHP dan membuat dua file baru. Agar cepat dan mudah, sebenarnya kita akan menggunakan dua templat yang telah saya sertakan dalam tutorial ini. Dua file yang akan kita lihat adalah signup_template.html dan signup_template.txt . Swift memungkinkan kami menetapkan email versi HTML dan TXT jika klien email pengguna tidak mendukung email HTML.

Buka signup_template.html Catatan: Anda dapat membaca tentang HTML dalam email di carsonified. Kami tidak akan mengedit file ini, saya hanya akan menjelaskan apa yang terjadi dan kemudian Anda dapat bermain-main dengannya setelah tutorial selesai. Bagian terpenting dari file ini adalah tag yang terlihat seperti (USERNAME) dan konfirmasi.php?email=(EMAIL)&key=(KEY) . Kita akan menulis fungsi yang menggunakan templat ini dan mengganti tag tersebut dengan variabel dari formulir kita.

Langkah 10: Fungsi Templat

Buka inc/php/functions.php dan tempatkan kode ini di dalamnya.

Fungsi format_email($info, $format)( //atur root $root = $_SERVER["DOCUMENT_ROOT"]."/dev/tutorials/email_signup"; //ambil konten template $template = file_get_contents($root." /signup_template.".$format); //ganti semua tag $template = ereg_replace("(USERNAME)", $info["username"], $template); $template = ereg_replace("(EMAIL)", $ info["email"], $template); $template = ereg_replace("(KEY)", $info["key"], $template); $template = ereg_replace("(SITEPATH)","http:// site-path.com", $template); //mengembalikan html dari templat mengembalikan $template; )

format_email() mengambil dua variabel yang akan digunakan di index.php. Yang pertama adalah susunan informasi formulir kita dan yang kedua adalah format. Kami memiliki variabel format sehingga kami dapat menggunakan kembali array ini untuk template versi HTML dan TXT.

Pertama kita atur rootnya. Ini menunjuk ke folder tempat template dihosting.

Selanjutnya kita membuka isi template kita dan menugaskannya ke sebuah variabel.

Sekarang kita akan menggunakan ereg_replace() untuk mengganti tag (USERNAME) di template kita dengan konten dari formulir kita. Ini pada dasarnya hanyalah sistem templat yang sangat sederhana.

Terakhir kami mengembalikan variabel template yang menampung semua html.

Penjelasan: Singkatnya, format_email() membuka file template kita, mengambil HTML dan menetapkannya ke variabel kita. Ini hanyalah cara yang lebih bersih kemudian menetapkan semua HTML dalam fungsi itu sendiri.

Langkah 11: Mengirim Email

Kami akan menulis fungsi lain untuk menangani Swift dan mengirim email.

Fungsi send_email($info)( //format setiap email $body = format_email($info,"html"); $body_plain_txt = format_email($info,"txt"); //menyiapkan mailer $transport = Swift_MailTransport::newInstance (); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance(); $message ->setSubject("Selamat Datang di Nama Situs"); $message ->setFrom(array(" [dilindungi email]" => "Nama Situs")); $message ->setTo(array($info["email"] => $info["nama pengguna"])); $message ->setBody($body_plain_txt); $message - >addPart($body, "text/html"); $hasil = $mailer->send($message); return $result; )

Sama seperti format_email() , send_email() mengambil array info kita sebagai variabel. Bagian pertama dari fungsi kami menetapkan dua variabel, $body dan $body_plain_text . Kami menggunakan format_email() untuk menetapkan nilai HTML template kami ke setiap variabel. Sekarang sampai pada bagian baiknya. Kami telah menyiapkan instance Swift menggunakan Swift_MailTransport:newInstance() dan kemudian menyiapkan mailer menggunakan Swift_Mailer::newInstance($transport) ;

Kami membuat instance baru dari pesan Swift dan mulai menetapkan beberapa variabel ke instance ini. Kami menetapkan subjek, dari email dan ke alamat email dan kemudian menggunakan setBody() untuk menetapkan versi teks email ke instance mailer. Untuk menambahkan versi HTML kami menggunakan addPart() . Fungsi send() menangani pengiriman email dan kemudian kami mengembalikan hasilnya. Baiklah, fungsi pembuatan dan pengiriman email kita sudah ditulis, mari kembali ke index.php dan mulai menyelesaikan pendaftaran utama.

Langkah 12: Apakah kami mengirim? Bisakah kita konfirmasi?

Bit terakhir kita seharusnya berupa pernyataan if yang memeriksa apakah baris konfirmasi telah dibuat.

Mari kirim email dan periksa apakah semuanya berjalan baik-baik saja.

Jika konfirmasi... //sertakan kelas Swift include_once "inc/php/swift/swift_required.php"; //memasukkan info ke dalam array untuk dikirim ke fungsi $info = array("username" => $username, "email" => $email, "key" => $key); //kirim email if(send_email($info))( //email terkirim $action["result"] = "success"; array_push($text,"Terima kasih telah mendaftar. Silakan periksa email Anda untuk konfirmasi!") ; )else( $action["result"] = "error"; array_push($text,"Tidak dapat mengirim email konfirmasi"); )

Tanpa kelas Swift kita tidak dapat mengirim email apa pun, jadi di baris pertama, kita menyertakan kelas Swift. Kita perlu mengirimkan informasi ke kedua fungsi baru, jadi kita membuat array baru dan menetapkan variabel ke itu. Saya tahu saya tahu, lebih banyak pernyataan if, tetapi kita perlu memeriksa kesalahan untuk memudahkan pengguna. Anda selalu harus berasumsi bahwa pengguna akan membuat setiap kemungkinan kesalahan yang bisa dibayangkan.

Kami membungkus fungsi send_email() kami dalam pernyataan if lain serta meneruskan array $info. Jika email terkirim, kami menetapkan nilai keberhasilan dan berterima kasih kepada pengguna yang telah mendaftar. Jika ada kesalahan kami menggunakan variabel yang sudah dikenal. Jadi sekarang, kita hampir selesai dengan pendaftaran, tinggal satu fungsi terakhir yang perlu dibuat. Meskipun kami menetapkan semua variabel dan teks kesalahan/sukses ini, kami belum menampilkan informasi ini kepada pengguna.

Kembali ke function.php dan tempel kode ini.

//membersihkan fungsi kesalahan show_errors($action)( $error = false; if(!empty($action["result"]))( $error = "

    "."\n"; if(is_array($action["text"]))( //mengulang setiap kesalahan foreach($action["text"] sebagai $text)( $error .= ""."\ n"; ) )else( //kesalahan tunggal $kesalahan .= "

    $aksi

    "; ) $kesalahan.= "
"."\n"; ) mengembalikan $kesalahan; )

Ini mungkin tampak membingungkan tetapi sebenarnya hanya membuat kesuksesan/kesalahan kita terlihat bagus.

Pertama ia memeriksa apakah arraynya kosong sehingga kita tidak mengeksekusi kode saat tidak diperlukan.

Selanjutnya membuat tag ul dan menerapkan hasilnya sebagai kelas. Ini akan menjadi keberhasilan atau kesalahan dan hanya bersifat estetika.

Kami kemudian memeriksa untuk melihat apakah variabel teks adalah array atau hanya string. Jika itu adalah string, kami membungkusnya dalam li. Jika itu adalah array, kami mengulang setiap item array dan membungkusnya dalam li.

Terakhir, kita menutup ul dan mengembalikan seluruh string.

Jika kita kembali ke index.php dan menempatkan kode ini tepat setelah menyertakan header.php, kita dapat menyelesaikan bagian ini.

Header termasuk...

Sedikit penjelasan singkat. Kami mengambil semua nilai array tindakan kami dan meneruskannya ke fungsi show_errors(). Jika ada konten apa pun, ia mengembalikan daftar bagus yang tidak berurutan.

Langkah 13: Mengonfirmasi Pengguna

Kita harus memahami dengan baik bagaimana skrip tersebut berfungsi; jadi untuk skrip berikutnya saya akan memberi Anda seluruh potongan kode dan kemudian membahasnya bersama Anda.

Buka konfirmasi.php dan tempelkan ini di antara header include dan fungsi show_errors() Anda.

//menyiapkan beberapa variabel $action = array(); $aksi["hasil"] = nol; //validasi cepat/sederhana if(empty($_GET["email"]) || kosong($_GET["key"]))( $action["result"] = "error"; $action["text" ] = "Kami kehilangan variabel. Harap periksa kembali email Anda."; ) if($action["result"] != "error")( //bersihkan variabel $email = mysql_real_escape_string($_GET["email"] ); $key = mysql_real_escape_string($_GET["key"]); //periksa apakah kuncinya ada di database $check_key = mysql_query("SELECT * FROM `confirm` WHERE `email` = "$email" AND `key ` = "$key" LIMIT 1") or die(mysql_error()); if(mysql_num_rows($check_key) != 0)( //dapatkan info konfirmasi $confirm_info = mysql_fetch_assoc($check_key); //konfirmasi email dan perbarui database pengguna $update_users = mysql_query("UPDATE `users` SET `active` = 1 WHERE `id` = "$confirm_info" LIMIT 1") or die(mysql_error()); //hapus baris konfirmasi $delete = mysql_query("HAPUS DARI `konfirmasi` WHERE `id` = "$confirm_info" LIMIT 1") atau die(mysql_error()); if($update_users)( $action["result"] = "sukses"; $action ["text"] = "Pengguna telah dikonfirmasi. Terima kasih!"; )else( $action["result"] = "error"; $action["text"] = "Pengguna tidak dapat diperbarui Alasan: ".mysql_error();; ) )else( $ action["result"] = "error"; $action["text"] = "Kunci dan email tidak ada dalam database kami."; ) )

Sebagian besar dari ini seharusnya terlihat sangat familiar; jadi saya akan melompat ke depan dan memeriksa apakah kuncinya ada di bagian database.

Sekali lagi, kami menggunakan mysql_query() untuk mendapatkan baris apa pun dalam database yang email dan kuncinya sama dengan kunci yang disediakan oleh email pengguna.

Kami menggunakan mysql_num_rows() untuk memeriksa apakah jumlah baris yang dikembalikan lebih besar dari 0.

Jika email dan kuncinya ada di database, kami mengambil semua informasi dari database menggunakan mysql_fetch_assoc() .

Sekarang pengguna telah mengkonfirmasi akunnya, kita perlu memperbarui database dan mengatur baris aktif ke 1.

Kami menggunakan mysql_query() lagi, tetapi alih-alih INSERT kami menggunakan UPDATE untuk memperbarui baris aktif menjadi 1 dengan ID pengguna sama dengan ID pengguna kami saat ini.

Untuk membersihkan semuanya kami menggunakan mysql_query() dan DELETE untuk menghapus baris konfirmasi dari database. Hal ini memastikan bahwa pengguna tidak dapat kembali ke halaman ini dan mengonfirmasi ulang. Hal ini juga menjaga database tetap bagus dan bersih.

Kesimpulan

Kami telah membahas banyak area berbeda dalam tutorial ini. Kami mengunduh dan menyertakan skrip pihak ketiga untuk menangani pengiriman email, menerapkan validasi formulir sederhana, serta membuat sistem templat super sederhana untuk menata email kami. Jika Anda baru mengenal MySQL kami telah membahas tiga fungsi paling umum di MySQL sehingga Anda tidak akan mengalami masalah dalam menyelesaikan beberapa tutorial lanjutan.

catatan akhir

  • Saya telah menggunakan Swift Mailer sebagai skrip penerapan email kami yang dapat diunduh di sini: http://swiftmailer.org/
  • Saya juga menggunakan gaya tombol yang disediakan oleh Zurb. Pastikan untuk memeriksanya dan menyukainya. http://www.zurb.com/blog_uploads/0000/0485/buttons-02.html

Terima kasih telah membaca dan pastikan untuk mengunjungi saya

Mari kita buat halaman pendaftaran multisitus kita sendiri, bukan wp-signup.php standar.

Dalam instalasi WordPress pada umumnya, halaman registrasi (login, reset kata sandi) ditampilkan di file wp-login.php.

  • /wp-login.php - otorisasi
  • /wp-login.php?action=register - pendaftaran
  • /wp-login.php?action=lostpassword - pengaturan ulang kata sandi

Ada ketentuan terpisah untuk multisite di wp-login.php. Jadi, ketika Anda mengklik /wp-login.php?action=register di multisite, WordPress akan mengarahkan ke halaman /wp-signup.php. Dalam banyak tema, halamannya tidak terlihat menarik, jadi kami akan membuatnya sendiri.

Situs utama jaringan

Secara default, WordPress membuka halaman pendaftaran (wp-signup.php) di domain utama (website) web. Namun, dimungkinkan untuk membuat halaman pendaftaran terpisah untuk setiap situs di jaringan, meskipun temanya berbeda. Kami akan mempertimbangkan kasus ketika semua situs di jaringan memiliki halaman pendaftarannya sendiri, tetapi tema yang digunakan sama dan situs hanya berbeda dalam bahasa. Jika tema berbeda digunakan, diperlukan lebih banyak kode.

fungsi.php?

TIDAK. Nama file ini sepertinya disebutkan di setiap artikel WordPress. Dalam kasus kami, mengingat fungsi pendaftaran dirancang untuk beberapa situs, masuk akal untuk memindahkannya ke plugin MU yang dimuat saat situs mana pun dibuka.

Penyimpangan liris

Perlu dicatat bahwa plugin MU dimuat sebelum plugin normal dan sebelum inti WordPress dimuat sepenuhnya, sehingga memanggil beberapa fungsi dapat menyebabkan kesalahan fatal di PHP. Pemuatan "awal" ini memiliki kelebihan. Katakanlah di dalam tema apa pun Anda tidak dapat melekat pada beberapa tindakan yang berfungsi bahkan sebelum file fungsi.php dimuat dari tema. Contohnya adalah tindakan dari plugin Jetpack dalam bentuk jetpack_module_loaded_related-posts (postingan terkait adalah nama modulnya) yang memungkinkan untuk melacak aktivitas modul di Jetpack. Tindakan ini tidak dapat "dilampirkan" dari file tema karena tindakan telah diaktifkan sebelum tema dimuat - plugin dimuat sebelum tema. Anda dapat melihat gambaran umum urutan pemuatan WordPress di halaman Referensi Tindakan dalam kodeks.

Urutan berkas

Plugin MU dapat berisi sejumlah file dan struktur apa pun yang menurut Anda logis. Saya mengikuti hierarki seperti ini:

|-mu-plugins |-|-load.php |-|-|-selena-network |-|-|-|-pendaftaran |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

Di file load.php, semua "plugin" yang diperlukan untuk jaringan kita terhubung:

// Muat Traslate untuk semua add-on load_muplugin_textdomain("selena_network", "/selena-network/linguals/"); // Pendaftaran Jaringan memerlukan WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Plugin lain // memerlukan WPMU_PLUGIN_DIR ...

Folder plugin disimpan di dalam folder selena-network, masing-masing memiliki plugin.php sendiri, yang kami sertakan dalam load.php. Ini memberikan fleksibilitas dan kemampuan untuk menonaktifkan dan mengaktifkan hal-hal tertentu dengan cepat.

URL halaman pendaftaran

Filter wp_signup_location digunakan untuk menentukan alamat halaman pendaftaran. Itu dapat ditemukan di dalam file wp-login.php dan bertanggung jawab untuk mengarahkan ke wp-signup.php .

Kasus "daftar" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); keluar;

Mari tambahkan fungsi kita ke mu-plugins/selena-network/signup/plugin.php , yang akan memberikan alamat halaman pendaftaran di situs saat ini:

Fungsi selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network adalah awalan yang saya gunakan pada nama semua fungsi di dalam plugin MU di situs saya, untuk menghindari tabrakan, sebaiknya diganti dengan awalan unik Anda sendiri. Tambahkan prioritas filter 99 karena beberapa plugin seperti bbPress dan BuddyPress dapat menimpa alamat ini dengan alamatnya sendiri (plugin MU dimuat sebelum plugin normal, lihat di atas). Perhatikan bahwa home_url() digunakan sebagai pengganti network_site_url() untuk menjaga pengunjung tetap berada di domain yang sama. URL apa pun dapat digunakan sebagai alamat.

Pembuatan halaman

Sekarang mari kita buat halaman dengan alamat site.com/signup/ melalui antarmuka biasa, dan di folder tema anak, template untuk halaman baru kita adalah page-signup.php . Alih-alih menggunakan kata "daftar", Anda dapat menggunakan ID unik.

Di dalam template baru, Anda perlu memanggil fungsi selena_network_signup_main(), yang akan menampilkan formulir pendaftaran.

Perlu dicatat bahwa seluruh proses dengan templat bersifat opsional dan sebagai gantinya Anda dapat membuat kode pendek Anda sendiri, yang juga akan memanggil fungsi selena_network_signup_main().

wp-signup.php dan wp-activate.php

Sekarang mari kita buat fungsi yang akan menampilkan formulir pendaftaran. Untuk melakukan ini, salin file wp-signup.php dan wp-activate.php dari root WordPress ke mu-plugings/selena-network/signup/ (dan jangan lupa untuk memasukkannya ke dalam mu-plugins/selena-network /signup/plugin.php) . Manipulasi file lebih lanjut sangat sulit dan panjang untuk dijelaskan, jadi Anda harus melakukannya sendiri. Saya hanya akan menjelaskan apa sebenarnya yang perlu dilakukan dan mempublikasikan file sumber proyek saya:

  1. Di awal file, hapus semua require , pemanggilan fungsi, dan kode lain di luar fungsi.
  2. Ganti nama semua fungsi dengan menambahkan awalan unik pada namanya.
  3. Bungkus bagian bawah kode wp-signup.php dalam fungsi selena_network_signup_main dan tulis global $active_signup di awal; .
  4. Ganti tata letak dengan milik Anda di tempat yang tepat.

Di dalam wp-activate.php Anda perlu melakukan hal yang sama:

  1. Hapus semua kode di luar fungsi, bungkus tata letak dalam fungsi terpisah.
  2. Ubah tata letak jika diperlukan.

File wp-activate.php bertanggung jawab atas halaman aktivasi akun. Seperti halnya halaman pendaftaran, Anda perlu membuat template terpisah untuknya, di dalamnya Anda perlu memanggil fungsi dari file wp-activate.php.

Mengirim email aktivasi

Halaman pendaftaran mengirimkan email kepada pengunjung dengan link untuk mengaktifkan akun. Secara default, ini ditangani oleh fungsi wpmu_signup_user_notification() dari file ms-functions.php. Fungsionalitasnya dapat dipinjam sesuai fungsinya. Alasan Anda harus berhenti menggunakan fitur ini adalah karena fitur ini mengirimkan tautan aktivasi akun dari wp-activate.php. Anda bisa “mematikan” fungsi ini menggunakan filter wpmu_signup_user_notification dengan memberikan false (kalau tidak dilakukan maka surat aktivasi akan dikirim dua kali ya, sebenarnya dua huruf berbeda).

Fungsi armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // Kode dari wpmu_signup_user_notification() function wp_mail($user_email, wp_specialchars_decode($subject), $message, $message_headers) ; return false; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

Hasilnya, halaman registrasi tema Selena menjadi jauh lebih bersih dan rapi.

Kesimpulan

Ada banyak cara lain yang tidak terlalu benar di Internet untuk melakukan hal yang sama - pengalihan Apache, formulir AJAX yang tidak akan berfungsi tanpa Java Script, dll. Saya tidak terlalu menyukai semua ini, jadi saya mencoba melakukannya seakurat mungkin mungkin di situs saya sendiri.

Saya perhatikan Anda harus mengedit file dengan hati-hati dan berusaha untuk tidak terlalu menyimpang dari aslinya, sehingga di masa depan jika WordPress mengubah file wp-signup.php dan wp-activate.php, akan lebih mudah untuk membandingkannya. mereka untuk menemukan perubahan.

Jangan lupa untuk melihat kode sumber dari semua fungsi yang dijelaskan di atas untuk memahami sepenuhnya apa dan bagaimana yang terjadi di dalam kode tersebut.

Bonusnya. Perlindungan Pelaku Spam

Bahkan situs WordPress terkecil pun sering dibombardir dengan registrasi spam. Anda dapat menulis kondisi tanpa akhir untuk memfilter bot, seringkali lebih seperti upaya untuk menciptakan kecerdasan buatan 🙂 Dalam kasus multisite, pengalihan biasa di Apache sangat membantu saya, yang dengannya saya meminta untuk mengeluarkan 404 saat membuka /wp-signup. php dan /wp-acitvate.php (Saya bukan ahli pengaturan Apache, jadi aturan saya mungkin kurang tepat).

RewriteEngine Di RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Aturan default WordPress :) # ... # END WordPress

P.S. Saya mencoba menjelaskan beberapa hal pihak ketiga sedetail mungkin, karena ketika saya mulai, terkadang tidak ada yang menyarankan dan menjelaskan banyak hal. Saya juga percaya bahwa tips kecil tentang materi lain seperti itu akan mendorong seseorang untuk mempelajari sesuatu yang baru dan memperluas bidang ilmunya. Entri RewriteRule menggunakan ekspresi reguler, tidak rumit sama sekali, misalnya karakter ^ berarti awal baris.

Iklan