存储在 $_SESSION 中但显示在 $_COOKIES 数组中的值
Values stored in $_SESSION but showing in $_COOKIES array
我从网上得知像用户名和密码这样的机密信息应该通过session
发送而不是cookies
,因为他们很脆弱。
我的 HTML 表单接受输入:
<body>
<h2>Cafeteria registration</h2>
<form class="details" method="POST">
Full name: <input type="text" placeholder="Please avoid any kind of prefixes" id="name" size=25 oninput="login()"><br><br>
Organization:<div id="org"><input type="checkbox" id="cb1" onclick="check()">ID no: <input type="number" id="org_number" style="visibility: hidden"><br><br>
<input type="checkbox" id="cb2" onclick="check()">Mobile No: <input type="tel" id="ph_number" style="visibility: hidden" required></div><br><br>
E-mail: <input type="email" id="email" size=25><br><br>
</form>
<button id="button" style="background-color: whitesmoke">Register</button>
<script src="back_end.js" async></script>
</body>
Javascript 存储来自 html 表单的输入:
sessionStorage.setItem("name",document.getElementById("name").value);
sessionStorage.setItem("ID_No",document.getElementById("org_number").value);
sessionStorage.setItem("Mobile_No",document.getElementById("ph_number").value);
sessionStorage.setItem("Email",document.getElementById("email").value);
PHP 读取值:
<?php
session_start();
var_dump($_SESSION); //This shows to be completely empty
var_dump($_COOKIE); //Surprisingly, all the values show in this array
?>
我的 $_COOKIE
数组填充了值,但我的 $_SESSION
数组完全是空的。为什么?
sessionStorage
不会将数据存储在服务器端会话变量中。它在 window/tab 的生命周期内将数据存储在客户端上。 JavaScript 在浏览器中运行,而不是在服务器上运行(至少在您的情况下)。详细了解会话存储 here。
sessionStorage
也不设置 cookie。您的代码必须在其他地方设置这些。
最后,如果您想通过网络发送用户数据(您的表单大概是注册表单),只需使用 $_POST
variables。密码不应存储在数据库以外的任何地方;它甚至不应该被记录。
会话是可变的,只有您可以在服务器端设置它,这是您的问题,您需要先使用 post 方法将它们传递给一个 php 文件,如下所示
<form action="action.php" method="post">
然后从 $_POST
全局变量中将它们放入 php 中,然后像这样 f.e.
从你的 php 文件中保存它
<?php
// Start the session
session_start();
// Set session variables
$_SESSION["name"] = $_POST["name"];
然后你可以用这个代码看到它们
var_dump($_SESSION);
var_dump($_COOKIE);
这个like也将帮助您了解会话和 cookie 之间的区别
我从网上得知像用户名和密码这样的机密信息应该通过session
发送而不是cookies
,因为他们很脆弱。
我的 HTML 表单接受输入:
<body>
<h2>Cafeteria registration</h2>
<form class="details" method="POST">
Full name: <input type="text" placeholder="Please avoid any kind of prefixes" id="name" size=25 oninput="login()"><br><br>
Organization:<div id="org"><input type="checkbox" id="cb1" onclick="check()">ID no: <input type="number" id="org_number" style="visibility: hidden"><br><br>
<input type="checkbox" id="cb2" onclick="check()">Mobile No: <input type="tel" id="ph_number" style="visibility: hidden" required></div><br><br>
E-mail: <input type="email" id="email" size=25><br><br>
</form>
<button id="button" style="background-color: whitesmoke">Register</button>
<script src="back_end.js" async></script>
</body>
Javascript 存储来自 html 表单的输入:
sessionStorage.setItem("name",document.getElementById("name").value);
sessionStorage.setItem("ID_No",document.getElementById("org_number").value);
sessionStorage.setItem("Mobile_No",document.getElementById("ph_number").value);
sessionStorage.setItem("Email",document.getElementById("email").value);
PHP 读取值:
<?php
session_start();
var_dump($_SESSION); //This shows to be completely empty
var_dump($_COOKIE); //Surprisingly, all the values show in this array
?>
我的 $_COOKIE
数组填充了值,但我的 $_SESSION
数组完全是空的。为什么?
sessionStorage
不会将数据存储在服务器端会话变量中。它在 window/tab 的生命周期内将数据存储在客户端上。 JavaScript 在浏览器中运行,而不是在服务器上运行(至少在您的情况下)。详细了解会话存储 here。
sessionStorage
也不设置 cookie。您的代码必须在其他地方设置这些。
最后,如果您想通过网络发送用户数据(您的表单大概是注册表单),只需使用 $_POST
variables。密码不应存储在数据库以外的任何地方;它甚至不应该被记录。
会话是可变的,只有您可以在服务器端设置它,这是您的问题,您需要先使用 post 方法将它们传递给一个 php 文件,如下所示
<form action="action.php" method="post">
然后从 $_POST
全局变量中将它们放入 php 中,然后像这样 f.e.
<?php
// Start the session
session_start();
// Set session variables
$_SESSION["name"] = $_POST["name"];
然后你可以用这个代码看到它们
var_dump($_SESSION);
var_dump($_COOKIE);
这个like也将帮助您了解会话和 cookie 之间的区别