哪个类型file_get_content()返回?

时间:2014-06-13 09:08:10

标签: php html5

我有简单的代码,我可以获取文件的内容,并将其保存在浏览器中 HTML5中的本地Db 这里是代码

<!DOCTYPE HTML>
<html>
<head> 
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 100 * 1024 * 1024);
var msg;
db.transaction(function (tx) {

tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log, content LONGBLOB not       null)');

<?php   

$sql1 = "INSERT INTO LOGS(id, log,content)
         VALUES('5','abc','" . mysql_escape_string(file_get_contents("43.mp3")) . "')";

?>


 var v= "<?php echo $sql1;?>";
 console.log(v);
 tx.executeSql(v);
 msg = '<p>Log message created and row inserted.</p>';
 document.querySelector('#status').innerHTML =  msg;

});

db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "<p>Found rows: " + len + "</p>";
document.querySelector('#status').innerHTML +=  msg;
for (i = 0; i < len; i++){
 msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
 document.querySelector('#status').innerHTML +=  msg;
}
     }, null);
  });

 </script>
 </head>
 <body>
 <div id="status" name="status">No Data </div>

 </body>
 </html>

它不插入记录我认为file_get_content() 返回内容列表但不是正确的字符串格式 的console.log(V);指出非法的synex

1 个答案:

答案 0 :(得分:0)

您正在使用mysql_escape_string()来逃避Javascript数据库API。对于Javascript以字符串形式调用,该转义并不安全。

相反,我认为你应该在PHP中使用base64_encode来编码mp3二进制文件。例如:

<?php   

$sql1 = "INSERT INTO LOGS(id, log,content)
         VALUES('5','abc','" . 
         base64_encode(file_get_contents("43.mp3")) . "')";

?>

base64格式的字符串应该保存为Javascript,包括Database API和console.log(v)。然后你应该load the mp3 data with Audio API's readAsDataURL()并播放它。