Rumah >pembangunan bahagian belakang >tutorial php >Buat sistem log masuk yang kuat dengan PHP dalam lima langkah mudah
mata teras:
php dan sistem log masuk
PHP adalah bahasa skrip sisi pelayan yang popular yang membolehkan anda membuat laman web dinamik. Salah satu kegunaan PHP yang paling biasa adalah untuk membuat sistem log masuk untuk laman web.sistem log masuk adalah penting untuk melindungi maklumat sensitif dan menyediakan pengguna dengan kandungan yang diperibadikan. Dalam tutorial ini, kami akan menggunakan PHP dan MySQL untuk mewujudkan sistem log masuk yang mudah dan berkuasa.
kami akan merangkumi langkah -langkah berikut:
Tetapan Alam Sekitar
Sebelum memulakan, pastikan perisian berikut dipasang pada komputer anda:
Selepas pemasangan selesai, buat folder baru dalam direktori root pelayan web (seperti HTDOCS Apache) dan namakannya Login_system.
Buat pangkalan data dan jadual
Pertama, kita perlu membuat pangkalan data dan jadual untuk menyimpan maklumat pengguna.
Buka alat pengurusan MySQL anda (seperti phpmyadmin) dan buat pangkalan data baru yang dipanggil login_system.
Seterusnya, buat jadual yang dipanggil pengguna dengan struktur seperti berikut:
Jadual ini akan menyimpan ID pengguna, nama pengguna, e -mel, kata laluan, dan tarikh penciptaan akaun.
<code class="language-sql">CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `email` varchar(100) NOT NULL, `password` varchar(255) NOT NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
Bina borang pendaftaran
Sekarang, mari buat borang pendaftaran yang membolehkan pengguna mendaftar untuk akaun.
Buat fail baru bernama Register.php dalam folder Login_System anda dan tambahkan kod berikut:
<code class="language-sql">CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `email` varchar(100) NOT NULL, `password` varchar(255) NOT NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</code>
Kod ini mencipta borang HTML yang mudah dengan medan nama pengguna, e -mel, dan kata laluan. Harta tindakan borang ditetapkan untuk mendaftar.php, yang bermaksud bahawa data borang akan dihantar ke fail yang sama untuk diproses.
Sekarang, mari tambahkan kod PHP untuk memproses data borang dan masukkan ke dalam jadual pengguna.
Pada permulaan fail daftar.php, tambahkan kod berikut sebelum perisytiharan:
<code class="language-html"><form action="register.php" method="post"> <label for="username">用户名:</label> <input id="username" name="username" required type="text"> <label for="email">邮箱:</label> <input id="email" name="email" required type="email"> <label for="password">密码:</label> <input id="password" name="password" required type="password"> <input name="register" type="submit" value="注册"> </form></code>
Kod ini memeriksa jika borang telah dihantar, menghubungkan ke pangkalan data dan memasukkan maklumat pengguna ke dalam jadual pengguna. Kata laluan hashed menggunakan fungsi PHP terbina dalam PHP untuk meningkatkan keselamatan.
Bina borang log masuk
Seterusnya, mari buat borang log masuk yang membolehkan pengguna log masuk ke akaun mereka. Buat fail baru bernama Login.php dalam folder Login_System anda dan tambahkan kod berikut:
<code class="language-php"><?php if (isset($_POST['register'])) { // 连接数据库 $mysqli = new mysqli("localhost", "username", "password", "login_system"); // 检查错误 if ($mysqli->connect_error) { die("连接失败: " . $mysqli->connect_error); } // 准备并绑定SQL语句 $stmt = $mysqli->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $username, $email, $password); // 获取表单数据 $username = $_POST['username']; $email = $_POST['email']; $password = $_POST['password']; // 对密码进行哈希处理 $password = password_hash($password, PASSWORD_DEFAULT); // 执行SQL语句 if ($stmt->execute()) { echo "新账户创建成功!"; } else { echo "错误: " . $stmt->error; } // 关闭连接 $stmt->close(); $mysqli->close(); } ?></code>
Kod ini mencipta borang HTML yang mudah dengan medan nama pengguna dan kata laluan. Harta tindakan borang ditetapkan kepada login.php, yang bermaksud bahawa data borang akan dihantar ke fail yang sama untuk diproses.
Sekarang, mari tambahkan kod PHP untuk memproses data borang dan sahkan pengguna. Pada permulaan fail login.php, tambahkan kod berikut sebelum perisytiharan:
<code class="language-html"><form action="login.php" method="post"> <label for="username">用户名:</label> <input id="username" name="username" required type="text"> <label for="password">密码:</label> <input id="password" name="password" required type="password"> <input name="login" type="submit" value="登录"> </form></code>
Kod ini memeriksa jika borang telah diserahkan, menghubungkan ke pangkalan data dan mengambil maklumat pengguna dari jadual pengguna. Kata laluan disahkan menggunakan fungsi PHP yang terbina dalam PHP. Jika log masuk berjaya, pengguna akan diarahkan ke halaman Dashboard.php.
mengukuhkan sistem log masuk anda
Kesimpulan
Tahniah! Anda telah berjaya mencipta sistem log masuk yang kuat dan telah mengukuhkan sistem log masuk anda dengan selamat.
FAQs (FAQs)
Bagaimana untuk melindungi sistem log masuk PHP saya dari serangan suntikan SQL?Hashing kata laluan adalah aspek keselamatan penting dalam mana -mana sistem log masuk. PHP menyediakan fungsi terbina dalam hashing dan pengesahan kata laluan. Anda boleh menggunakan fungsi password_hash () untuk membuat hash kata laluan dan menggunakan fungsi kata laluan Sentiasa simpan kata laluan hashed dalam pangkalan data anda, bukan kata laluan teks biasa.
boleh menggunakan kuki dalam PHP untuk melaksanakan fungsi "Ingat Saya". Apabila pengguna memilih pilihan "Ingat Saya" dan log masuk, anda boleh menetapkan kuki dengan masa tamat tempoh yang lebih lama. Pada masa yang akan datang pengguna melawat laman web anda, anda boleh menyemak sama ada kuki ini wujud dan log masuk kepada mereka secara automatik. Walau bagaimanapun, ingat untuk mengendalikan kuki dengan selamat untuk mengelakkan sebarang risiko keselamatan yang berpotensi.
Fungsi Reset Kata Laluan biasanya melibatkan menghantar pengguna e-mel dengan pautan satu kali yang unik yang menunjuk ke halaman penetapan semula kata laluan. PHPMailer adalah perpustakaan yang popular untuk menghantar e -mel dari PHP. Apabila membuat pautan semula, anda harus memasukkan token yang boleh digunakan untuk mengesahkan permintaan semula kata laluan. Tanda ini harus disimpan dengan selamat dan tamat selepas tempoh masa.
Pengesahan input pengguna adalah penting untuk mencegah kesilapan format data dan serangan suntikan SQL. PHP menyediakan banyak fungsi untuk pengesahan input, seperti filter_var (). Anda boleh menggunakan pelbagai pilihan fungsi ini untuk mengesahkan dan membersihkan pelbagai jenis data. Sebagai contoh, anda boleh menggunakan filter_validate_email untuk memeriksa sama ada input pengguna adalah alamat e -mel yang sah.
Peranan pengguna boleh dilaksanakan dengan menambahkan lajur "peranan" ke jadual pengguna dalam pangkalan data. Setiap peranan boleh mempunyai kebenaran yang berbeza, dan anda boleh menyemak peranan pengguna sebelum membenarkan mereka melakukan tindakan tertentu. Sebagai contoh, anda mungkin mempunyai peranan "admin" dan "pengguna" dan hanya membenarkan pengguna "admin" untuk memadam pengguna lain.
Pengesahan dua faktor (2FA) menambah lapisan keselamatan tambahan ke sistem log masuk anda. Terdapat beberapa cara untuk melaksanakan 2FA, seperti menghantar kod melalui SMS atau e -mel, atau menggunakan aplikasi 2FA khusus. Perpustakaan PHP (seperti phpgangsta/googleAuthenticator) boleh membantu anda melaksanakan 2FA dalam sistem log masuk anda.
Log masuk sosial membolehkan pengguna log masuk menggunakan akaun media sosial mereka seperti Facebook atau Google. Ini boleh dilaksanakan menggunakan protokol OAuth. Perpustakaan PHP (seperti Hybridauth) dapat memudahkan proses melaksanakan log masuk sosial.
Pengunci akaun boleh dicapai dengan menjejaki bilangan percubaan log masuk yang gagal. Selepas beberapa percubaan yang gagal, anda boleh mengunci akaun anda dan mencegah percubaan log masuk selanjutnya dalam tempoh masa. Ini dapat membantu mencegah serangan kekerasan.
Pendaftaran pengguna biasanya melibatkan membuat borang di mana pengguna boleh memasukkan butirannya, seperti nama pengguna, e -mel, dan kata laluan. Sebaik sahaja pengguna mengemukakan borang, anda boleh mengesahkan input, hash kata laluan, dan menyimpan butiran pengguna dalam pangkalan data anda. PHP menyediakan banyak fungsi yang membantu pengguna mendaftar, seperti filter_var () untuk pengesahan input dan kata laluan_hash () untuk hashing kata laluan.
Atas ialah kandungan terperinci Buat sistem log masuk yang kuat dengan PHP dalam lima langkah mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!