发布帖子以澄清问题,并提出有效问题。
我有一个PHP脚本来连接MySQL数据库。我创建了一个存储连接字符串的PRIVATE.php文件。该脚本连接然后在db上运行查询,将结果作为关联数组返回。查询确实运行,并返回结果。
当我使用json_encode将结果发送到客户端的java脚本时,结果将传递给js。但是,传递的内容包括关联数组之前的PRIVATE.php引用。因此,看起来js无法访问json对象来读取查询结果。
有没有办法过滤掉PRIVATE.php所以它不会被提取并在json包中发送?或者有没有办法在js中适当地解析它?
这是PHP:
<?php
require './PRIVATE.php';
session_start();
//Connect to MySQL Database
$conn=mysqli_connect($ip,$user,$pass,$db) or die('Error connecting to MySQL
server: ' . mysqli_error(@conn));
//Some SQL statement returning a result to $myArray
echo json_encode($myArray);
当我调试js时,传递的变量如下所示:
myvariable = "PRIVATE.php {"example":"result"}"
我想看到的是:
myvariable = {"example":"result"}
我一直无法找到解决此问题的答案。任何方向将不胜感激。我确信这是我的错误,所以请把它放在我身上。
由于
答案 0 :(得分:0)
好的,所以这里的答案相当简单,因为我怀疑它会是。对输出缓冲的更多研究就是诀窍。
<?php
ob_start();
require './PRIVATE.php';
ob_end_clean();
session_start();
//Connect to MySQL Database
$conn=mysqli_connect($ip,$user,$pass,$db) or die('Error connecting to MySQL server: ' . mysqli_error(@conn));
现在响应不再包含PRIVATE.php文件引用,并且js可以适当地访问变量。
接下来,我将把PRIVATE.php文件移出根目录以获得额外的安全性。作为补充说明,整个连接字符串也可以包含在PRIVATE.php文件中。但我并不认为需要保护它,因为连接变量已经隐藏了。