1

所以我有一个页面,我要求用户通过<input>标签输入密钥。我想$_SESSION['sessionKey']在用户单击按钮时存储此信息。由于我试图保持密钥适度安全,因此我想避免通过 GET 或 POST 传递此信息

我在网上找到的大部分内容都表明这是通过使用 GET/POST 完成的,而且我很难找到有关不会使用这种方法的方法的信息。我确实找到了这个问题,它建议将 JavaScript 放在扩展名为 .php 的文件中,然后从那里使用 PHP 标记来获取 $_SESSION 变量。我像这样遵循这种方法......

javascript.php

<?php
require ("common/startandvalidate.php");
?>

$(document).ready(function() {
    $("#submitButton").click(function(){
        <?php $_SESSION['sessionKey']?> = $("#sessionKeyInput").value;
    });
});

主页.php

<head>
   <script src="javascript.php"></script>
   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>

<input id="sessionKeyInput" placeholder="Session Key" />
<input id="submitButton" value="Submit" type="button" />

当我通过 Inspector(在 Chrome 中)查看页面时,我看到了错误消息:

Undefined index: sessionKey

require("common/startandvalidate.php");contains ,session_start()因此正在启动会话...

我认为它不起作用,因为$_SESSION['sessionKey']之前从未声明过,所以即使我想为它赋值,它也试图查看未定义的变量内容。我如何才能将此值分配给 $_SESSION 变量?

对不起,如果这是一个简单的问题,任何资源表示赞赏!

4

2 回答 2

3

$_SESSION是一个 PHP 数组,您不能通过 Javascript 在客户端设置它。该值必须发送到服务器以存储在数组中。

您指出的问题显示了如何从中检索数据$_SESSION,但它不适用于存储数据。

您在控制台“未定义索引:sessionKey”中看到的错误仅仅意味着$_SESSION名为“sessionKey”的 Javascript 数组没有键。

于 2013-07-16T14:05:07.853 回答
2

Javascript 在客户端上运行,无法访问服务器,因此也无法访问会话。如果要将用户输入的值放入会话中,则需要将其传递给服务器。最安全的方法是受 SSL 保护的 HTTP POST。

于 2013-07-16T14:01:49.057 回答