Ada keanehan pada password login

Mohon pencerahaan dari yang tahu masalah ini, terutama dari pakar PHP:

ini script loginnya :

 <?php
	require 'config.php';

	if(isset($_POST['login'])) {

		$errMsg = '';

		// Get data from FORM
		$username = $_POST['username'];
		$password = md5($_POST['password']);

		if($username == '')
			$errMsg = 'Enter username';
		if($password == '')
			$errMsg = 'Enter password';

		if($errMsg == '') {
			try {
				$stmt = $dbh->prepare('SELECT id, nama, user, password FROM admin WHERE user = :username');
				$stmt->execute(array(
					':username' => $username
					));
				$data = $stmt->fetch(PDO::FETCH_ASSOC);

				if($data == false){
					$errMsg = "User $username not found.";
				}
				else {

			echo"$password<br />$data[password]"; //echo password
					if($password == $data['password']) {

						$_SESSION['name'] = $data['nama'];
						$_SESSION['username'] = $data['user'];
						$_SESSION['password'] = $data['password'];

						header('Location: index.php');
						exit;
					}
					else
						$errMsg = 'Password not match.';
				}
			}
			catch(PDOException $e) {
				$errMsg = $e->getMessage();
			}
		}
	}

?>
avatar mboh
@mboh

42 Kontribusi 6 Poin

Diperbarui 5 tahun yang lalu

9 Jawaban:

coba bikin lebih simple dulu scriptnya pastikan tidak ada masalah

  1. Pake die

<pre> if($password == $data['password']) { die('berhasil! password sama'); } else { die('Tidak berhasil! password tidak sama'); } </pre>

lihat dia masuk ke bagian mana. kalo sudah benar masuk ke if, sekarang hapus 'echo' nya. Dan diperbaiki tanda kurungkurawal dan akhir di bagian else nya,

avatar hilmanski
@hilmanski

2672 Kontribusi 2132 Poin

Dipost 5 tahun yang lalu

sudah dicoba dan masuknya ke

[Tidak berhasil! password tidak sama]

aneh sekali, solusinya gimana?

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

Secara script saya ngga tahu masalahnya apa, kalau ternyata pas di echo hasil passwordnya sama. Yang bisa saya sarankan, coba simpan password dan verifikasinya menggunakan metode dari PHP

Membuat/Hash password [link]http://php.net/manual/en/function.password-hash.php [/link] Verifikasi password [link]http://php.net/manual/en/function.password-verify.php [/link]

Kalau mau tutorialnya, ada di kelas ini <a href='https://sekolahkoding.com/kelas/membuat-sistem-login-dan-register '>https://sekolahkoding.com/kelas/membuat-sistem-login-dan-register </a>

avatar hilmanski
@hilmanski

2672 Kontribusi 2132 Poin

Dipost 5 tahun yang lalu

sudah saya temukan , tapi menjadi tanda tanya

<pre> $pass=substr($data['password'],0, -2); </pre>

setelah diambil dua karakter di belakang baru hasilnya sesuai, jadi ketambahan 2 karakter dibelakang tapi hidden, itu dari mana ya?

saya cek di databasenya tidak ada tambahan spasi, aneh sekali.

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

coba pake trim gan <pre> $pass=trim($data['password']); </pre>

avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 5 tahun yang lalu

Salam dianafir berhasil login dengan mulus sama persis hasilnya seperti cara terakhir saya lakukan, tapi yang dari dianafir lebih simple tidak bertele tele. terima kasih banyak.

tapi saya masih ingin melanjutkan diskusi login ini, begini -> praktek login di server Xampp bisa mulus langsung masuk halaman landas tanpa halangan, tapi di server hosting masih mengalami jeda berhenti dihalaman login dengan tampilan kosong , sementara solusinya diruang kosong itu saya tambahkan tombol link ke halaman landas , untuk masuk, itu tombol hidden kalau belum proses login, jika setelah proses login , berhasil atau gagal login muncullah tombol itu.

skema :

Xampp = Login -> berhasil -> halaman landas

Hosting = Login -> berhasil -> tombol link -> halaman landas

kalau gagal login di keduanya ya tidak bisa masuk halaman landas.

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

Jawaban Terpilih

coba errornya tampilin gan <pre> error_reporting(E_ALL); ini_set('display_errors', 1); </pre>

avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 5 tahun yang lalu

hasil error yang muncul setelah menambahkan : <pre>error_reporting(E_ALL); ini_set('display_errors', 1);</pre>

[ Warning: Cannot modify header information - headers already sent by (output started at ]

itu pada <pre>header('Location: index.php');</pre>

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

alhamdulillah masalah sudah ketemu dan tanpa error , ternyata hanya masalah html <pre>&lt;!doctype html&gt; &lt;html lang="en"&gt; &lt;head&gt;</pre>

posisinya sebelum kode PHP, setelah kode PHP saya letakkan diatasnya masalah selesai non error.

thanks untuk semua pendukung.

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban