[英]code sometimes does not insert the mysql query
此代碼旨在從Flash javascript上傳器插件上傳文件。 它不會給我一個錯誤,但有時它不會插入mysql查詢。 ps:每個發布的變量都是通過javascript(只是字母數字文本)清除的
<?php
include 'a/inc/db.php';
if (!empty($_FILES))
{
$tempFile = $_FILES['Filedata']['tmp_name'];
if (substr($_FILES['Filedata']['name'],-3)!='mp3')
{
echo 'ERROR: your file was not an mp3';
die();
}
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_POST['folder'] . '/';
$titlepost = $_POST['title'];
$tagspost = $_POST['tag'];
$artist= $_POST['artist'];
$i= $_POST['i'];
$targetFile = str_replace('//','/',$targetPath) .time().".mp3";
$targetFilea = $targetFile;
$targetFilea = substr($targetFilea , strrpos($targetFilea , 'music') -1);
move_uploaded_file($tempFile,$targetFile);
mysql_query('set names utf8');
$sql = mysql_query("INSERT INTO `Music` (`filename`, `title`, `tags`, `rating`, `click`, `rand`, `album`, `i`, `artist`)
VALUES ('".$targetFilea."', '".$titlepost."', '".$tagspost."', '0', '1', '".$ras."', '1', '".$i."', '".$artist."');")
or die(mysql_error());
$sqli = mysql_query("INSERT INTO `activity` (`from`, `what`, `text`)
VALUES ('".$i."', 'upload', '".$titlepost."');")
or die(mysql_error());
$click = mysql_query("SELECT *
FROM `Music`
WHERE `filename`='".$targetFilea."' ;");
while($row = mysql_fetch_array( $click ))
{
$mid=$row['id'];
echo "<id>".$row['id']."</id>";
}
mysql_close($connection);
}
echo "1";
?>
$sqli = mysql_query("INSERT INTO `activity` (`from`, `what`, `text`)
VALUES ('".$i."', upload', '".$titlepost."');")
有一個'
前缺少upload
嘗試以下方法(為安全起見還添加了mysql_real_escape_string):
$sqli = mysql_query("INSERT INTO `activity` (`from`, `what`, `text`)
VALUES ('".mysql_real_escape_string($i)."', 'upload', '".mysql_real_escape_string($titlepost)."');")
真正的錯誤是:您的代碼完全不安全 。 您僅使用JavaScript清理POST-Data並將其放入SQL查詢中? 任何人都可以輕松地注入一些自定義的SQL代碼,並且對您的數據庫確實有害 。 永遠不要依賴任何HTTP數據(無論是GET,POST還是其他任何東西)來確保安全。
我知道您不熟悉PHP,因此為了您的客戶,您的項目或使用代碼的任何人,老實說,鼓勵您在執行任何其他操作之前,先在SQL查詢中使用PHP清理POST-Data。 請。
甚至在Wikipedia上都有一篇文章,這是一個新手犯下的巨大錯誤,帶來了巨大的后果,這很容易避免。
http://en.wikipedia.org/wiki/SQL_injection
http://www.smashingmagazine.com/2009/03/24/10-useful-php-tips-revisited/ (提示1)
如果未插入記錄,則最有可能存在某些錯誤。 可能您沒有設置正確的錯誤報告,這就是為什么您看不到任何錯誤的原因。 在腳本上方的兩行下方,顯示所有錯誤。
ini_set('display_errors', true);
error_reporting(E_ALL);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.