【问题标题】:Loading JS LocalStorage into PHP Variable将 JS LocalStorage 加载到 PHP 变量中
【发布时间】:2012-06-11 00:50:54
【问题描述】:

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

这是我的代码。

<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>

我知道我正在正确设置本地存储,因为我正在检查 chrome 并且键和值都是正确的。我只是无法将键的值传递到我的 php.ini 的 define() 中。

感谢您的帮助!

【问题讨论】:

  • XMLHttpRequest。或者也许&lt;form&gt; 提交。但是,HTTP 请求是将数据从客户端 (JavaScript) 传递到服务器 (PHP) 的唯一方式。

标签: php local-storage


【解决方案1】:

这是错误的,这样做

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

【讨论】:

  • 谢谢,但这并不能解决问题。
  • 获取不到客户端localstorage var的输出
  • define('XOAUTH_USERNAME', $_SESSION['email']);定义('XOAUTH_PASSWORD', $_SESSION['password']);
  • 我宁愿它来自本地存储,因为它持续时间更长。
  • 你可以做 ini_set('gc_maxlifetime','3600') 来增加会话时间
【解决方案2】:

您无法通过 PHP 访问本地存储。您需要编写一些 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 页面。

【讨论】:

    【解决方案3】:

    如果您只需要保存电子邮件和密码(小数据),那么您可以为此使用 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);
    

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

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

    【讨论】:

    • 问题是关于LocalStorage。为什么说 cookie?
    【解决方案4】:

    您可以通过 PHP 访问本地存储。您需要编写一些 javascript 来将 localstorage 值存储在 COOKIE 中,您可以使用 PHP 来使用它。

    <script>
    var email = localStorage.getItem("email");
    var d = new Date();
    d.setTime(d.getTime() + (1*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = 'email' + "=" + email+ ";" + expires + ";path=/";
    </script>
    <?php 
    print_r($_COOKIE['email']);
    ?> 
    

    【讨论】:

      猜你喜欢
      • 2017-07-13
      • 2012-03-18
      • 1970-01-01
      • 2014-08-08
      • 2010-11-19
      • 1970-01-01
      • 2012-05-04
      • 2018-04-25
      • 2023-03-06
      相关资源
      最近更新 更多