Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mendapatkan kesalahan menggunakan fungsi mysqli_escape_string

Ada terlalu banyak hal yang salah dengan kode Anda dan akan sangat sulit untuk memberikan solusi dengan memperbaiki apa yang Anda miliki sekarang.

Pertama, MD5 tidak lagi dianggap aman digunakan untuk penyimpanan kata sandi.

Konsultasikan:

Plus, Anda tidak menggunakan pernyataan yang disiapkan dengan benar.

Seperti yang saya nyatakan, mysqli_escape_string() fungsi membutuhkan koneksi database yang diteruskan sebagai parameter pertama:

Tolonglah dirimu sendiri dan gunakan ini, salah satu jawaban ircmaxell https://stackoverflow.com/a/29778421/

Diambil dari jawabannya:

Gunakan saja perpustakaan. Dengan serius. Mereka ada karena suatu alasan.

Jangan lakukan sendiri. Jika Anda membuat garam sendiri, ANDA LAKUKANNYA SALAH . Anda harus menggunakan perpustakaan yang menanganinya untuk Anda.

$dbh = new PDO(...);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);

$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);

Dan saat masuk:

$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
    if (password_verify($_POST['password'], $users[0]->password) {
        // valid login
    } else {
        // invalid password
    }
} else {
    // invalid username
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya mengimpor struktur yang diperbarui ke tabel MySQL tanpa kehilangan kontennya saat ini?

  2. Bagaimana cara menggabungkan LIKE dengan IN dalam kueri MYSQL?

  3. Bagaimana saya bisa membuat ambang batas untuk string serupa menggunakan jarak Levenshtein dan memperhitungkan kesalahan ketik?

  4. PERINGATAN SqlExceptionHelper:143 - Kesalahan SQL:0, SQLState:08S01- SqlExceptionHelper:144 - Kegagalan tautan komunikasi

  5. Pilih nilai antara tanggal mulai dan tanggal akhir