所以我有一个页面,我要求用户通过<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变量?
很抱歉,如果这是一个简单的问题,我们非常感谢所有资源!
答案 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/
(当然你应加密它)