2015-12-21 5 views
0

любая помощь будет оценена.php передача переменной на другую страницу

У меня есть 2 страницы 1. products.php 2. product_mysql.php Я хочу передать переменную из products.php в product_mysql.php и возвращать результаты на products.php

Я получить правильный результат на "product_mysql.php? partNo = 12807", но мне нужно на products.php? partNo = 12807.

Если я жестко закодирую partNo на «12807» в запросе SELECT, он вернет правильный результат на products.php.

product_mysql.php

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 


$conn = new mysqli("localhost", "root", "root", "prod_db"); 

if (mysqli_connect_errno()) { 
    exit('Connect failed: '. mysqli_connect_error()); 
} 

$partNoid = $_GET['partNo']; 
$result = $conn->query("SELECT partNo, productName, unitPrice FROM  tblProducts WHERE partNo=$partNoid"); 


$outp = "["; 
while($rs = $result->fetch_array(MYSQLI_ASSOC)) { 
    if ($outp != "[") {$outp .= ",";} 
    $outp .= '{"PartNo":"' . $rs["partNo"] . '",'; 
    $outp .= '"productName":"' . $rs["productName"] . '",'; 
    $outp .= '"unitPrice":"'. $rs["unitPrice"] . '"}'; 
} 
$outp .="]"; 

$conn->close(); 

echo($outp); 
?> 

products.php

<h1>Customers</h1> 
<div id="id01"></div> 

<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "product_mysql.php"; 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     myFunction(xmlhttp.responseText); 
    } 
} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var i; 
    var out = "<table>"; 

    for(i = 0; i < arr.length; i++) { 
     out += "<tr><td>" + 
     arr[i].PartNo + 
     "</td><td>" + 
     arr[i].productName + 
     "</td><td>" + 
     arr[i].unitPrice + 
     "</td></tr>"; 
    } 
    out += "</table>"; 
    document.getElementById("id01").innerHTML = out; 
} 
</script> 

</body> 
</html> 
+1

Надеюсь, это не производственный участок. Вы оставляете свою базу данных ** широко открытой ** для SQL Injection. – Darren

+0

Привет, Даррен, не его производство, будучи новичком, любая помощь в обеспечении безопасности была бы полезна. Что я могу сделать для решения? FYI. этот код прямо из сайта w3schools, так что это разочаровывает. – James

+0

Лучше всего читать в отчетах «PDO» или «Mysqli Prepared». Кроме того, во избежание w3schools, прочитайте [w3fools.com] (http://www.w3fools.com) – Darren

ответ

0

Это из-за типа $_GET['partNo'] не соответствует заданному в целое, так что вам нужно добавить intval (функция может) вокруг него (то есть разбор значения int явно:

$partNoid = intval($_GET['partNo']); 

Не только он защищает от нечисловых значений, но также сохраняет целостность в вашей программе.

И вы можете сначала проверить, подключитесь и запишите из базы данных $_GET['partNo'].

Надеюсь, он вам поможет;)

+0

спасибо Кали, но это не сработало, любое другое решение? – James

Смежные вопросы