将JS LocalStorage加载到PHP变量中

时间:2012-06-06 23:38:17

标签: php local-storage

在我的文档标题中,我定义了一个电子邮件和密码。我想用户本地存储。但是我无法将localstorage中的项目加载到我的php变种中。

这是我的代码。

<script>
localStorage.setItem('email', '<?php echo $_SESSION['email'];?>');  
localStorage.setItem('password', '<?php echo $_SESSION['password'];?>');
</script>

<?php
$user_email = "<script>document.write(localStorage.getItem('email'));</script>";
$password = "<script>document.write(localStorage.getItem('password'));</script>";

define('XOAUTH_USERNAME', $user_email);
define('XOAUTH_PASSWORD', $password);
?>

<html>
<head></head>
<body></body>
</html>

我知道我正在设置localstorage因为我正在检查chrome并且键和值都是正确的。我只是将密钥的值传递给我的php的define()时遇到了麻烦。

感谢您的帮助!

3 个答案:

答案 0 :(得分:9)

您无法通过PHP访问localstorage。您需要编写一些将本地存储数据发送回脚本的javascript。

如果您使用的是jQuery,请执行以下操作。

<强> set_page.php

<script>
localStorage.setItem('email', '<?php echo $_SESSION['email'];?>');  
localStorage.setItem('password', '<?php echo $_SESSION['password'];?>');
</script>

<强> login_page.php

<script>
var email = localStorage.getItem('email'), password = localStorage.getItem('password');
$.POST('login_response.php', {'email':email,'password':password}, function(data){
  alert('Login Successful.  Redirect to a different page or something here.');
}
</script>

<强> login_response.php

<?
$email = $_POST['email'];
$password = $_POST['password'];
//Handle your login here.  Set session data, etc.  Be sure to sanitize your inputs.
?>

请记住,人们可以编辑本地存储中的内容,因此永远不要相信用户输入。狡猾的入侵者也可以简单地开始将数据发布到您的login_response.php页面。

答案 1 :(得分:1)

如果您只需要保存电子邮件和密码(小数据),那么您可以使用cookie,您可以通过PHP和JavaScript访问。

如何在PHP中设置cookie:

setcookie("TestCookie", $value, time()+3600, "/", "example.com");

如何删除cookie:

setcookie("TestCookie", $value, time()-3600, "/", "example.com");

如何在PHP中获取cookie:

$_COOKIE["TestCookie"]

此示例中的最后一个参数:

setcookie("TestCookie", $value, time()+3600, "/", "example.com", 1);

表示只应通过客户端的安全HTTPS连接传输cookie。设置为TRUE时,仅在存在安全连接时才设置cookie。在服务器端,程序员只能在安全连接上发送这种cookie(例如关于$ _SERVER [“HTTPS”])。

来源:https://secure.php.net/manual/en/function.setcookie.php

答案 2 :(得分:0)

这是错误的,这样做

<script>
   localStorage.setItem('email', "<?php echo $_SESSION['email'];?>");
   localStorage.setItem('password', "<?php echo $_SESSION['password'];?>");
</script>