Кнопка для запуска jQuery для захвата HTML и сохранения в базе данных - PullRequest
1 голос
/ 19 мая 2011

У меня есть некоторый jQuery, который, когда вы нажимаете кнопку «Сохранить», запускает функцию для захвата HTML, соответствующего селектору, и отправки HTML в save_report.php:

function saveReport() {
  $.post('save_report.php', function(data) {
    $('.report').html(data);
  });
}

$('.save').click(function () {
  saveReport();
});

В save_report.php я хочузнаете, как я могу сохранить эту строку в моей базе данных.

$report = $_POST[''];  # <-- not sure how to post

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

mysql_query("INSERT INTO reports (id, report) VALUES('', $report) ")
  or die(mysql_error());

Как мне получить значение POST в моем файле php?

Спасибо

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

Несколько вещей здесь не так ... Опубликованный код фактически не публикует никаких данных, а функции post и html вызываются некорректно.

Итак, сначала я возьму html из селектора .report и сохраню его в переменной. Затем я опубликую его, указав имя переменной «report». Я добавил простой обратный вызов, который оповещает о том, что веб-сервер отправляет обратно, который вы можете удалить или изменить.

function saveReport() { 
  var data = $('.report').html();
  $.post('save_report.php', {'report':data}, function(response) { alert(response); }); 
}  

$('.save').click(function () { saveReport(); }); 

В вашем PHP вы будете искать $ _POST ['report'], как я назвал публикуемые данные.

Вы не очищаете входные данные, поэтому любой случайный хакер может захватить всю базу данных с помощью SQL-инъекции. Как минимум, после получения $ _POST ['report'], запустите его через функцию mysql_real_escape_string ().

1 голос
/ 19 мая 2011

Пожалуйста, не забудьте выйти из HTML, прежде чем вставить его в запрос вставки.То, что вы делаете, может очень быстро ошибиться.Я изменил ваш код save_report.php, чтобы соответствовать ответу Fosco.Сейчас я передаю «необязательный» параметр $link всем функциям mysql_*, потому что в общем случае это лучше всего делать.Я также добавил некоторые экранирующие значения, прежде чем они будут использованы в вашем запросе INSERT;Важно передать параметр $link в функцию mysql_real_escape_string(), чтобы он мог корректно экранировать значение.

$report = $_POST['report'];

$link = mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database", $link) or die(mysql_error());

$report = mysql_real_escape_string($report, $link);

mysql_query("INSERT INTO reports (id, report) VALUES('', '{$report}')", $link)
  or die(mysql_error());
1 голос
/ 19 мая 2011

Скорее всего, вам нужно изменить код jQuery на

function saveReport() {
   $.post('save_report.php', {report: $('.report').html(data)} );
}

и php до

$report = $_POST['report'];  **<-- not sure how to post**

mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

mysql_query("INSERT INTO reports
(id, report) VALUES('', '".mysql_real_escape_string($report)."' ) ") 
or die(mysql_error()); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...