Kullandığım scriptte şöyle bir sorun var: Üye girişi çift seçenekli, E mail+Şifre ya da usernaeme+şifre ile giriş yapılabiliyor ama şöyle bir sorun mevcut: Username+Şifre ile giriş yapılabilirken, email ile girişte problem var; şifre yazılmadan sadece email yazıldığında da giriş yapılabilmekte. email+şifre ile giriş yapılmaması ciddi bir güvenlik sorununa neden olmakta.
uyegirisok.php dosyam şu şekilde:
---------------
<?
$email = guvenlik($_POST['email']);
$parola = md5(guvenlik($_POST['parola']));
if ($email == "" or $parola == ""){
echo "
<script>
var nowOnload = window.onload;
window.onload = function () {
alert('Lütfen E-mail Adresinizi / Kullanıcı Adınızı ve Parolanızı Giriniz !');
window.location = 'index.php?page=giris';
if(nowOnload != null && typeof(nowOnload) == 'function') {
nowOnload();
}
}
</script>
";
} else {
$guvenlik = $_SESSION['kod'];
$pass = $parola;
$sql = mysql_query("SELECT * FROM uyeler WHERE email = '$email' or username='$email' and parola = '$pass'");
if (mysql_num_rows($sql) < 1){
header("location: index.php?page=giris&err=1");
} else {
$sql = mysql_query("SELECT * FROM uyeler WHERE email = '$email' or username='$email' and parola = '$pass'");
$a = mysql_fetch_assoc($sql);
if ($a[onay] != 1 ){
header("location: index.php?page=giris&err=2");
} else {
$_SESSION['giris'] = 1;
$_SESSION['uye'] = $a[Id];
header("location: index.php");
}
}
}
?>Bu problemi aşmam için bu kodlar nasıl düzenlenmeli lütfen yardımcı olur musunuz?
username or email / Üye girişi sorunu
2
●455
- 26-03-2013, 11:56:15
- 24-04-2013, 10:06:26Hocam su sekilde yapin eger girilen veri email adressi ise ayri, düz yazi ise ayri sorgu yaptirin. Yani su sekilde:
if(filter_var($email, FILTER_VALIDATE_EMAIL)){ $sql_addition = "email = '{$email}'"; } else { $sql_addition = "username = '{$email}'"; } $query = mysql_query("select * from uyeler where {$sql_addition} and parola = {$pass}"); - 25-04-2013, 23:45:42Kimlik doğrulama veya yönetimden onay bekliyor.daha iyi öğrenebilmeniz için

or dediğinizde ondan sonraki AND ler bir işe yaramaz yani or demeden önce siz email = 'email' ise veya kullanıcıadı = 'kullanıcı' ve şifre='sifre' ise demişsiniz kısaca.
Doğrusu şöyledir:
$sql = mysql_query("SELECT * FROM uyeler WHERE email = '$email' AND parola = '$pass' OR username='$email' AND parola = '$pass'");
