将HTML5本地存储值传递给PHP错误

时间:2014-03-24 12:52:57

标签: javascript php local-storage

我正在使用html5本地存储,我正在尝试阅读它并将其传递给php变量:

这是代码:

$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>"; 

当我这样做时:

echo $myphpvar;

该值看起来正确(在视觉上离开)

当我添加此代码时,所有内容都很好看:

$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '$myphpvar')";

然后我收到此错误:

错误:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在...附近使用正确的语法。

错误点在这里:

$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>";

任何想法为什么?

4 个答案:

答案 0 :(得分:9)

已更新:

这不起作用,因为:

$myphpvar = "<script>document.write(localStorage.getItem('myjsvar'));</script>"; 

现在您的PHP $myphpvar变量包含:

  <script>document.write(localStorage.getItem('myjsvar'));</script>

当你echo时,这就像:

echo "<script>document.write(localStorage.getItem('myjsvar'));</script>"

所以这将显示你的Js变量,因为它在你的浏览器上运行。

但是当你在SQL中执行此操作时:它看起来如下所示:

$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '<script>document.write(localStorage.getItem('myjsvar'));</script>')";

要实现此功能 ,您必须将localStorage值传递给URL,并在PHP上使用或使用AJAX发帖!

window.location.href = window.location.href+"?local="+localStorage.getItem('myjsvar'));

答案 1 :(得分:0)

你不应该这样做,因为Php在服务器端工作,而html5在客户端工作。 你当然应该使用带有ajax的js。

答案 2 :(得分:0)

php是一种后端编程语言。它与您的服务器通信并编译代码。 localstorage是一个正在处理用户浏览器的前端对象。你不能把这个值当作php变量。

但是一个线索,您可以将其作为隐藏输入放在表单上,​​并模拟表单帖子。在提交帖子时,您可以将该值作为表单数据或查询字符串发送。所以你可以从那里得到它。

按你的方式,这是不可能的。

答案 3 :(得分:-1)

我认为你的SQL查询可能有问题。

尝试将其更改为:

$sql="INSERT INTO `pending` (`id`, `myfield`) VALUES ('', '{$myphpvar}')";