簡體   English   中英

代碼有時不插入mysql查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM