存储在 $_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 之间的区别