web-dev-qa-db-ja.com

JSLocalStorageをPHP変数にロードする

ドキュメントのヘッダーで、メールアドレスとパスワードを定義しています。ローカルストレージを使用したいのですが。ただし、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>

chromeで、キーと値の両方が正しいため、ローカルストレージを正しく設定していることがわかります。キーの値をdefine()に渡すのに問題があります。私のphpの。

助けてくれてありがとう!

6
Chris Olson

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ページにもデータを投稿し始める可能性があります。

10
GameCharmer

電子メールとパスワード(小さなデータ)を保存するだけでよい場合は、Cookieを使用して、PHPおよびJavaScriptを介してアクセスできます。

PHPでCookieを設定する方法:

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

クッキーを削除する方法:

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

1
Jo Smo

これは誤りです、そうしてください

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