在下面的这种基于mysql的逐字编码中,将解析一个CSV文件,并动态创建一个mySQL表。我只是在-> http://www.johnboy.com/blog/tutorial-import-a-csv-file-using-php-and-mysql

如您所见,他们正在使用加号。

这段代码为我节省了时间,但是在我开始使用它之前(在5.3版本的WordPress环境中,其中mysqli或PDO不可用),我想动动脑筋,以确保这样做的安全性。

一切都归结为斜线。我很好奇他们为什么不选择my_real_escape_string。

//connect to the database
$connect = mysql_connect("localhost","username","password");
mysql_select_db("mydatabase",$connect); //select the table
//

if ($_FILES[csv][size] > 0) {

    //get the csv file
    $file = $_FILES[csv][tmp_name];
    $handle = fopen($file,"r");

    //loop through the csv file and insert into database
    do {
        if ($data[0]) {
            mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES
                (
                    '".addslashes($data[0])."',
                    '".addslashes($data[1])."',
                    '".addslashes($data[2])."'
                )
            ");
        }
    } while ($data = fgetcsv($handle,1000,",","'"));
    //

    //redirect
    header('Location: import.php?success=1'); die;

}

最佳答案

PDOMySQLi具有用于创建准备好的查询的内置函数,这些查询使您可以使用引号和撇号而不会出现任何问题。

但对于您的问题:将addslashes()替换为mysql_real_escape_string()

addslashes可以很容易地通过,并且根本不安全。

Read this article for more info about bypassing addslashes.

10-04 10:47