PHP Sorgu Fail

2 Cevap php
<?php
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$dbhost = 'localhost';
$dbuser = 'zuk1_boo';
$dbpass = 'lols';
$dbname = 'zuk1_boo';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');

$name = $_POST['name'];
$iq = $_POST['iq'];

$nuname = str_replace(" ", "-", $name);
$nuname = $nuname.".gif";
$path = "img/$nuname";

move_uploaded_file($_FILES['userfile']['tmp_name'],$path);

$query = "INSERT INTO celebs (celeb,path1,iqq) VALUES ('$name','$path','$iq')";

mysql_query($query) or die('q fail');

mysql_close($conn);

echo "<br>File $fileName uploaded<br>";
}
?>

<form method="post" enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<tr><td><input name="name" type="text" value="name"></td></tr>
<tr><td><input name="iq" type="text" value="iq"></td></tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>

Akılda çıplak orada bir kimlik satır otomatik artış ile ama ben sorguya eklemek bile hala çalışmaz.

Ne olursa olsun ben bu sorgu ile ne sadece çalışmıyor OLACAKTIR, yine ince bağlantı gibi görünüyor olsa da, ben üçlü sql ayrıntıları kontrol ettik ve onlar gayet iyi. Ben sorguda alan adları ile oynadım ve ince olmalı ama sadece işe yaramaz! Bana yardımcı olabilecek herkese 5 $ Paypal, dürüstçe yanlış yüzden sinirli değilim.

2 Cevap

mysql_query($query) or die('q fail');

Bu değiştirin

mysql_query($query) or die(mysql_error());

Ve ne olsun bize.

Eh, şimdi gerçek sorunu çözdük ki, ben size büyük şaşkın SQL injection delik olduğunu işaret etmek iyi olduğunu düşünüyorum.

Düzeltmek için ideal bir yol PDO veya MySQLi fonksiyonları ve parametreli sorgular kullanmak kullanarak geçiş olacağını, ancak hızlı düzeltme bu satırları değiştirmek olacaktır:

$name = $_POST['name'];
$iq = $_POST['iq'];

karşı

$name = mysql_real_escape_string($_POST['name']);
$iq = mysql_real_escape_string($_POST['iq']);

The code you have now would be extremely unsafe karşı make public.