0

私はphpとhtmlでウェブサイトのログインを行いました。コード:

<?php

session_start();
$user="root";
$host="localhost";
$password="";
$database="mb_dusnionys_login";
$usertable="nariai";

mysql_connect ($host, $user,$password) or die ("negalima");

mysql_select_db ($database)or die (mysql_error());


$myusername=$_POST['username'];
$mypassword=$_POST['password'];


$sql="SELECT * FROM {$usertable} WHERE username='{$myusername}' AND password='{$mypassword}'";

$result = mysql_query($sql);
$count=mysql_num_rows($result);

if($count==1){

$_SESSION ["username"]=$myusername;
$_SESSION ["password"]=$mypassword;
$_SESSION ["userrecord"]=mysql_fetch_assoc($result);

header ("location: /nariu_turinys/index.html");
}
else {
echo "Netinkamas vartotojo vardas arba slaptažodis. Grįžkite atgal ir bandykite iš naujo";
}

私のウェブサイトの概念: ボタンとログイン フォームを含むメイン インデックス ファイルがあります。このディレクトリには、私のウェブサイトの主要部分があります。ログイン Web サイトにログイン フォームを使用する場合はすべて問題ありませんが、ログインしてページの一部に URL をコピーし、他のブラウザまたは他のタブに貼り付けると、ログインせずにこの部分にアクセスできます。質問は、ログインせずにこれらのパーツを使用できないようにする方法ですか?

4

2 に答える 2

0

クライアントに何らかの形式の認証トークンを保存する必要があります (セッションCookie を使用して既にこれを行っています)。次に、各ページにアクセスするユーザーが認証され、ページを表示する権限があることを確認します (そして、ログインで 403 応答を返します)。フォームまたは適切なエラー メッセージでない場合)。

于 2013-04-22T13:46:04.437 に答える
0

ログイン時に保存しているセッション データをチェックする関数を各内部ページに追加する必要があります。このデータが保存されているデータと一致しない場合は、ユーザーをログイン ページに戻してエラー メッセージを表示します。

-編集-

関数の例:

function isLoggedIn()
{
    if(isset($_SESSION['username']))
        $sql="SELECT * FROM {$usertable} WHERE username='{$_SESSION['myusername']}' AND password='{$_SESSION['password']}'";
    $result = mysql_query($sql);
    if(!$result)
    {
        logout();
    }
} else {
    logout();
}}
于 2013-04-22T13:46:11.953 に答える