Sosyal açıldı! Bir göz at → Hemen gir →

ÇÖZÜLDÜ PHP login yardım

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

DelitaY

KY Saygın Üye
Yardımsever
KAYIT
24 Ağu 2023
Mesajlar
1,296
Çözümler
16
Tepki puanı
430
Konum
Kayseri
arkadaşlar login giriş de bir açık var userin asıl kayıt ismini biliyorsanız sallama bir şifre ile panele giriliyor db şifre kontrolü yapmıyor bu hatayı nasıl düzeltirim

PHP:
<?php
$pageTitle = "GiriÅŸ Yap";
?>
<title><?=$ServerName;?> ~ <?=$pageTitle;?></title>
<?PHP

 if( !defined('FEAR') ) {
    die("Erisim Engellendi! - <b>X</b>");
  }
 
 if($login_status != 1):
    $dbo->uyari('Giriş yapma kapalıdır!');
    $dbo->yonlendir(''.$base_url.'',1);
 else:
    $username  = $dbo->SQLSecurity($dbo->security($_POST['LoginFormUsername']));
    $password  = $dbo->SQLSecurity($dbo->security($_POST['LoginFormPassword']));
    $loginip   = $_SERVER['REMOTE_ADDR'];
    $logindate = date("Y-m-d H:i:s");
    if(empty($username) or empty($password)):
        $dbo->uyari(''.$lang['BlankSpace'].'');
        $dbo->yonlendir(''.$base_url.'',1);
    else:
        $dbo->doquery("SELECT strAuthority , strAccountID , CashPoint FROM TB_USER WHERE strAccountID = '$username' AND strPasswd = dbo.HashPasswordString('$password')");
        $u = $dbo->result('strAuthority');
            if($u >= 0):
                $_SESSION['LoginFormPassword'] = $u;
                $_SESSION['LoginFormUsername'] = $username;
                $dbo->doquery("UPDATE _mykol SET MyKOLLastIPAdress = '$loginip' , MyKOLLastLogin = '$logindate' WHERE strAccountID = '$username'");
                $dbo->yonlendir(''.$base_url.'',0);
            else:
                $dbo->uyari(''.$lang['WrongUsername'].'');
                $dbo->yonlendir(''.$base_url.'',1);
            endif;
    endif;
 endif;
?>
 

beal1903

KY Uzman Üye
KAYIT
27 Ağu 2023
Mesajlar
297
Çözümler
2
Tepki puanı
99
$u = $dbo->result('strAuthority');
if ($u >= 0) { ... }
sorun burada
Sorun, sorgudan gerçekte bir satır dönmese bile strAuthority alanını doğrudan çekip sonrasında >= 0 kontrolü yapmanızdan kaynaklanıyor. Yani:

kullanabileceğin doğru kod yapısı
Kod:
<?php
$pageTitle = "Giriş Yap";
?>
<title><?=$ServerName;?> ~ <?=$pageTitle;?></title>
<?php

// FEAR sabiti tanımlı mı kontrolü
if (!defined('FEAR')) {
    die("Erişim Engellendi! - <b>X</b>");
}

// Eğer login işlemi kapalıysa...
if ($login_status != 1) {
    $dbo->uyari('Giriş yapma kapalıdır!');
    $dbo->yonlendir($base_url, 1);
    exit;
}

// POST'tan gelen verileri alıp temel güvenlik işlemlerinden geçiriyoruz
$username  = trim($dbo->SQLSecurity($dbo->security($_POST['LoginFormUsername'])));
$password  = trim($dbo->SQLSecurity($dbo->security($_POST['LoginFormPassword'])));

$loginip   = $_SERVER['REMOTE_ADDR'];
$logindate = date("Y-m-d H:i:s");

// Kullanıcı adı veya şifre boşsa uyarı verip yönlendiriyoruz
if (empty($username) || empty($password)) {
    $dbo->uyari($lang['BlankSpace']);
    $dbo->yonlendir($base_url, 1);
    exit;
}

// Veritabanından kullanıcıyı çekiyoruz.
// Burada sorgu sonucunda hiç satır dönmezse, kullanıcı adı veya şifre hatalı demektir.
$sql = "
    SELECT strAuthority, strAccountID, CashPoint
    FROM TB_USER
    WHERE strAccountID = '$username'
      AND strPasswd = dbo.HashPasswordString('$password')
";
$dbo->doquery($sql);

// Eğer sonuç yoksa (kayıt bulunamadıysa)
if ($dbo->rows() < 1) {
    $dbo->uyari($lang['WrongUsername']);
    $dbo->yonlendir($base_url, 1);
    exit;
}

// Kayıt var ise tek satır alıyoruz
$row = $dbo->fetchRow();

// strAuthority değerini kontrol ediyoruz
// Sistemde ">= 0" olması giriş yapmak için yeterli bir kural gibi tanımlanmışsa böyle kalabilir.
// Giriş yetkisi yoksa da yönlendiriyoruz.
if ($row['strAuthority'] >= 0) {
    // Oturum değişkenlerine kaydedelim
    $_SESSION['LoginFormUsername'] = $row['strAccountID'];
    // İsimlendirme olarak LoginFormPassword yerine UserAuthority vb. kullanmanız önerilir
    $_SESSION['LoginFormPassword'] = $row['strAuthority'];

    // Log bilgilerinin güncellenmesi
    $updateSql = "
        UPDATE _mykol
        SET
            MyKOLLastIPAdress = '$loginip',
            MyKOLLastLogin = '$logindate'
        WHERE strAccountID = '$username'
    ";
    $dbo->doquery($updateSql);

    // Başarıyla giriş yapınca anasayfaya veya istediğiniz yere yönlendiriyoruz
    $dbo->yonlendir($base_url, 0);
    exit;
} else {
    // Giriş yetkisi uygun değilse
    $dbo->uyari($lang['WrongUsername']);
    $dbo->yonlendir($base_url, 1);
    exit;
}
?>
 

DelitaY

KY Saygın Üye
Yardımsever
KAYIT
24 Ağu 2023
Mesajlar
1,296
Çözümler
16
Tepki puanı
430
Konum
Kayseri
$u = $dbo->result('strAuthority');
if ($u >= 0) { ... }
sorun burada
Sorun, sorgudan gerçekte bir satır dönmese bile strAuthority alanını doğrudan çekip sonrasında >= 0 kontrolü yapmanızdan kaynaklanıyor. Yani:

kullanabileceğin doğru kod yapısı
Kod:
<?php
$pageTitle = "Giriş Yap";
?>
<title><?=$ServerName;?> ~ <?=$pageTitle;?></title>
<?php

// FEAR sabiti tanımlı mı kontrolü
if (!defined('FEAR')) {
    die("Erişim Engellendi! - <b>X</b>");
}

// Eğer login işlemi kapalıysa...
if ($login_status != 1) {
    $dbo->uyari('Giriş yapma kapalıdır!');
    $dbo->yonlendir($base_url, 1);
    exit;
}

// POST'tan gelen verileri alıp temel güvenlik işlemlerinden geçiriyoruz
$username  = trim($dbo->SQLSecurity($dbo->security($_POST['LoginFormUsername'])));
$password  = trim($dbo->SQLSecurity($dbo->security($_POST['LoginFormPassword'])));

$loginip   = $_SERVER['REMOTE_ADDR'];
$logindate = date("Y-m-d H:i:s");

// Kullanıcı adı veya şifre boşsa uyarı verip yönlendiriyoruz
if (empty($username) || empty($password)) {
    $dbo->uyari($lang['BlankSpace']);
    $dbo->yonlendir($base_url, 1);
    exit;
}

// Veritabanından kullanıcıyı çekiyoruz.
// Burada sorgu sonucunda hiç satır dönmezse, kullanıcı adı veya şifre hatalı demektir.
$sql = "
    SELECT strAuthority, strAccountID, CashPoint
    FROM TB_USER
    WHERE strAccountID = '$username'
      AND strPasswd = dbo.HashPasswordString('$password')
";
$dbo->doquery($sql);

// Eğer sonuç yoksa (kayıt bulunamadıysa)
if ($dbo->rows() < 1) {
    $dbo->uyari($lang['WrongUsername']);
    $dbo->yonlendir($base_url, 1);
    exit;
}

// Kayıt var ise tek satır alıyoruz
$row = $dbo->fetchRow();

// strAuthority değerini kontrol ediyoruz
// Sistemde ">= 0" olması giriş yapmak için yeterli bir kural gibi tanımlanmışsa böyle kalabilir.
// Giriş yetkisi yoksa da yönlendiriyoruz.
if ($row['strAuthority'] >= 0) {
    // Oturum değişkenlerine kaydedelim
    $_SESSION['LoginFormUsername'] = $row['strAccountID'];
    // İsimlendirme olarak LoginFormPassword yerine UserAuthority vb. kullanmanız önerilir
    $_SESSION['LoginFormPassword'] = $row['strAuthority'];

    // Log bilgilerinin güncellenmesi
    $updateSql = "
        UPDATE _mykol
        SET
            MyKOLLastIPAdress = '$loginip',
            MyKOLLastLogin = '$logindate'
        WHERE strAccountID = '$username'
    ";
    $dbo->doquery($updateSql);

    // Başarıyla giriş yapınca anasayfaya veya istediğiniz yere yönlendiriyoruz
    $dbo->yonlendir($base_url, 0);
    exit;
} else {
    // Giriş yetkisi uygun değilse
    $dbo->uyari($lang['WrongUsername']);
    $dbo->yonlendir($base_url, 1);
    exit;
}
?>
teşekkür ederim hocam ilgilendiğiniz için fakat bu kodda da sıkıntı var hepsine kullanıcı adı yada şifre hatalı uyarısı veriyor giriş yapmıyor
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Anasayfa Kayıt ol Giriş yap
Üst Alt