【发布时间】:2013-12-15 23:02:56
【问题描述】:
当我通过 post 将表单信息发送到流程页面时,此查询运行良好。它呈现预期的信息。但是,当我通过 jquery 通过 $.post 调用发送帖子信息时,我什么也得不到。如果我在查询中省略了以 registered_datetime 开头的部分,它将按预期工作。
我必须相信这是我忽略的东西。
这里是查询:
SELECT * FROM leads
WHERE (first_name LIKE '" . $_POST['name'] . "%'
OR last_name LIKE '". $_POST['name'] ."%') OR
registered_datetime BETWEEN '". date_fix($_POST['from_date']) ."' AND '" . date_fix($_POST['to_date']) . "'";
这是包含 jquery 和表单的索引页面:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</script>
<script>
$(document).ready(function(){
$('#search').keyup(function(){
$('#test_form').submit();
});
$('#test_form').submit(function(){
$.post(
$(this).attr('action'),
$(this).serialize(),
function(data){
$('#results').html(data.html);
},
"json"
);
return false;
});
$('#test_form').submit();
});
</script>
</head>
<body>
<form id="test_form" action="process.php" method="post">
Name: <input type="text" name="name" id="search">
From: <input class="datepicker" type="text" name="from_date" id="from_date">
To: <input class="datepicker" type="text" name="to_date" id="to_date">
</form>
<div id="results"></div>
</body>
这是流程页面:
require_once('connection.php');
function date_fix($date) {
$fix = explode('/', $date);
$new_date = $fix[2] . '-' . $fix[0] . '-' . $fix[1];
return $new_date;
}
// var_dump($_POST);
$query = "SELECT * FROM leads
WHERE (first_name LIKE '" . $_POST['name'] . "%'
OR last_name LIKE '". $_POST['name'] ."%') OR
registered_datetime BETWEEN '". date_fix($_POST['from_date']) ."' AND '" . date_fix($_POST['to_date']) . "'";
// var_dump($_POST);
// var_dump($query);
$users = fetchAll($connection, $query);
$data = array();
$html = "
<table>
<thead>
<tr>
<th>User ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Registered Datetime</th>
<th>Email</th>
</tr>
</thead>
<tbody>
";
foreach ($users as $user) {
$html .=
'<tr>
<td>' . $user['id'] . '</td>
<td>' . $user['first_name'] . '</td>
<td>' . $user['last_name'] . '</td>
<td>' . $user['registered_datetime'] . '</td>
<td>' . $user['email'] . '</td>
</tr>';
}
$html .= '</tbody></table>';
$data['html'] = $html;
// echo $data['html'];
echo json_encode($data);
【问题讨论】:
-
我没有看到任何东西阻止我窃取您数据库中的所有信息,然后将其全部删除。使用准备好的语句。
-
好吧,窃取数据很有趣。仍然没有回答我的问题。
-
它从未尝试过。 m59 使用 comment 给了你一个合理的建议。这就是他们的目的。
-
好的,我很感激你的关心,也许我真的想太多了,但是 1. 这是本地存储上的测试数据库。所以窃取数据的可能性很小。我错过了什么吗?我问查询或 ajax 调用是否有任何奇怪的地方,因为它没有按预期检索数据。不知道为什么这被否决了。
-
@m59 我已经远离这个问题了。一年多前我没有受过教育,不知道准备好的陈述是什么。现在这是我用来确保我构建的应用程序安全的方法之一。我嘲笑自己在 cmets 中爆炸。无论如何,很抱歉这个非常不必要的评论。但我正在查看我的旧问题。