Хорошо, у меня есть два разных стиля общения с моим серверным PHP-сервером, и я хочу знать, есть ли какие-либо недостатки для обоих на основе ваших экспертных заключений.Есть ли какие-либо плюсы и минусы в использовании этих двух разных стилей в коммуникации Client/Server?
Прежде всего это полная строка, которая отправляется из моего стороны клиента HTML к моей стороне сервера PHP
function myCall(){
var name1 = "myName";
var name2 = "myOtherName";
var myString = "SELECT * FROM myTable WHERE id IS NOT NULL AND name='"+ name1 +"' AND secondName='"+name2+"'";
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
recievedData = JSON.parse(this.responseText);
recievedData.forEach(function(item){
document.getElementById("demo").innerHTML += recievedData.name;
});
}
};
xmlhttp.open("GET", "myphp.php?q="+myString,true);
xmlhttp.send();
}
И затем принимается стороны сервера PHP
$q = $_REQUEST['q'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = $q;
$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn));
$outp = array();
while($row=mysqli_fetch_assoc($result))
{
$outp[] = $row;
}
echo json_encode($outp);
?>
И вот этот другой метод. --------------------------------------
function myCall(){
var name1 = "myName";
var name2 = "myOtherName";
var myString = name1 + " " + name2;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
recievedData = JSON.parse(this.responseText);
recievedData.forEach(function(item){
document.getElementById("demo").innerHTML += recievedData.name;
});
}
};
xmlhttp.open("GET", "myphp.php?q="+myString,true);
xmlhttp.send();
}
И получает этот PHP, но он использует explode()
, чтобы превратить его в массив, который может понять php.
$q = $_REQUEST['q'];
$exp = explode(" ", $q);
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM myTable WHERE id IS NOT NULL AND name='"+ exp[0] +"' AND secondName='"+ exp[1] +"'";
$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn));
$outp = array();
while($row=mysqli_fetch_assoc($result))
{
$outp[] = $row;
}
echo json_encode($outp);
?>
И вернуть те же результаты, но разные методы совсем так ... на основе ваших мнений экспертов, что может пойти не так с этими двумя различными стилями?
IMO, вы не должны писать запрос SQL в свой код HTML/JS, поскольку он будет отображаться в исходном коде страницы. Следовательно, второе решение кажется лучше. – roberto06
Вы оставили себя в открытом доступе к атакам инъекций sql там – Pete