#javascript #ajax
#javascript #ajax
Вопрос:
Привет, я использую ajax для размещения данных в базе данных, я использую php в качестве фона сервера для размещения данных в базе данных mysql, для
Ex: $name = $_POST['name'];
$query = "INSERT INTO table('name') VALUES ('".$name."');
$result = mysql_query($query)
когда пользователь нажимает на кнопку отправки, я только что создал функцию onlick из ajax post_data(),
итак, что мне нужно, я хочу значение в текстовом поле, чтобы я мог передать его в ajax, как получить значение текстового поля
var url = "get_data.php";
var params = "name=?"; (how to get the name enter in the text box)
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 amp;amp; http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
Комментарии:
1. Я думаю, что ваш код уязвим для SQL-инъекций. Возможно, вы захотите потратить некоторое время, чтобы узнать больше об этом, прежде чем продвигаться дальше с вашим проектом.
2. Да, уязвимость при внедрении bigtime.
3. Тогда как я могу предотвратить внедрение SQL, пожалуйста, дайте мне знать, что мне нужно сделать
5. Ваши кавычки в примере PHP не совпадают.
Ответ №1:
Вы можете указать текстовое поле и идентификатор.
А затем с помощью этого кода
var textValue = document.getElementById("textboxid").value;
вы можете получить, а также установить значение в текстовом поле.
Комментарии:
1. Требуется кодирование .
Ответ №2:
Вы не должны отправлять переменные $ POST напрямую в базу данных. Посмотрите на санитарную обработку.
var url = "get_data.php";
var validValue=validate(document.getElementById('textboxid').value) ;
var params = "name=?" validValue;
http.open("POST", url, true);
<!-- assuming your text box is-->
<input type =textbox id="textboxid">
И не забудьте также выполнить очистку на стороне сервера.
Комментарии:
1. Также требуется кодирование для HTTP-транспорта, и
validate()
оно не определено.2. Если данные важно кодировать в http-транспорте, я бы сказал, что последовательность такова: clientValidate-> clientEncode-> serverDecode-> serverReValidate .. Возможно, даже использовать контрольную сумму. Почему? Даже enocoded потоки могут быть подделаны сетью. Я бы предпочел использовать SSL для такой конфиденциальной информации.
3. Кодирование != Шифрование. Если допустимое текстовое поле включает, например, символ
amp;
, то при обработке данных оно (и все, что за ним следует) будет отключено.4. Сначала я думал, что вы просто констатируете очевидное, пытаясь перехитрить всех, оскорбляя их. Я думал, вы имели в виду шифрование, когда называли это кодированием. Вы правы.
Ответ №3:
var params = "name=?"; (how to get the name enter in the text box)
вы можете попробовать:
var params = "name=" document.getElementById('theTextBoxId').value;
Комментарии:
1. Требуется кодирование .
2. Я думал, что
post
метод отправляется как часть тела запроса и не использует строку запроса?3. Он отправляется как тело запроса, но, если вы не начнете играть с типом содержимого, по-прежнему использует ту же кодировку.
4. не могли бы вы, пожалуйста, привести мне реальный пример или ссылку о том, как GET и POST используют один и тот же метод кодирования?
5.Вы предполагаете, что
encodeURIComponent
функция не подготавливает данные для MIME-типа application / x-www-form-urlencoded-urlencoded ?