使用jQuery设置会话变量(不通过Post或Get传递)

时间:2013-07-16 13:57:24

标签: php javascript jquery session-variables

所以我有一个页面,我要求用户通过<input>标记输入密钥。我希望在用户点击按钮时将此信息存储在$_SESSION['sessionKey']中。由于我试图保持密钥的中等安全性,我希望避免通过GET或POST 传递此信息。

我在网上发现的大部分内容都是通过使用GET / POST来完成的,而我很难找到不使用这种方法的方法的信息。我找到this question,建议将JavaScript放在扩展名为.php的文件中,然后使用PHP标记获取$ _SESSION变量。我这样跟着这个方法......

javascript.php

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

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

mainPage.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");包含session_start(),因此正在启动会话......

我认为它不起作用,因为之前从未声明$_SESSION['sessionKey'],所以即使我想为它分配一个值,它也试图查看变量内容,这是未定义的。我怎么能把这个值分配给$ _SESSION变量?

很抱歉,如果这是一个简单的问题,我们非常感谢所有资源!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

The question you pointed to 显示了如何从$_SESSION检索数据,但它无法用于存储数据。

您在控制台中看到的错误“Undefined index:sessionKey”只是意味着名为$_SESSION的Javascript数组没有名为“sessionKey”的键。

答案 2 :(得分:1)

您可以使用Cookie而不是会话。请参阅本教程:http://tutorialzine.com/2010/03/microtut-getting-and-setting-cookies-with-jquery-php/

(当然你应加密它)