ACRA Вставить отчет в базу данных моего сервера

0

Я успешно сконфигурировал 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 несколько базовые.

Теги:
acra

2 ответа

1
Лучший ответ

$_REQUEST[''] вернет NULL и выведет уведомление об "неопределенном индексе".

Вы можете получить отчет из исходных данных POST с помощью file_get_contents('php://input').

Я предлагаю вам взглянуть на: Как я могу предотвратить SQL-инъекцию в PHP? и использовать параметризованные запросы.

  • 0
    Должен ли я добавить это таким образом? $ report = file_get_contents ('php: // input');
  • 0
    @ hiddeneyes02 Замените $_REQUEST[''] на file_get_contents('php://input') .
Показать ещё 1 комментарий
0

Эта строка ссылается на бессмысленную переменную:

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

Вы хотите что-то вроде:

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

Но вы даже не должны этого делать, потому что на функции real_escape_string() нельзя полагаться на предотвращение SQL-инъекции. Вместо этого вы должны использовать подготовленные операторы с связанными параметрами через драйвер mysqli или PDO. У этого сообщения есть несколько хороших примеров.

  • 0
    Я знаю это, просто я не знаю «form_variable_name», которое отправляет ACRA, и я искал везде, не нашел его
  • 0
    Просто var_dump($_REQUEST);
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню