Hoşgeldin Misafir

SQL neden oluşur ? Yeni tür sitelerde SQL neden yok?

Varxas39

4 Nis 2020
68 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Evet bugün çok yardımcı olacağını düşündüğüm bir konu açıyorum çoğumuz SQL açığını biliyoruz fakat nasıl oluşur bilmiyoruz.Çoğumuz tez canlıyız direk hackleyelim istiyoruz fakat daha açık nasıl oluşur bilmeden sisteme girmeye çalışıyoruz.Şimdi bi MySQL bağlantısı oluşturalım ayrıca şunu demeliyim eğer belli bir düzeyde PHP bilmiyorsanız bu konuyu açmayın bile çünkü hiç bir şey anlamayacaksınızdır.
PHP:
<?php  $baglan = mysql_connect("localhost","root","404roman"); $veritabanı = mysql_select_db("404roman",$baglan); 
mysql_query("SET CHARACTER SET latin5"); ?>

gayet normal bir şekilde veri tabanımıza bağlantı kurduk.Bu dosyamızın adı baglantı.php olsun(yukarıdaki komutları içeren dosya)

şimdi ise başka bir dosya oluşturalım onun adı da query.php olsun
PHP:
<?php include("baglantı.php"); ?>
<html>

<head><title>MySQL</title><meta charset="utf-8"/></head>
<body>

<?php if($_POST){$kullanici=$_POST["username"];
$sifre = $_POST["password"]; 
if(!empty($kullanici) && !empty($sifre)){$ekle =mysql_query("insert into users('Username','Password') values('$kullanici','$sifre')");
if($ekle){echo "<font color='green'>Başarılı bir şekilde eklendi.</font>";}
else {echo "<font color='red'>Bir hata oluştu</font><br>".mysql.error();}
} ?>

<form action="" method="POST">
<tr>
<td><strong>İsim</strong></td>
<input type="text" name="username"/>
<br>
</tr>
<tr>
<td><strong>Şifre</strong></td>
<input type="password" name="password"/>
<br>
</tr>
<tr>
<input type="submit" value="Gönder"/>
</tr>
</form>

</body>
</html>

bu şekilde bir dosya oluşturduğumuz varsayalım peki mysql bağlantımızı oluşturduk.Verilerimizi ekledik.Şimdi bu SQL hatası neden oluşur ona bakalım kodlarımızın arasında 
PHP:
$ekle =mysql_query("insert into users('Username','Password') values('$kullanici','$sifre')");

böyle bir kod vardı ve biz hatırlarsanız yukarıda böyle bir şey daha eklemiştik 
PHP:
if($ekle){echo "<font color='green'>Başarılı bir şekilde eklendi.</font>";}
else {echo "<font color='red'>Bir hata oluştu</font><br>".mysql.error();}

burda biz sisteme diyoruz ki ben burda $ekle diye bir değer oluşturdum ve bu değerim içinde bunlar bunlar var eğer bu dosya doğru çalışırsa başarılı diye bana geri çevir eğer başarılı olmaz ise bi terslik gider ise else komutuna geç ve bana hatayı bildir burda hatayı bildiren şey
PHP:
mysql.error();

işte bu küçük komut eğer ben dosyamı 
PHP:
$ekle =mysql_query("insert into users('Username','Password') values('$kullanici','$sifre')");
// böyle değilde
$ekle =mysql_query("select into users('Username','Password') values('$kullanici','$sifre')");
diye yazsaydım burda "select into" yazdığımız için ve select into diye bir komut olmadığı için database bize hata vericek ve her zaman gördüğünüz fakat ne anlama geldiğini bilmediğiniz
"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'into users(Username,Password) values('Varxas39','1234')' at line 1" hatayı vericektir ve sistemde SQL hatası oluştuğu için database e girebileceğiz :)--
benden size bi fikir her zaman SQL'i  tırnak(') işareti koyarak aratmayın bazen sizden bir forum doldurmanızı ister burda olduğu gibi forumu doldurup enterladığınızda SQL hatasını alırsınız.--

Peki gelelim 2.konuya şimdiki sistemlerde neden bu SQL hatası ile karşılaşmıyoruz veya niye eskiye ziyaden daha az rastlanıyor sebebi şu ki güzel arkadaşlarım PHP'ciğimiz yeni çıkardığı 7.0 sürümleri ve üst sürümlerinde mysql bağlantı olayını kaldırdı PDO lar işin içine girdi.Bundan dolayı daha az karşılaşıyoruz.--


Umarım anlaşılır olmuştur anlamadığınız kısmı pm den yazarsanız veya konunun altına yazarsanız yardımcı olurum.