v2.5.2
Giriş yap

login.php'de if metodu tam olarak çalışmıyor

erdem
2,032 defa görüntülendi

Merhaba

class.crud.php

(adsbygoogle = window.adsbygoogle || []).push({});

<?php 
session_start();
require_once 'dbconfig.php';


class crud
{
	private $db;
	private $dbhost=DBHOST;
	private $dbuser=DBUSER;
	private $dbpass=DBPWD;
	private $dbname=DBNAME;
	
	function __construct()
	{ 
		try {
			
			$this->db=new PDO('mysql:host='.$this->dbhost.';dbname'.$this->dbname.';charset=utf8',$this->dbuser,$this->dbpass);
			
			// echo "Bağlantı Başarılı";

		} catch (Exception $e) {
			
			die("Bağlantı başarısız:".$e->getMessage());
		}
	}


	public function adminLogin($admin_username,$admin_pass)
	{

		try {

			$stmt=$this->db->prepare("SELECT * FROM admin WHERE admin_username=? AND admin_pass=?");
			$stmt->execute([$admin_username,md5($admin_pass)]);

			if ($stmt->rowCount()==1) {

				$row=$stmt->fetch(PDO::FETCH_ASSOC);
				
				$_SESSION["admin"]=[
					                "admin_username"    => $admin_username,
						            "admin_namesurname" => $row['admin_namesurname'],
						            "admin_file"        => $row['admin_file'],
						            "admin_id"          => $row['admin_id']
						           ];

			    return ['status' => TRUE];

			} else {

				return ['status' => FALSE];
			}
			
		} catch (Exception $e) {

			return ['status' => FALSE, 'error' => $e->getMessage()];
			
		}

	}
}

?>

login.php

(adsbygoogle = window.adsbygoogle || []).push({});

<?php 
require_once 'netting/class.crud.php';
$db=new crud();
?>
<!DOCTYPE html>
.
.
.

<div class="login-box-body">
      <p class="login-box-msg">Giriş yapmak için bilgilerinizi girin</p>



      <?php 

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

        $sonuc=$db->adminLogin(htmlspecialchars($_POST['admin_username']),htmlspecialchars($_POST['admin_pass']));

        if ($sonuc['status']) {

          header("Location:index.php");
          exit();

        } else {?>

          <div class="alert alert-danger">
          Bilgilerinizi kontrol edin...
          </div>
        
        <?php }

      }

      ?>

      <form action="" method="post">
        <div class="form-group has-feedback">
          <input type="text" class="form-control" placeholder="Kullanıcı adı" name="admin_username">
          <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
        </div>
        <div class="form-group has-feedback">
          <input type="password" class="form-control" placeholder="Şifre" name="admin_pass">
          <span class="glyphicon glyphicon-lock form-control-feedback"></span>
        </div>
        <div class="row">
          <div  class="col-xs-8">
            <div style="margin-left: 20px;" class="checkbox icheck">
              <label>
                <input type="checkbox"> Beni hatırla
              </label>
            </div>
          </div>
          <!-- /.col -->
          <div class="col-xs-4">
            <button type="submit" name="admin_login" class="btn btn-primary btn-block btn-flat">Giriş yap</button>
          </div>
          <!-- /.col -->
        </div>
      </form>
   
    </div>
    <!-- /.login-box-body -->
  

login.php sayfasında formdaki name lerle user pass yazıp index.php yönlendirmesini istiyorum
fakat id şifreyi yanlış yazsamda doğru yazsamda daima "Bilgilerinizi kontrol edin..." alerti geliyor
anladığım kadarıyla login.php'deki if ($sonuc['status']) de bir problem var daima else oluyor
buna bir çözüm bulabilirseniz çok sevinirim.

Cevap yaz
Cevaplar (2)
erdem
1582 gün önce

Malesef dediklerini yapmama rağmen değişen birşey yok bence hata status'ta direk else komutu işliyor

if ($sonuc['status']) {

      header("Location:index.php");
      exit();

    } else {?>

      <div class="alert alert-danger">
      Bilgilerinizi kontrol edin...
      </div>
    
    <?php }
pcmemo
1582 gün önce

Detaya girmeden yazacağım.
fonksiyon database içinde şifreni md5 ile şifrelenmiş olarak arıyor. Ama ben login sayfasından gönderirken input ettiğin şifre alanında md5'e çevirmediğini görüyorum. Yani şifrelemeden gönderiyorsun ama şifrelenmiş ile karşılaştırıyorsun.
class.crud.php deki

$stmt->execute([$admin_username,md5($admin_pass)]);

kısmını

$stmt->execute([$admin_username,$admin_pass]);

olarak düzeltip öyle dene. Databasedeki ilgili alanda şifreninde login girerken yazdığınla aynı olduğunu manuel olarak kontrol et.