将JS LocalStorage加载到PHP变量中

Chr*_*son 6 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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助!

Gam*_*mer 10

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

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

set_page.php

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

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>
Run Code Online (Sandbox Code Playgroud)

login_response.php

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

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


Jo *_*Smo 6

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

如何在 PHP 中设置 cookie:

setcookie("TestCookie", $value, time()+3600, "/", "example.com");
Run Code Online (Sandbox Code Playgroud)

如何删除cookie:

setcookie("TestCookie", $value, time()-3600, "/", "example.com");
Run Code Online (Sandbox Code Playgroud)

如何在 PHP 中获取 cookie:

$_COOKIE["TestCookie"]
Run Code Online (Sandbox Code Playgroud)

本例中的最后一个参数:

setcookie("TestCookie", $value, time()+3600, "/", "example.com", 1);
Run Code Online (Sandbox Code Playgroud)

指示 cookie 只能通过安全 HTTPS 连接从客户端传输。当设置为 TRUE 时,仅当存在安全连接时才会设置 cookie。在服务器端,程序员只能在安全连接上发送这种 cookie(例如,相对于 $_SERVER["HTTPS"])。

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


Sam*_*Sam 0

这是错误的,这样做

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