if() dalam script login

Yang kami pahami dalam if() bahwa == artinya sama , sedang != artinya tidak sama, ok .

nah dalam satu kasus script login menjadi terbalik fungsi, ini cuplikan scriptnya :


echo"$password == $data[password]";
if($password == $data['password']) {
$_SESSION['username'] = $data['username'];
$_SESSION['password'] = $data['password'];
header('Location: index.php');
exit;
}
else
$errMsg = 'Password not match.';
}

untuk echo yang paling atas ngecek benar ndak sih tidak sama karena password dianggap tidak sama sehingga larinya ke "password not match", padahal hasil echo nilai password sama persis tidak ada yang beda.

ini terjadi apa sebabnya?, tolong para pakar PHP kasih tahu sebab dan solusinya.

avatar mboh
@mboh

42 Kontribusi 6 Poin

Diperbarui 5 tahun yang lalu

6 Jawaban:

coba cek isi (echo) $password sendiri apa, dan echo juga $data['password'] apa. Kemungkinan berbeda. Makanya dia ke else nya. Btw, elsenya pakai { .. } (Tanda kurung pembuka)

avatar hilmanski
@hilmanski

2670 Kontribusi 2132 Poin

Dipost 5 tahun yang lalu

alhamdulillah sudah komplit semua ya echo juga md5, ini komplit kode nya

<pre>
&lt;?php require 'config.php';

if(isset($_POST[&#039;login&#039;])) {
	$errMsg = &#039;&#039;;

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

	if($username == &#039;&#039;)
		$errMsg = &#039;Enter username&#039;;
	if($password == &#039;&#039;)
		$errMsg = &#039;Enter password&#039;;

	if($errMsg == &#039;&#039;) {
		try {
			$stmt = $dbh-&amp;gt;prepare(&#039;SELECT user, password  FROM admin WHERE user = :username&#039;);
			$stmt-&amp;gt;execute(array(
				&#039;:username&#039; =&amp;gt; $username
				));
			$data = $stmt-&amp;gt;fetch(PDO::FETCH_ASSOC);

			if($data == false){
				$errMsg = &quot;User $username not found.&quot;;
			}
			else {
				echo&quot;$password&amp;lt;br /&amp;gt;$data[password]&quot;;
				if($password == $data[&#039;password&#039;]) {
					$_SESSION[&#039;username&#039;] = $data[&#039;user&#039;];
					$_SESSION[&#039;password&#039;] = $data[&#039;password&#039;];

					header(&#039;Location: index.php&#039;);
					exit;
				}
				else
					$errMsg = &#039;Password not match.&#039;;
			}
		}
		catch(PDOException $e) {
			$errMsg = $e-&amp;gt;getMessage();
		}
	}
}

?&gt; </pre>

hasil echo dari password sama persis , tapi tidak masuk index.php, malah tampil "Password not match", bahkan gue ilangin md5, dan database juga tanpa md5 , tetap saja password not match, untuk username normal.

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

Coba $data['password'] tampung dalam sebuah variable biasanya mau

avatar yogapermana
@yogapermana

39 Kontribusi 10 Poin

Dipost 5 tahun yang lalu

Sdr.yogapermana yang dimaksud begini :

<pre> $pass="$data[password]"; echo"$password&lt;br /&gt;$pass"; if($password == $pass) { $_SESSION['username'] = $data['username']; $_SESSION['password'] = '$pass';

					header(&#039;Location: index.php&#039;);
					exit;
				}
				else
					$errMsg = &#039;Password not match.&#039;; &lt;/pre&gt;

sudah saya coba, hasil sama, bahkan browser saya musnahkan dulu seluruh history nya pakai ccleaner. kemudian saya coba , tetap hasil sama [password not match].

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

saya amati berulangkali, ganti dengan script lain , yang tersendat di bagian passwordnya yg tidak mau lolos, selalu masuk ke else "wrong" , muncul pertanyaan lagi , ini scriptnya atau ada sesuatu lain ya yang menyebabkan seperti itu? tolong para pakar PHP saya butuh pencerahaannya

avatar mboh
@mboh

42 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

kalau saya bisanya nulis login kaya gini <pre> $query = "SELECT * FROM tbuser WHERE Username = '$Username' AND Password = '$Password'";

$hasil = mysqli_query($link , $query); if(mysqli_num_rows() &gt; 0){ echo "berhasil"; }else{ echo "gagal"; }

</pre>

biasanya kalau begini kalau mengarah ke gagal dia masalahnya biasanya di bagian query nya semoga membantu

avatar yogapermana
@yogapermana

39 Kontribusi 10 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban