Борьба с проверкой администратором переменной сеанса

0

У меня 2 страницы. Мне нужно "addproduct.php", чтобы проверить, зарегистрирован ли пользователь в качестве администратора. У меня есть сценарий входа. Извиняюсь, если это глупый вопрос, но новый для PHP.

Я хочу, чтобы пользователь, который дошел до этой страницы, который не зарегистрирован в качестве администратора ("isadmin" - это строка в пользовательской базе данных), перенаправляется на страницу входа в систему, а когда кто-то регистрируется в качестве администратора для отображаемой страницы,

login.php;

<?php
session_start();

$un = $_POST["username"];
$pw = $_POST["password"];

$conn = new PDO ("mysql:host=localhost;dbname=assign026;", "assign026", 
"ziSietiu");
$results = $conn->query("select * from users where username='$un' and 
password='$pw'");

$row = $results->fetch();
if($row == false)
{
echo "Incorrect password!";// There were matching rows
}
else
{
$_SESSION["gatekeeper"] = $un;

$_SESSION["isadmin"] = $row["isadmin"];

header ("Location: index.php");
}

?>

И addproduct.php

<?php
session_start();

?>

<?php
// Test that the authentication session variable exists
if(!isset($_SESSION["isadmin"]) || $row["isadmin"] == 1)
{
header('Location: login.html');
exit();
}
else
{
echo ($_SESSION["isadmin"]);
}
?>

<div>

<h2>Add new product</h2>

<form method="post" action="addproductscript.php">
  <p>Insert product here</p>
  <input type="text" name="name" placeholder="name">
  <input type="text" name="manufacturer" placeholder="manufacturer">
  <input type="text" name="description" placeholder="description">
  <input type="text" name="price" placeholder="price">
  <input type="text" name="stocklevel" placeholder="stocklevel">
  <input type="text" name="agelimit" placeholder="agelimit">
  <input type="submit" value="Submit">
 </form>

 </div>
  • 0
    эта строка if(!isset($_SESSION["isadmin"]) || $row["isadmin"] == 1) выдаст ошибку, поскольку $row не определена. Так что сценарий на этом останавливается.
  • 0
    есть один файл, который вы включаете везде, где пользователь должен войти (как администратор?). Этот файл выполняет проверку и перенаправление. В этом файле вы можете сначала проверить, присутствует ли `$ _SESSION ['isadmin'] ', если нет, проверить, соответствует ли данный authToken базе данных ..
Показать ещё 7 комментариев
Теги:

1 ответ

0

На основе вашего кода if(!isset($_SESSION["isadmin"]) || $row["isadmin"] == 1), $row["isadmin"] не определен, поэтому он не имеет значения,

Что вы можете сделать, это if(!isset($_SESSION["isadmin"]) || $_SESSION["isadmin"] == 1)

  • 0
    Теперь он перенаправляет на страницу входа, даже когда я захожу как администратор.
  • 0
    избавиться от или оговорки. или сделать это || $_SESSION["isadmin"] == 0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню