ACRA 将报告插入我的服务器数据库



我成功地配置了ACRA将我的捕获的异常发送给服务器,问题是我无法将报告插入数据库:

@AcraCore(buildConfigClass = BuildConfig.class)
@AcraHttpSender(uri = "http://www.myserver.com/crashreports/addreport.php",
        httpMethod = HttpSender.Method.POST)
public class MyApplication extends Application {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        ACRA.init(this);
    }
}

我知道它会发送部分,因为我在phpMyAdmin中看到一个空的条目,但是我无法在数据库中获取报告:

<?php
$link = mysqli_connect("localhost", "root", "pass", "db");
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$report = mysqli_real_escape_string($link, $_REQUEST['']);
// attempt insert query execution
$sql = "INSERT INTO VoiceRemoteCrash (report) VALUES ('$report')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>

我搜索了文档,但没有找到太多信息,我的PHP知识有点基础。

$_REQUEST['']将返回 NULL,并将投掷"未定义索引" 注意。

您可以使用 file_get_contents('php://input')从原始数据中获取报告。

我建议您寻找:如何防止PHP中的SQL注入?并使用参数化查询。

此行引用一个胡词变量:

$report = mysqli_real_escape_string($link, $_REQUEST['']);

您想要类似的东西:

$report = mysqli_real_escape_string($link, $_REQUEST['form_variable_name']);

但是您甚至不应该这样做,因为real_escape_string()功能不能依靠以防止SQL注入。相反,您应该通过 mySQLI pDO 驱动程序,使用带有绑定参数的已准备好的语句。此帖子有一些很好的例子。

相关内容

  • 没有找到相关文章

最新更新