【发布时间】:2013-09-30 12:49:40
【问题描述】:
我正在尝试通过 Ajax 在 PHP 类中发送一个 POST 值,以更改我的 SQL 查询。
PHP 页面
//Link page with Classes
require_once('mPortfolio.php');
$mPortfolio = new Portfolio();
$all = $mPortfolio->getAll();
//Echo sql results here
//AJAX to send filter value to PHP with Classes
$('#filters a').on('click', function(e){
var filter = $(this).data('filter');
$.ajax({
type: 'POST',
url: 'models/mPortfolio.php',
data: {filter: filter},
success: function(data){
alert(data);
}
});
PHP 类 mPortfolio.php
echo $_POST['filter']; //This works !
require_once $_SERVER["DOCUMENT_ROOT"].'/models/db/db.php';
class Portfolio{
private $_db;
public function Portfolio()
{
$this->_db = new db();
$this->_db->SQLRequest("SET NAMES utf8");
}
public function getAll()
{
if(isset($_POST['filter'])) :
$query = "SELECT * FROM portfolio WHERE category='".$_POST['filter']."' AND online = 1 ORDER BY category,pos ASC";
else :
$query = "SELECT * FROM portfolio WHERE online = 1 ORDER BY category,pos ASC";
endif;
return $this->_db->SQLRequest($query);
}
}
mPortfolio.php页面实际上可以读取Class之外的$_POST['filter'],但是公共函数getAll()不能。
你能帮我吗? 谢谢
【问题讨论】:
-
需要实例化对象并调用方法。类定义本身什么也不做。
-
您没有在代码中创建该类的实例,那么您希望如何执行该方法......?
-
SQL 注入。请先转义
$_POST['filter'],然后再将其放入您的查询中