Postingan lainnya
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.
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)
alhamdulillah sudah komplit semua ya echo juga md5, ini komplit kode nya
<pre>
<?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-&gt;prepare('SELECT user, password FROM admin WHERE user = :username');
$stmt-&gt;execute(array(
':username' =&gt; $username
));
$data = $stmt-&gt;fetch(PDO::FETCH_ASSOC);
if($data == false){
$errMsg = "User $username not found.";
}
else {
echo"$password&lt;br /&gt;$data[password]";
if($password == $data['password']) {
$_SESSION['username'] = $data['user'];
$_SESSION['password'] = $data['password'];
header('Location: index.php');
exit;
}
else
$errMsg = 'Password not match.';
}
}
catch(PDOException $e) {
$errMsg = $e-&gt;getMessage();
}
}
}
?> </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.
Coba $data['password'] tampung dalam sebuah variable biasanya mau
Sdr.yogapermana yang dimaksud begini :
<pre> $pass="$data[password]"; echo"$password<br />$pass"; if($password == $pass) { $_SESSION['username'] = $data['username']; $_SESSION['password'] = '$pass';
header('Location: index.php');
exit;
}
else
$errMsg = 'Password not match.'; </pre>
sudah saya coba, hasil sama, bahkan browser saya musnahkan dulu seluruh history nya pakai ccleaner. kemudian saya coba , tetap hasil sama [password not match].
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
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() > 0){ echo "berhasil"; }else{ echo "gagal"; }
</pre>
biasanya kalau begini kalau mengarah ke gagal dia masalahnya biasanya di bagian query nya semoga membantu