【问题标题】:Values stored in $_SESSION but showing in $_COOKIES array存储在 $_SESSION 但显示在 $_COOKIES 数组中的值
【发布时间】:2021-04-21 18:09:41
【问题描述】:

我从网上了解到,用户名密码等机密信息应该通过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>

存储来自 html 表单的输入的 Javascript:

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 数组填充了值,但我的$_SESSIONarray 完全为空。为什么?

【问题讨论】:

    标签: javascript php session


    【解决方案1】:

    会话是变量,只有你可以在服务器端设置它,这是你的问题,你需要先用 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 之间的区别

    【讨论】:

      【解决方案2】:

      sessionStorage 不在服务器端会话变量中存储数据。它在窗口/选项卡的生命周期内将数据存储在客户端上。 JavaScript 在浏览器中运行,而不是在服务器上(至少在您的情况下)。详细了解会话存储here

      sessionStorage 也不设置 cookie。您的代码必须在其他地方设置这些。

      最后,如果您想通过网络发送用户数据(您的表单可能是注册表单),只需使用$_POST variables。密码不应存储在数据库以外的任何地方;它甚至不应该被记录。

      【讨论】:

      • 我试过$_POST,但它也是空的。
      猜你喜欢
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2015-01-05
      • 1970-01-01
      • 2015-07-02
      • 2023-03-19
      相关资源
      最近更新 更多