2017-05-06 5 views
-1

タイトルが意味を成してくれることを願っています。私はソーシャルネットワーキングサイトの一種を持っています。プロフィールページには、HTMLフォームが、ログイン時に作成されたユーザー名セッション変数を使用してMySQLデータベースにユーザー入力を格納するPHPファイルに送信されます。
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

セッションは、 訪問者ごとに一意のID(UID)番号を作成し、このIDに基づいて変数を格納することによって機能します。これにより、同じWebページの にアクセスしたときに、2人のユーザーのデータが互いに混乱するのを防ぐことができます。

セッションは、物事が起こる、次の起動すると -

PHPは、まず、 3c7foj34c3jj973hjkop2fc937e3443として32進数のランダムな文字列である特定のセッション の一意の識別子を作成します。

PHPSESSIDと呼ばれるクッキーは、ユーザーのコンピュータ に自動的に送信され、一意のセッション識別文字列を格納します。

ファイルが自動的に指定された 一時ディレクトリにサーバー上に作成され、sess_すなわちsess_3c7foj34c3jj973hjkop2fc937e3443で始まる一意の識別子 の名を冠するています。 PHPスクリプトは PHPが自動的に PHPSESSIDクッキーからユニークなセッション識別子の文字列を取得し、その名を冠し ファイルと検証のための一時ディレクトリにすることができます見えます、セッション変数から値を取得したい

の両方の値を比較することによって行う必要があります。

+0

ありがとうございます。非常に明確な。 –

関連する問題