私は、ログインまたは登録することができる2種類のユーザーを持っています:加盟店またはバイヤー。ディレクトリアプリケーションのセキュリティ
バイヤーとしてログインすると、action="check_buyer.php"
を使用すると、自分のウェブサイトのlogin/buyer/
にリダイレクトされます。しかし、今は、一度ログインすれば、私はlogin/buyer
からlogin/merchant
に変更することができます。これをどうやって防ぐのですか?あなたが見ることができるように私はセッションを使用しています...
データベースにINT(1)として保存され、私のセッションで呼び出される$_POST['userPermission'];
のためのチェックをPHPで以下に実装しますか?
<?php
session_start(); #recall session from index.php where user logged include()
require_once('../inc/db/dbc.php');
$connect = mysql_connect($h, $u, $p) or die ("Can't Connect to Database.");
mysql_select_db($db);
$LoginUserName = $_POST['userName'];
$LoginPassword = mysql_real_escape_string($_POST['userPass']);
//connect to the database here
$LoginUserName = mysql_real_escape_string($LoginUserName);
$query = "SELECT uID, uUPass, dynamSalt
FROM User
WHERE uUName = '$LoginUserName';";
$result = mysql_query($query);
if(mysql_num_rows($result) < 1) //no such USER exists
{
echo "Invalid Username and/or Password";
}
$ifUserExists = mysql_fetch_array($result, MYSQL_ASSOC);
$dynamSalt = $ifUserExists['dynamSalt']; #get value of dynamSalt in query above
$SaltyPass = hash('sha512',$dynamSalt.$LoginPassword); #recreate originally created dynamic, unique pass
if($SaltyPass != $ifUserExists['uUPass']) # incorrect PASS
{
echo "Invalid Username and/or Password";
}
else {
validateUser();
}
// If User *has not* logged in yet, keep on /login
if(!isLoggedIn())
{
header('Location: index.php');
die();
}
function validateUser()
{
session_regenerate_id();
$_SESSION['valid'] = 1;
$_SESSION['uID'] = $userid;
}
function isLoggedIn()
{
if(isset($_SESSION['valid']) && $_SESSION['valid'])
header('Location: buyer/'); # return true if sessions are made and login creds are valid
echo "Invalid Username and/or Password";
return false;
}
?>
私はUSERTYPEはtinyint型(0または1)であると思いますが、あなたの両方に –
おかげで最高のオプションです!頭に釘を打つ! – Walley