Latihan 1: Password Hashing & Sessions — PHP

Latihan 1 dari materi Password Hashing & Sessions di PHP — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Simulasikan alur login. Starter-nya sudah punya $users berisi satu akun, [email protected], yang password-nya disimpan sebagai password_hash("rahasia", PASSWORD_BCRYPT), dan dua baris echo login(...) di bawah. Biarkan semuanya, lengkapi fungsi login($users, $email, $password).

  1. Telusuri $users dan cari akun yang email-nya sama. Kalau gak ada sama sekali, kembalikan User tidak ditemukan.
  2. Kalau akunnya ada, cocokkan password dengan password_verify($password, $user["password"]), bukan dengan ===.
  3. Kembalikan Login berhasil kalau cocok, atau Password salah kalau gak.

Dua echo di starter harus menulis:

Login berhasil
Password salah

Penilai juga menjalankan login($users, "[email protected]", "rahasia") dan mengharapkan User tidak ditemukan, lalu membuat akun baru dengan password_hash("baru", PASSWORD_DEFAULT) dan mengharapkan login dengan baru berhasil. Hash-nya hash bcrypt asli: coba echo $users[0]["password"];, hasilnya diawali $2y$12$ dan berubah tiap kali dijalankan, karena salt-nya acak. (Di halaman login sungguhan, dua kegagalan ini dijawab dengan kalimat yang sama; di sini dipisah supaya ketiga cabangnya bisa diperiksa.)

Hint