php создает отдельный логин пользователя / администратора

Я пытаюсь настроить разные способы доступа, используя пользователя и администратора, но я не могу понять, как сделать так, чтобы они казались разными, я попытался установить tinyint в базе данных, где 1 — это admin, а 0 — это пользователь, но я не думаю, что сделал все правильно. (Вы нашли код для этого где-то еще), так что, если есть лучший способ, помощь будет наиболее ценной. заранее спасибо.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Homeowners Association</title>

</head><?php
if ($_SESSION['validUser'] == "yes")
//is this already a valid user?
{

//turn off PHP and turn on HTML
?>
<h1>Display Events Admin Options</h1>
<p><a href="insertEvent.html">Input New Events</a></p>
<p><a href="selectEventsProtected.php">List of Events</a></p>
<p><a href="logout.php">Logout</a></p>

<?php   //turn off HTML and PHP
}
else
{
if (isset($_POST['submitLogin']) )
//Was this page called from a submitted form?
{
$inUsername = $_POST['loginUsername'];
//pull the username from the form
$inPassword = $_POST['loginPassword'];
//pull the password from the form

include ('dbConnect.php');
//Connect to the database

$sql = "SELECT * FROM homeowners WHERE username = '" . $inUsername . "' AND password = '" . $inPassword . "'";
//this SQL command will only work if BOTH the username and password on the table

$result = mysqli_query($link,$sql) or die("SQL Error " . mysqli_error($link) . "<p>SQL String: $sql</p>" );

if (mysqli_num_rows($result) == 1 )
//If this is a valid user there should be ONE row only
{
$_SESSION['validUser'] = "yes";
//this is a valid user so set your SESSION variable

//turn off PHP and begin HTML
?>
<h1>Display Events Admin Options</h1>
<p><a href="insertEvent.html">Input New Event</a></p>
<p><a href="selectEventsProtected.php">List of Events</a></p>
<p><a href="logout.php">Logout</a></p>

<?php //turn off HTML and turn on PHP
}
else
//This is an invalid user not in the database
{
echo "<h3>Invalid username or password.  Please try again.</h3>";   //sets error message
//display login form again with the error message.

//turn off PHP and begin HTML
?>

<form method="post" name="login" action="login.php" >
<p>Username: <input name="loginUsername" type="text" /></p>
<p>Password: <input name="loginPassword" type="password" /></p>
<p><input name="submitLogin" value="Login" type="submit" /> <input name="" type="reset" />&nbsp;</p>
</form>

<?php //turn off HTML and turn on PHP
}//end of checking for a valid user
}//end of checking for a submitted page
else    //This page was not submitted so the user needs  to se the sign on form to continue
{
//display the login form in the area below

//turn off PHP and begin HTML
?>
<h1>Login to access website</h1>
<form method="post" name="loginForm" action="login.php">
<p>Username: <input name="loginUsername" type="text" /></p>
<p>Password: <input name="loginPassword" type="password" /></p>
<p><input name="submitLogin" value="Login" type="submit" /> <input name="" type="reset" />&nbsp;</p>
</form>

<?php //turn off HTML and turn on PHP
}//ends if statement to check for form submit
}//end if checking for a valid user

//turn off PHP and begin HTML
?>

</body>
</html>

Я пытался с помощью:

$query = mysqli_query("SELECT type FROM homeowners WHERE username = '$user'");
$gettype = mysqli_fetch_assoc($query);
if($gettype["type"] == 0){
echo("user");
}
elseif($gettype["type"] == 1){
echo("admin");
}

но я не знаю достаточно о tinyint (который я установил, чтобы напечатать)

0

Решение

Нет проблем, если вы используете tinyint, но я предпочитаю enum определять доступ пользователя, потому что он прямо показывает доступ пользователя. не просто число, и я должен снова вспомнить, что означает 1,2,3 или что-то еще.

чтобы показать страницу администратора или страницу пользователя, вам просто нужно еще $_SESSION переменная для хранения доступа пользователя.

include 'dbConnect.php';

$query = mysqli_query($con, "SELECT type FROM homeowners WHERE username = '$user'");
$gettype = mysqli_fetch_assoc($query);
if($gettype["type"] == 0){
$_SESSION["userAccess"] = "user"}
elseif($gettype["type"] == 1){
$_SESSION["userAccess"] = "admin"}

и добавьте это в свой, если

if ($_SESSION["validUser"] == "yes") {
if($_SESSION["userAccess"] == "admin") {
//show admin stuff or admin page
} elseif ($_SESSION["userAccess"] == "user") {
//show user stuff or user page
}
}

не забудьте использовать session_start() в верхней части вашего кода в login.php и другой файл, если вы хотите использовать $_SESSION


ОБНОВИТЬ

смотри мой обновленный ответ.
ты ошибся в mysqli_query()этому методу нужно 2 параметра, например:

$query = mysqli_query($con, "YOUR_QUERY");

$con от YOUR_DB_CONFIG_FILE.php. В вашем случае dbConnect.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector