Bagaimana pendaftaran pengguna baru yang disetujui di php mysql?

Otentikasi pengguna sangat umum dalam aplikasi web modern. Ini adalah mekanisme keamanan yang digunakan untuk membatasi akses tidak sah ke area dan alat khusus anggota di situs

Dalam tutorial ini kita akan membuat sistem registrasi dan login sederhana menggunakan PHP dan MySQL. Tutorial ini terdiri dari dua bagian. pada bagian pertama kita akan membuat formulir pendaftaran pengguna, dan pada bagian kedua kita akan membuat formulir login, serta halaman selamat datang dan skrip logout

Membangun Sistem Pendaftaran

Pada bagian ini kita akan membuat sistem pendaftaran yang memungkinkan pengguna membuat akun baru dengan mengisi formulir web. Tapi, pertama-tama kita perlu membuat tabel yang akan menampung semua data pengguna

Langkah 1. Membuat Tabel Database

Jalankan kueri SQL berikut untuk membuat tabel pengguna di dalam database MySQL Anda

CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Silakan lihat tutorial tentang pernyataan SQL

_5 untuk informasi rinci tentang sintaks untuk membuat tabel di sistem database MySQL

Langkah 2. Membuat File Konfigurasi

Setelah membuat tabel, kita perlu membuat skrip PHP untuk terhubung ke server database MySQL. Mari buat file bernama "config. php" dan masukkan kode berikut di dalamnya

Contoh

PDO Berorientasi Objek Prosedural

Unduh

connect_error);
}
?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
?>

Jika Anda telah mengunduh contoh kode Berorientasi Objek atau PDO menggunakan tombol unduh, harap hapus teks "-oo-format" atau "-pdo-format" dari nama file sebelum menguji kode

Catatan. Ganti kredensial sesuai dengan pengaturan server MySQL Anda sebelum menguji kode ini, misalnya, ganti nama database 'demo' dengan nama database Anda sendiri, ganti nama pengguna 'root' dengan nama pengguna database Anda sendiri, tentukan kata sandi database jika ada

Langkah 3. Membuat Formulir Pendaftaran

Mari buat file PHP lain "register. php" dan letakkan kode contoh berikut di dalamnya. Kode contoh ini akan membuat formulir web yang memungkinkan pengguna untuk mendaftarkan diri

Skrip ini juga akan menghasilkan kesalahan jika pengguna mencoba mengirimkan formulir tanpa memasukkan nilai apa pun, atau jika nama pengguna yang dimasukkan oleh pengguna sudah diambil oleh pengguna lain

Contoh

PDO Berorientasi Objek Prosedural

Unduh


 



    
    Sign Up
    
    


    

Sign Up

Please fill this form to create an account.

" method="post">

Username

Password

Confirm Password

Already have an account? Login here.

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("s", $param_username);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // store result
                $stmt->store_result();
                
                if($stmt->num_rows == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            $stmt->close();
        }
    }
    
    // Validate password
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 6){
        $password_err = "Password must have atleast 6 characters.";
    } else{
        $password = trim($_POST["password"]);
    }
    
    // Validate confirm password
    if(empty(trim($_POST["confirm_password"]))){
        $confirm_password_err = "Please confirm password.";     
    } else{
        $confirm_password = trim($_POST["confirm_password"]);
        if(empty($password_err) && ($password != $confirm_password)){
            $confirm_password_err = "Password did not match.";
        }
    }
    
    // Check input errors before inserting in database
    if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
        
        // Prepare an insert statement
        $sql = "INSERT INTO users (username, password) VALUES (?, ?)";
         
        if($stmt = $mysqli->prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("ss", $param_username, $param_password);
            
            // Set parameters
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Redirect to login page
                header("location: login.php");
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            $stmt->close();
        }
    }
    
    // Close connection
    $mysqli->close();
}
?>
 



    
    Sign Up
    
    


    

Sign Up

Please fill this form to create an account.

" method="post">

Username

Password

Confirm Password

Already have an account? Login here.

_

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                if($stmt->rowCount() == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            unset($stmt);
        }
    }
    
    // Validate password
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 6){
        $password_err = "Password must have atleast 6 characters.";
    } else{
        $password = trim($_POST["password"]);
    }
    
    // Validate confirm password
    if(empty(trim($_POST["confirm_password"]))){
        $confirm_password_err = "Please confirm password.";     
    } else{
        $confirm_password = trim($_POST["confirm_password"]);
        if(empty($password_err) && ($password != $confirm_password)){
            $confirm_password_err = "Password did not match.";
        }
    }
    
    // Check input errors before inserting in database
    if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
        
        // Prepare an insert statement
        $sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
         
        if($stmt = $pdo->prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
            $stmt->bindParam(":password", $param_password, PDO::PARAM_STR);
            
            // Set parameters
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Redirect to login page
                header("location: login.php");
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            unset($stmt);
        }
    }
    
    // Close connection
    unset($pdo);
}
?>
 



    
    Sign Up
    
    


    

Sign Up

Please fill this form to create an account.

" method="post">

Username

Password

Confirm Password

Already have an account? Login here.

— Keluaran dari contoh di atas (i. e. formulir pendaftaran) akan terlihat seperti ini

Bagaimana pendaftaran pengguna baru yang disetujui di php mysql?

Dalam contoh di atas, kami telah menggunakan fungsi

6 bawaan PHP untuk membuat hash kata sandi dari string kata sandi yang dimasukkan oleh pengguna (baris no-78). Fungsi ini membuat hash kata sandi menggunakan algoritme hashing satu arah yang kuat. Itu juga menghasilkan dan menerapkan garam acak secara otomatis saat melakukan hashing kata sandi; 

Pada saat login, kami akan memverifikasi kata sandi yang diberikan dengan hash kata sandi yang disimpan dalam database menggunakan fungsi PHP

7, seperti yang ditunjukkan pada contoh berikut

Kami telah menggunakan kerangka kerja Bootstrap untuk membuat tata letak formulir dengan cepat dan indah. Silakan, periksa bagian tutorial Bootstrap untuk mempelajari lebih lanjut tentang kerangka kerja ini

Tip. Password salting adalah teknik yang banyak digunakan untuk mengamankan password dengan mengacak hash password, sehingga jika dua pengguna memiliki password yang sama, mereka tidak akan memiliki hash password yang sama. Ini dilakukan dengan menambahkan atau menambahkan string acak, yang disebut garam, ke kata sandi sebelum hashing


Membangun Sistem Login

Pada bagian ini kita akan membuat form login di mana pengguna dapat memasukkan username dan password mereka. Saat pengguna mengirimkan formulir, input ini akan diverifikasi terhadap kredensial yang disimpan dalam database, jika nama pengguna dan kata sandi cocok, pengguna diberi otorisasi dan diberi akses ke situs, jika tidak, upaya masuk akan ditolak

Langkah 1. Membuat Form Login

Mari buat file bernama "login. php" dan letakkan kode berikut di dalamnya

Contoh

PDO Berorientasi Objek Prosedural

Unduh


 



    
    Login
    
    


    

Login

Please fill in your credentials to login.

' . $login_err . '

'; } ?> " method="post">

Username

Kata sandi

Belum punya akun?

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("s", $param_username);
            
            // Set parameters
            $param_username = $username;
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Store result
                $stmt->store_result();
                
                // Check if username exists, if yes then verify password
                if($stmt->num_rows == 1){                    
                    // Bind result variables
                    $stmt->bind_result($id, $username, $hashed_password);
                    if($stmt->fetch()){
                        if(password_verify($password, $hashed_password)){
                            // Password is correct, so start a new session
                            session_start();
                            
                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            
                            
                            // Redirect user to welcome page
                            header("location: welcome.php");
                        } else{
                            // Password is not valid, display a generic error message
                            $login_err = "Invalid username or password.";
                        }
                    }
                } else{
                    // Username doesn't exist, display a generic error message
                    $login_err = "Invalid username or password.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            $stmt->close();
        }
    }
    
    // Close connection
    $mysqli->close();
}
?>
 



    
    Login
    
    


    

Login

Please fill in your credentials to login.

' . $login_err . '

'; } ?> " method="post">

Username

Password

Don't have an account? Sign up now.

prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if($stmt->execute()){
                // Check if username exists, if yes then verify password
                if($stmt->rowCount() == 1){
                    if($row = $stmt->fetch()){
                        $id = $row["id"];
                        $username = $row["username"];
                        $hashed_password = $row["password"];
                        if(password_verify($password, $hashed_password)){
                            // Password is correct, so start a new session
                            session_start();
                            
                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;                            
                            
                            // Redirect user to welcome page
                            header("location: welcome.php");
                        } else{
                            // Password is not valid, display a generic error message
                            $login_err = "Invalid username or password.";
                        }
                    }
                } else{
                    // Username doesn't exist, display a generic error message
                    $login_err = "Invalid username or password.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            unset($stmt);
        }
    }
    
    // Close connection
    unset($pdo);
}
?>
 



    
    Login
    
    


    

Login

Please fill in your credentials to login.

' . $login_err . '

'; } ?> " method="post">

Username

Password

Don't have an account? Sign up now.

— Keluaran dari contoh di atas (i. e. form login) akan terlihat seperti ini

Bagaimana pendaftaran pengguna baru yang disetujui di php mysql?

Langkah 2. Membuat Halaman Selamat Datang

Ini kode "selamat datang. php", tempat pengguna dialihkan setelah berhasil login

_0

Jika data berasal dari sumber eksternal seperti formulir yang diisi oleh pengguna anonim, ada risiko bahwa data mungkin berisi skrip berbahaya yang diindentasi untuk meluncurkan serangan skrip lintas situs (XSS). Oleh karena itu, Anda harus menghindari data ini menggunakan fungsi PHP _______1_______8 sebelum menampilkannya di browser, sehingga setiap tag HTML yang dikandungnya menjadi tidak berbahaya

Misalnya, setelah keluar dari karakter khusus, string

9 menjadi 
connect_error);
}
?>
0 yang tidak dijalankan oleh browser

Langkah 3. Membuat Skrip Logout

Sekarang, mari buat file "logout. php". Saat pengguna mengklik tautan logout atau logout, skrip di dalam file ini akan menghapus sesi dan mengarahkan pengguna kembali ke halaman login

_


Menambahkan Fitur Reset Kata Sandi

Terakhir, di bagian ini kami akan menambahkan utilitas reset kata sandi ke sistem login kami. Dengan menggunakan fitur ini, pengguna yang masuk dapat langsung mengatur ulang kata sandi mereka sendiri untuk akun mereka

Bagaimana cara membuat formulir pendaftaran pengguna dengan php dan MySQL?

Langkah – Masuk dan Daftar Formulir PHP .
Buat indeks. file php. .
Buat database MySql baru di PHPMyAdmin dan tabel pengguna baru tempat Anda ingin menyimpan detail login pengguna
Buat linkDB. file php. .
Buat server. file php. .
Buat LoggedInPage. file php. .
Buat login. file php

Bagaimana cara mengautentikasi pengguna MySQL di php?

Langkah-langkah membuat sistem autentikasi login pengguna di PHP .
Buat database MySQL dengan tabel pengguna
Buat panel login pengguna untuk mengirimkan detail login ke PHP
Buat kueri untuk membandingkan detail login pengguna dengan database pengguna MySQL

Bagaimana Anda akan memvalidasi nama pengguna dan kata sandi dengan database pengguna terdaftar MySQL?

Struktur File .
daftar. html — Formulir pendaftaran dibuat dengan HTML5 dan CSS3. .
gaya. css — Lembar gaya (CSS3) untuk formulir pendaftaran aman kami
daftar. php — Validasi data formulir dan masukkan akun baru ke database MySQL
mengaktifkan. php — Mengaktifkan akun pengguna dengan kode unik (aktivasi berbasis email)

Bagaimana cara mengambil data pengguna terdaftar dari database di php MySQL?

Data dapat diambil dari tabel MySQL dengan mengeksekusi pernyataan SQL SELECT melalui fungsi PHP mysql_query . Anda memiliki beberapa opsi untuk mengambil data dari MySQL. Opsi yang paling sering digunakan adalah menggunakan fungsi mysql_fetch_array(). Fungsi ini mengembalikan baris sebagai larik asosiatif, larik numerik, atau keduanya.