Я пытаюсь изучить JavaScript для кода для Кордовы. Я читал много учебников, но ни один из них не помог мне с этой проблемой.Связь между JavaScript, PHP и MySQL
Мое приложение cordova для тестирования очень простое. Просто текстовое поле и две кнопки. Обе кнопки вызывают PHP-скрипт на моем сервере. Одна кнопка отправляет данные в скрипт PHP для вставки значения текстового поля в базу данных MySQL, вторая кнопка вызывает тот же скрипт и должна записывать значения базы данных в мое приложение cordova.
Вот мой
<?PHP
$response = array();
require_once __DIR__ . '/db_config.php';
$db_link = mysqli_connect (
DB_SERVER,
DB_USER,
DB_PASSWORD,
DB_DATABASE
);
mysqli_set_charset($db_link, 'utf8');
if (!$db_link)
{
die ('keine Verbindung '.mysqli_error());
}
if(isset($_POST['action']) && $_POST['action'] == 'insert'){
$name = $_POST['name'];
$sql = "INSERT INTO test.testTable (name) VALUES ('$name')";
$db_erg = mysqli_query($db_link, $sql);
if (!$db_erg){
echo "error";
}else{
echo "ok";
}
}
if(isset($_POST['action']) && $_POST['action']=='read'){
$sql = "SELECT * FROM testTable";
$db_erg = mysqli_query($db_link, $sql);
if (!$db_erg)
{
$response["success"] = 0;
$response["message"] = "Oops!";
echo json_encode($response);
die('Ungültige Abfrage: ' . mysqli_error());
}
while ($zeile = mysqli_fetch_array($db_erg, MYSQL_ASSOC))
{
//$response["success"] = $zeile['pid'];
//$response["message"] = $zeile['name'];
$response[]=$zeile;
}
echo json_encode($response);
mysqli_free_result($db_erg);
}
?>
и вот мои 2 функции в приложении Cordova:
function getNameFromServer() {
var url = "appcon.php";
var action = 'read';
$.getJSON(url, function (returnedData) {
$.each(returnedData, function (key, value) {
var id = value.pid;
var name = value.name;
$("#listview").append("<li>" + id + " - " + name) + "</li>";
});
});
}
function sendNameToServer() {
console.log("sendNameToServer aufgerufen");
var url2send = "appcon.php";
var name = $("#Name").val()
var dataString = name;
console.log(dataString);
if ($.trim(name).length>0) {
$.ajax({
type: "POST",
url: url2send,
data: { action: 'insert', name: dataString },
crossDomain: true,
cache: false,
beforeSend: function() {
console.log("sendNameToServer beforeSend wurde aufgerufen");
},
success: function (data) {
if (data == "ok") {
alert("Daten eingefuegt");
}
if (data == "error") {
alert("Da ging was schief");
}
}
});
}
}
Мои вопросы/проблемы:
Funtion sendNameToServer работает в том, что что данные будут вставлены в мою базу данных. Но я никогда не получаю предупреждение (успех: никогда не назывался).
Как передать
"action = read"
скрипту PHP в функцииgetNameFromServer()
?
Третий вопрос немного не по теме, но это искусство кода «сохранить» или это просто манипулировать данными между приложением Cordova и сервером? Каков лучший способ или как я могу зашифровать передачу?
[Маленький Бобби] (http://bobby-tables.com/) говорит [ваш сценарий риска для SQL Injection атак.] (Http://stackoverflow.com/questions/60174/ how-can-i-prevent-sql-injection-in-php) Узнайте о запросах [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) для [MySQLi] (http://php.net/ ручной/EN/mysqli.quickstart.prepared-statements.php). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! –