2017-05-06 43 views
-1

我希望標題有意義。我有一個社交網站,在個人資料頁面上HTML表單將被提交給一個php文件,該文件將使用在登錄時創建的用戶名會話變量將用戶輸入存儲在MySQL數據庫中,現在簡化版本的外觀像這樣:
HTML:有一個PHP表單目的地依靠會話變量可以嗎?

<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(); 

?> 

這個偉大的工程,但我運行它顯影機上,並想知道如何實際上當多個用戶的工作將幾乎在同一時間發佈表格,會議會「混淆」嗎?我是新手,所以我不確定會話是如何工作的,但上面的代碼是安全的嗎?如果不是我能做什麼?

回答

0

會話通過爲每個 訪問者創建唯一標識(UID)編號並根據此ID存儲變量來工作。這有助於防止 兩個用戶的數據在訪問 同一個網頁時彼此混淆。

當會話開始下面的事情發生 -

PHP首先爲特定的會話 這是32張進制數,如 3c7foj34c3jj973hjkop2fc937e3443的一個隨機字符串的唯一標識符。

一個名爲PHPSESSID的cookie會自動發送到用戶的計算機 以存儲唯一的會話標識字符串。

甲文件在指定 臨時目錄的服務器上自動創建並承載由sess_即sess_3c7foj34c3jj973hjkop2fc937e3443前綴唯一標識符 的名稱。

當PHP腳本希望從一個會話變量檢索值, PHP自動從 PHPSESSID的cookie獲取唯一的會話標識符字符串,然後查找臨時目錄中的 文件承載這個名字和驗證可以通過比較 的值來完成。

+0

謝謝。非常清楚。 –