#javascript #php #ajax #xml
#javascript #php #ajax #xml
Вопрос:
Это мой первый проект cordova. Мой http-запрос не обрабатывает локальный php-файл с помощью POST. Код работает и обрабатывает его должным образом, когда php-файл размещен на сервере. Но не обрабатывает, когда php-файл является локальным. Редактирование файлов непосредственно на сервере — это такая проблема и занимает много времени, а не просто локально. И я хотел узнать решение этой проблемы, потому что это действительно значительно упростит разработку.
Вот код Javascript
$(document).ready(function () {
$("input").on("focus", function (e) {
e.preventDefault();
e.stopPropagation();
window.scrollTo(0,0);
});
$("#loginBtn").click(function () {
swal({
title: "Logging in ...",
imageUrl: "../images/ring-alt.gif",
showConfirmButton: false,
});
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if (username != "") {
if (password != "") {
$.post("../php/login.php",
{
username: username,
password: password
},
function (data, status) {
alert(data);
});
} else {
sweetAlert("Oops...", "Please enter your password!", "error");
}
} else {
sweetAlert("Oops...", "Please enter your username!", "error");
}
});
});
предупреждение (данные) отображает весь php-файл вместо его обработки. Тогда как при удаленном доступе к нему все работает нормально.
Вот рабочий js-код (удаленные / размещенные php-файлы)
$(document).ready(function () {
$("input").on("focus", function (e) {
e.preventDefault();
e.stopPropagation();
window.scrollTo(0,0);
});
$("#loginBtn").click(function () {
swal({
title: "Logging in ...",
imageUrl: "../images/ring-alt.gif",
showConfirmButton: false,
});
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if (username != "") {
if (password != "") {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (this.readyState == 4 amp;amp; this.status == 200) {
if (this.responseText == "successsuccess") {
window.location.href = '../html/dashboard.html';
} else {
sweetAlert("Oops...", "Invalid username or password!", "error");
document.getElementById("password").value = "";
}
}
}
xmlhttp.open("POST", "http://www.sampleee.esy.es/login.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("username=" username "amp;" "password=" password);
} else {
sweetAlert("Oops...", "Please enter your password!", "error");
}
} else {
sweetAlert("Oops...", "Please enter your username!", "error");
}
});
});
Теперь вот файл php
<?php
include("connectdb.php");
$username = mysqli_escape_string($conn, $_POST['username']);
$password = mysqli_escape_string($conn, $_POST['password']);
$password = md5($password);
$getLogin = "SELECT id FROM user WHERE username = '$username' and password = '$password'";
$result = mysqli_query($conn, $getLogin);
if(!$result){
echo "Query Error: ". mysqli_error($conn);
die();
}
$count = mysqli_num_rows($result);
if($count == 1){
echo "success";
}else{
echo "failed";
}
?>
Комментарии:
1. PHP-код не работает ни в какой среде; он должен быть фактически обработан сервером, поддерживающим PHP. Для локальной разработки установите среду разработки PHP, такую как xampp, и отправляйте свои запросы AJAX
localhost
.2. Следуйте совету @ChrisG: создайте себе надлежащий конвейер разработки / производства. Сборка и тестирование локально (т. Е. В вашем блоке разработки размещена локальная версия вашего сервера), затем запускайте в производство, когда будете готовы к прайм-тайм. Вы сможете спроектировать хорошо сконструированную систему, которая выдержит проверку
usage
. Даже если вы обнаружите по пути способ заставить сервер обрабатывать «локальные» php-файлы, не делайте этого. Ваш сервер будет взломан в кратчайшие сроки.3. Ценю комментарии, сэр. Спасибо!
4. Просто хотел найти лучший способ редактирования файлов php на моем сервере. Потому что каждый раз, когда я вношу изменения, я редактирую их непосредственно в файловом менеджере моего сервера.
Ответ №1:
Вы не можете запустить PHP-код в своем проекте cordova. PHP должен выполняться в среде, поддерживающей PHP, например, на вашем сервере. Ваш php-код также использует базу данных, и эту базу данных необходимо настроить на сервере, что можно сделать локально, но тогда она, очевидно, не будет использоваться совместно между устройствами.
Кажется, вы точно не знаете, что такое PHP. Вы должны начать изучать это и понять, как это работает.
Комментарии:
1. Я думаю, что я достаточно осведомлен, чтобы знать, что php работает на сервере и использует базу данных. Просто хотел кое-что прояснить. Я тоже немного смущен, потому что я читал статьи, в которых вы используете ajax для связи с php в кордове. Дайте мне немного расслабиться 🙂
2. Моя база данных была настроена на сервере. Просто хотел узнать, возможно ли обрабатывать php локально, но базу данных на сервере.
3. Короткий ответ: нет.