[英]Securely communicate with mysql server (MariaDB) using javascript and php (NO jQuery)
[英]Modifying PHP using JS/JQuery to communicate with MySQL
因此,我的目標是嘗試允許頁面上的動態元素確定發送到數據庫的SQL。
第一部分是我的主要HTML文檔中包含的JS:
var sub_condition = " AND artist=\'ivoilic\' ";//$(".current_filter").attr("condition");
$("<?php $conditions = 'WHERE owner=\'ivoilic\'"+ sub_condition+"'; include 'PHP/get_info.php';?>").appendTo(".collection tbody");
上面包含的文檔get_info.php看起來像這樣:
<?php
include "connect.inc.php";
parse_str($conditions,$test);
$info = mysql_query("SELECT * FROM cards ".$condition.";")or die(mysql_error());?>
我的問題是,當我僅回顯SQL時,它看起來很好,而當我手動測試SQL時,它就可以工作。 但是無論出於什么原因,當我嘗試使用此方法插入SQL的末尾時,都無濟於事。 有人有想法么?
我嘗試向您顯示正確的方向:
第一
想想您想在mysql中做什么。 Google for mysql注入。 如果您將mysql查詢從客戶端(瀏覽器)發送到服務器,則每個人都可以將其更改為drop database
並相信我-您不希望有人刪除您的數據庫;)
第二
查看此PHP數據庫訪問。 這是通過PDO完成的。 PDO是一個PHP類,可以防止mysql注入,並且以后也會在許多其他情況下為您提供幫助。
<?php
$id = $_GET['id'];
$ownerName = $_GET['ownerName'];
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
$query = $db->prepare('SELECT * FROM `cards` WHERE `id` = :ID AND `owner` = :OWNER');
$query->execute(array(
':ID' => $id,
':OWNER' => $owner
));
$result = $query->fetchAll(); //$result is now an array of search result objects
您會看到,您只是通過javascript將值發送到了php腳本。 當然,您可能在php腳本中有幾個查詢字符串,並且可能通過特殊查詢ID和開關的組合得到一個查詢字符串? 由你決定。
例:
<?php
$queryNum = (int)$_GET['queryNum'];
$value1 = $_GET['val1'];
$value2 = $_GET['val2'];
switch($queryNum){
case 1:
$query = 'SELECT * FROM `cards` WHERE `id` = :ID AND `owner` = :OWNER';
$queryVals = array(':ID' => $value1, ':OWNER' => $value2);
break;
case 2:
$query = 'SELECT * FROM `cards` WHERE `color` = :COLOR AND `size` = :SIZE';
$queryVals = array(':COLOR' => $value1, ':SIZE' => $value2);
break;
default:
$query = 'SELECT * FROM `cards`';
$queryVals = array();
break;
};
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
$query = $db->prepare($query);
$query->execute($queryVals);
$result = $query->fetchAll(); //$result is now an array of search result objects
第三
僅將數據庫查詢的值從javascript或HTML形式發送到php腳本。
摘要
那真的是基礎知識,我的腳本示例只是可以向您顯示正確方向的簡單示例。 永遠不要忘記防止用戶以任何方式更改數據庫查詢或php代碼的可能性!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.