v2.5.2
Giriş yap

Update sorgusu içinde varlık kontrolü

aydinkeskin
563 defa görüntülendi

güncelleme işlemi yapmadan önce aynı kayıtların varmı diye kontrol ettiriyorum
fakat zaten var olan kullanici adi ve şifreyi bunalrın dışında tutması için
böyle bir sql komutu kullanıyorum ama

bunda güncellemeye engel oluyor boş döndüyor

<?php
 $kontrol = pre("SELECT id,kullaniciadi,email FROM yonetici WHERE id NOT IN ($LastID)");
 $kontrol->execute([]); 
  foreach ($kontrol as $row){ 
   if($kullaniciadi == $row["kullaniciadi"]){
     $hata = uyaritime('primary',''.$kullaniciadi.' veya '.$email.' Adı Zaten Mevcut');
       if(isset($tekresim)) {DurumResimSil($resimverot,$dosyayolu,$tekresim);}
    }
  }
?>

sql de test ediyorum sorunsuz çalışıyor.
tam kodlar aşağıdaki gibi.

token süre hatasına düşüyor direk işlem oda arka tarafta düşüyor zaten yonlendirmesini gerçekleştirmiyor öyle olunca.

tam olarak yapmak istediğim.
düzenle sayfasında kullaniciadi veya email değiştirildiğinde
o kullaniciadi veya email sql tablosunda kendi kullandığı hariç id den arama yapması varsa hata vermesi

 <?php

if(isset($_POST["yoneticiguncelle"]) && $_SESSION["adminlogin"]=="true"){
	adminlogin();
	
	if (CSRF::validate_token($_POST["YoneticiDuzenleCSRFtoken"],"YoneticiDuzenleCSRFtoken")) {
		if(roleControl() or SUPERADMINROLE() ){
			
			if(isset($_POST["erkek"]))
				$cinsiyet = $_POST["erkek"] == "on" ? "Erkek" : "Kadın";
			elseif(isset($_POST["kadin"]))
				$cinsiyet = $_POST["kadin"] == "on" ? "Kadın" : "Erkek";
			
			
			
			$ad = guvenlik($_POST["ad"]);
			$soyad = guvenlik($_POST["soyad"]);
			$kullaniciadi = guvenlik($_POST["kullaniciadi"]);
			$usertype = guvenlik($_POST["role"]);
			$sifre = sha1(sha1($_POST["sifre"]));
			$sifre2 = sha1(sha1($_POST["sifre2"]));
			$email = guvenlik($_POST["email"]);
			$dt = guvenlik($_POST["dt"]);  
			$telefon = guvenlik($_POST["gsm"]);
			$website = guvenlik($_POST["website"]);
			$anadil = guvenlik($_POST["anadil"]);
			$gender = $cinsiyet;
			$ILETISIMemail = isset($_POST["ILETISIMemail"]) == "on" ? guvenlik($_POST["ILETISIMemail"]) : "";
			$ILETISIMsms = isset($_POST["ILETISIMsms"]) == "on" ? guvenlik($_POST["ILETISIMsms"]) : "";
			$ILETISIMtelefon = isset($_POST["ILETISIMtelefon"]) == "on" ? guvenlik($_POST["ILETISIMtelefon"]) : "";
			$adres1 = guvenlik($_POST["adres1"]);
			$adres2 = guvenlik($_POST["adres2"]);
			$postakod = guvenlik($_POST["postakod"]);
			$sehir = guvenlik($_POST["sehir"]);
			$ilce = guvenlik($_POST["ilce"]);
			$ulke = guvenlik($_POST["ulke"]);
			$twitter = guvenlik($_POST["twitter"]);
			$facebook = guvenlik($_POST["facebook"]);
			$instagram = guvenlik($_POST["instagram"]);
			$github = guvenlik($_POST["github"]);
			$codepen = guvenlik($_POST["codepen"]);
			$slack = guvenlik($_POST["slack"]); 
			$LastID = intval($_POST['LastID']);

				
			$yeniisim = sha1(md5(date("1YmdHis")));
			$uzanti = 'jpg';
			$files = 'resim'; 
			$multifiles = 'cokresim';
			$dosyayolu =  __ROOT__."/uploads/yonetici/";
			$x =  $boyut['yonetici_w'];
			$y =  $boyut['yonetici_h'];
				$coklu = new resim(); 
				// $w = $resimW == null ? $x : $resimW;
				// $h = $resimH == null ? $y : $resimH;
				$resimverot = $coklu->cokyukle($files,$dosyayolu,$x,$y);

				
 
			if(GDControl() and ($gd2["GD"] == 1) ){
				if(!empty($resimverot)){	
					$wepb = webp($dosyayolu.$resimverot); 
						$tekresim = webpTemizle($dosyayolu,$wepb); 
				}	
			}else{
				$tekresim = $coklu->cokyukle($files,$dosyayolu,$w,$h);
			}
		
			if(!empty($kullaniciadi) or !empty($email) ){
				$kontrol = pre("SELECT id,kullaniciadi,email FROM yonetici WHERE id NOT IN ($LastID)");
				$kontrol->execute([]); 
					foreach ($kontrol as $row){ 
						if($kullaniciadi == $row["kullaniciadi"]){
							$hata = uyaritime('primary',''.$kullaniciadi.' veya '.$email.' Adı Zaten Mevcut');
							if(isset($tekresim)) {DurumResimSil($resimverot,$dosyayolu,$tekresim);}
						}
					}
			}elseif( !empty($sifre) != !empty($sifre2) ){
				$hata = uyaritime('info','Girilen Şifreler Birbirinden Farklı');
				if(isset($tekresim)) DurumResimSil($resimverot,$dosyayolu,$tekresim);
			}elseif( $sifre != $sifre2 ){
				$hata = uyaritime('info','Girilen Şifreler Birbirinden Farklı');
				if(isset($tekresim)) DurumResimSil($resimverot,$dosyayolu,$tekresim);
			}elseif(empty($usertype)){
				$hata = uyaritime('info','Lütfen Yetki Tanımlayınız');
				if(isset($tekresim)) DurumResimSil($resimverot,$dosyayolu,$tekresim);
			}elseif(empty($kullaniciadi)){ 
				$hata = uyaritime('info','LütfenKullancı Adı Belirtiniz.');
				if(isset($tekresim)) DurumResimSil($resimverot,$dosyayolu,$tekresim);
			}elseif(empty($sifre) and empty($sifre2) ){
				$sql = "UPDATE yonetici SET
							ad=?, soyad=?, kullaniciadi=?, usertype=?, email=?, dt=?, telefon=?, 
							website=?, anadil=?, gender=?, ILETISIMemail=?, ILETISIMsms=?, ILETISIMtelefon=?, 
							adres1=?, adres2=?, ilce=?, ulke=?, postakod=?, sehir=?, 
							twitter=?, facebook=?, instagram=?, github=?, codepen=?, slack=?, create_at=?, durum=?
						WHERE id=?";
				$kayit = $db->prepare($sql);
				$kayit->execute([$ad,$soyad,$kullaniciadi,$usertype,$email,$dt,$telefon,
								$website,$anadil,$gender,$ILETISIMemail,$ILETISIMsms,$ILETISIMtelefon,
								$adres1,$adres2,$ilce,$ulke,$postakod,$sehir,
								$twitter,$facebook,$instagram,$github,$codepen,$slack,$date,"Aktif",$LastID]);
				if($kayit ){
					$hata = uyari('success', kisalt1($kullaniciadi,20).' AdlıYönetici Başarıyla Güncellendi.',PANEL.'/Ayarlar/Yonetici/',3);
					unset($_SESSION["YoneticiDuzenleCSRFtoken"]);
				}else{
					$hata = uyari('danger', kisalt1($kullaniciadi,20).' AdlıYönetici Güncellenirken Bir Sorun Oluştu!',PANEL.'/Ayarlar/Yonetici/',3);
				}
			}else{
				$sql = "UPDATE yonetici SET
							ad=?, soyad=?, kullaniciadi=?, sifre=?, sifre2=?, usertype=?, email=?, dt=?, telefon=?, 
							website=?, anadil=?, gender=?, ILETISIMemail=?, ILETISIMsms=?, ILETISIMtelefon=?, 
							adres1=?, adres2=?, ilce=?, ulke=?, postakod=?, sehir=?, 
							twitter=?, facebook=?, instagram=?, github=?, codepen=?, slack=?, create_at=?, durum=?
						 WHERE id=?";
				$kayit = $db->prepare($sql);
				$kayit->execute([$ad,$soyad,$kullaniciadi,$sifre,$sifre2,$usertype,$email,$dt,$telefon,
								$website,$anadil,$gender,$ILETISIMemail,$ILETISIMsms,$ILETISIMtelefon,
								$adres1,$adres2,$ilce,$ulke,$postakod,$sehir,
								$twitter,$facebook,$instagram,$github,$codepen,$slack,$date,"Aktif",$LastID]);
				if($kayit ){
					$hata = uyari('success', kisalt1($kullaniciadi,20).' AdlıYönetici Başarıyla Güncellendi.',PANEL.'/Ayarlar/Yonetici/',3);
					unset($_SESSION["YoneticiDuzenleCSRFtoken"]);
				}else{
					$hata = uyari('danger', kisalt1($kullaniciadi,20).' AdlıYönetici Güncellenirken Bir Sorun Oluştu!',PANEL.'/Ayarlar/Yonetici/',3);
				}
			}
		
		}else{
			$hata = DemoUyari('info','İşlem İçin Yetki Seviyeniz Yeterli Değil.');
		}
	}else{
		$hata = uyaritime('danger','Token Hatası veya İllegal Durum Denemesi '.ipadres().' İP Adresiniz Kayıt Edilmiştir.');
		yonlendir(PANEL.'/exit.php',5);
	}
}
		
 
 ?>
 
 
 
Cevap yaz
Cevaplar (3)
aydinkeskin
1229 gün önce

@tayfun hocam seninkide işlem yaptırıp yaptırmam olayı
benim istediğim bu değil ben zaten onu kontrol fonksiyonları ile yapıyorum.

verdiğim tabloda yapmıyor bu işlemi kullanıcıadı ve email boş değil kontrol ettirmeye atıyorum ve kontrol edilen id den güncellenen id yi çıkartıyorum
diğerlerinin arasında varmı bu yazılan isim diye
haliyle kontrol ediyor varsa uyarı veriyor
fakat yoksa güncelleme işlemi yapması gerkeiyor yapmıyor sayfa refresh atıyor sanki boş dönüyor.

}elseif( !empty($sifre) != !empty($sifre2) ){

bu koşula düşmüyor ki bundan sonrakilere düşsün.

aydinkeskin
1233 gün önce

ya anlamadığım elseif yapısında doğru olan koşullar if elseif arasında değilse else dönmesi gerekiyor.

yukarda yaptığım şekilde zaten kontrollerin hepsini tek tek kontrol ediyorum kontrollerden geçiriyor.hiç bir dert yok
sadece yukardakine ek olarak

<?php

			$kontrol = pre("SELECT id,kullaniciadi,email FROM yonetici WHERE id NOT IN ($LastID)");
			$kontrol->execute([]); 
				foreach ($kontrol as $row){ 
					if($kullaniciadi == $row["kullaniciadi"] or $email == $row["email"]){
						$hata = uyaritime('primary',''.$kullaniciadi.' veya '.$email.' Adı Zaten Mevcut');
						if(isset($tekresim)) {DurumResimSil($resimverot,$dosyayolu,$tekresim);}
					}
				}

?>

buraya email i de ekledim

sorumdaki if elseif else dede bütün koşullar sağlanmasına rağmen else dönmesi gerekiyor
fakat else dönmüyor hiç bir işlem de yapmıyor güncelleme işlemi yapmıyor hata vermiyor sinir etti gece gece

saçma düzen olan
if
else

if
else
    if
    else
        if
        else
        
        
        

bu şekilde aynı işlemleri yaptığım zaman hiç bir sorun olmadan çalışıyor zaten

tayfun kardeşim senin dediğinde id yi sessionda tutuyorum zaten fakat onun tam olarak bu koşul kümesinde bana nasıl bir yardımı

post tan aldığım LASTID (15) üye girişi yaptığım SESSİON id (20)

söyle bişi mi demek istedin acaba.

<?php
if(kullaniciadi and email){

if(lastid != $_SESSION["id"]){
		$kontrol = pre("SELECT id,kullaniciadi,email FROM yonetici WHERE id NOT IN ($LastID)");
		$kontrol->execute([]); 
			foreach ($kontrol as $row){ 
				if($kullaniciadi == $row["kullaniciadi"] or $email == $row["email"]){
					$hata = uyaritime('primary',''.$kullaniciadi.' veya '.$email.' Adı Zaten Mevcut');
					if(isset($tekresim)) {DurumResimSil($resimverot,$dosyayolu,$tekresim);}
				}
			}
}

}
?>
denim yine ama pek umudum yok açıkçası ama yine olmazki yok kafam durdu çalışmıyor ben yatayım
iyi geceler :)

tayfunerbilen
1233 gün önce

tek ihtiyacın sorguya id != session('id') şeklinde ekleme yapmak, giriş yapanın id'si değilse işlem yap gibi sorguya dahil ediyorsun, session id kendine göre düzenlemen lazım tabi