让PHP表单目的地依赖会话变量是否可以?

时间:2017-05-06 19:19:14

标签: php security session

我希望标题有意义。我有一种社交网站,在配置文件页面上,一个HTML表单将被提交到一个php文件,该文件将使用登录时创建的用户名会话变量将用户输入存储在MySQL数据库中,此时简化版本看起来像这样:
HTML:

<html>
    <body>
        <form method='POST' action='destination.php'>
            <input type='text' name='email'/>
            <input type='text' name='location'/>
            <input type='submit' value='Submit'/>
        </form>
    <body>
</html>  

destination.php:

<?php
session_start();
$username = $_SESSION['username'] //from before (e.g. login)

//CONNECT TO MYSQL
$servername = "127.0.0.1";
$sqlusername = "root";
$sqlpassword = "*********";
$dbname = "**********";


$conn =  new mysqli($servername, $sqlusername, $sqlpassword, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = $conn->prepare("insert into users(email, location) values(?, ?) where username=?");
$sql->bind_param("sss", $_POST['email'], $_POST['location'], $username);
$sql->execute();
$sql->close();
$conn->close();

?>

这很好用,但是我在一台正在开发的机器上运行它,并且想知道当多个用户几乎同时发布表单时它会如何实际工作,会话是否会被混淆&#39;?我是新手,所以我不确定会话如何工作,但上述代码是否安全?如果不是我能做什么?

1 个答案:

答案 0 :(得分:0)

  

会话通过为每个会话创建唯一标识(UID)号来工作   访问者和基于此ID存储变量。这有助于防止   两个用户的数据在访问时彼此混淆   同一个网页。

在会话发生后启动会话 -

  

PHP首先为该特定会话创建唯一标识符   这是一个32个十六进制数字的随机字符串,如   3c7foj34c3jj973hjkop2fc937e3443。

     

名为PHPSESSID的cookie会自动发送到用户的计算机   存储唯一的会话标识字符串。

     

在指定的服务器上自动创建文件   临时目录并带有唯一标识符的名称   以sess_为前缀,即sess_3c7foj34c3jj973hjkop2fc937e3443。

     

当PHP脚本想要从会话变量中检索值时,   PHP自动从中获取唯一的会话标识符字符串   PHPSESSID cookie然后在其临时目录中查找   带有该名称的文件和验证可以通过比较两者来完成   值。