【发布时间】:2021-05-18 10:15:39
【问题描述】:
这是我的代码,我存储在本地存储中,我希望它传递给一个 php 文件,这似乎是成功的,因为警报“alert("Do something with example.php response");"弹出窗口。但是当它指向下一页时出现错误:注意:未定义的索引:第 183 行 C:\xampp\htdocs\final-project\placenameclick.php 中的数据
$(".passdata").click(function () {
var currentplaceind = parseInt($(this).data("indes"));
localStorage.setItem("p", currentplaceind);
var data1 = localStorage.getItem("p");
jQuery.post("placenameclick.php", {datas: data1}, function()
{
alert("Do something with example.php response");
window.location = 'placenameclick.php';
})
.fail(function()
{
alert("Damn, something broke");
});
}
这是我在 placenameclick.php 上的代码
<?php
$data = $_POST['datas'];
$results = $pdo->query("SELECT * FROM places WHERE place_id = $data");
while ($row = $results->fetch()) {
include("places.php");
}
?>
【问题讨论】:
-
这是因为 placenamelick.php 在尝试从 $_POST 读取之前没有检查请求是否为 POST - 并且
window.location = 'placenameclick.php';导致发送 GET 请求,根本没有任何参数.但是,如果您使用 AJAX 向 placeameclick.php 发送请求,那么之后应该不需要再重定向。 AJAX 的全部目的是使您能够停留在同一个主页上,而无需任何回发、重定向等。同样,如果您想重定向,请不要使用 AJAX。也许您还没有真正了解您的内容正在努力实现。 -
你的代码也对SQL Injection开放
-
没关系,只是这个sem的一个项目。
-
这不是借口。 a) 你不应该相信人们不会犯错误或被证明是恶意的,并且 b) 你不应该相信他们的机器,或者你网络上任何其他人的机器,或者像服务器这样的无人机器,不要相信被可能攻击您的应用程序的东西污染。此外,参数大大降低了语法错误和注入攻击的风险。而且它们并不难使用。因此,如果您了解它们,绝对没有理由不使用它们。第一次做对,每次做对。养成良好的习惯。
-
无论如何你需要回答你想要达到的目标。尚不清楚为什么在对它进行 AJAX 之后重定向到 placenameclick.php。也许您真的想从 AJAX 调用中获取输出并将其附加到当前页面?
标签: javascript php jquery local-storage