Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][mysql]Sprawdzania czy user jest Adminem
Forum PHP.pl > Forum > Przedszkole
matius71
Witam, walki z programowaniem ciąg dalszy biggrin.gif

Chcę sprawdzić czy zalogowany user jest Adminem i myślałem że to będzie działało:

CODE
<?php
if($_SESSION['permissions'] == "Admin")
{
require('admin/addnew.php');
}
?>


Na stronie wywala mi błąd:

Notice: Undefined index: permissions in D:\XAMPP\htdocs\memberpage.php on line 32

Rozumiem że nie znajduje indeksu permissions tylko nie bardzo wiem co zrobić żeby to hulało. Chciałem żeby z tabeli members sprawdziło czy w permissions jest wpis Admin czy go nie ma.
olszam
A zdefiniowałeś wcześniej w sesji "permissions" przed sprawdzeniem warunku, może literówka czy tam czeski błąd?
seba123
Nie zapisujesz tego klucza w tablicy. Sprawdź:

  1. print_R($_SESSION);


PS. Przy takich porównaniach polecam używać stałych.
matius71
Własnie chyba czegoś brakuje... nie bardzo wiem co jeszcze jest potrzebne, robię to pierwszy raz :/ niestety to nie o to chodzi bo też nie działa jak to wpisze:

CODE
$permissions = $_SESSION['permissions'];



Napiszcie co jest potrzebne żeby to działało, poczytam o tym i sie nauczę wink.gif
viking
Masz session_start() na początku? Do tego sprawdzaj czy istnieje jakaś zmienna zawsze przed użyciem. Do gropowania można wykorzystać SPLEnum.
matius71
hmmm... bo chodzi o to że chcę sprawdzić czy dany user który jest zalogowany ma w kolumnie "permissions" wpisane "Admin". Może coś kompletnie źle robię... co potrzebujecie żeby mi pomóc biggrin.gif

Jak podaje:

CODE
<?php
$permissions = $_SESSION['permissions'];
if($_SESSION['permissions'] == "Admin")
{
require('admin/addnew.php');
}
?>


To wypluwa:

Notice: Undefined index: permissions in D:\XAMPP\htdocs\memberpage.php on line 32 to jest "$permissions = $_SESSION['permissions'];"

Notice: Undefined index: permissions in D:\XAMPP\htdocs\memberpage.php on line 33 to jest "if($_SESSION['permissions'] == "Admin")"

Czemu nie ogarnia tego?
viking
Przeczytaj jeszcze raz mój post.
Pyton_000
Podstawowe pytanie. Czy Ty w ogóle pobierasz dane z BD?
matius71
hmmm... a miało być tak łatwo biggrin.gif

Jak mam to zrobić ehhh....
Pyton_000
Zacznij od kursu PHP7 + Mysqli (PDO) i wróć tu za kilka dni.
matius71
Możesz polecić jakiś kurs w którym w sensowny sposób będzie wszystko wyjaśnione?
viking
A nie możesz zacząć od session_start()? Jeśli tak samo będziesz ten kurs czytał jak odpowiedzi tutaj to słabo to widzę.
Pyton_000
@viking ale on nie ma żadnego kodu więcej poza tym co jest pokazane w poście więc dodanie session_start i tak nie wiele zmieni.
viking
Może nie podał więcej kodu. Wiesz jak to jest na tym forum.
Pyton_000
Przeczytaj #8 i #9
viking
Uprawnienia w najprostszej postaci wcale nie muszą być zapisane w bazie więc te 2 punkty nic nie wyjaśniają. Natomiast pewne jest że nie startuje sesji w związku z czym zmienna sesyjna nie istnieje.

Myślę że biorąc pod uwagę przedszkole o dotychczas zaprezentowany poziom wiedzy chce zrobić coś dużo bardziej prostego czyli https://prophp.pl/advice/show/24/jak_zrobic...istratora%29%3F
matius71
Mam system logowania i rejestrowania użytkownika w którym wybiera się rodzaj usera. Dla konkretnego usera wpisywane jest slowo "administrator" jeśli to ma być konto administratora. I chodzi mi tylko o to żeby sprawdzić czy dany user jest administratorem i to tyle tongue.gif Nie ma co gadać, faktycznie poczytam trochę na ten temat, na pewno przyda mi się ta wiedza na przyszłość, myślałem po prostu że to nie jest jakieś skomplikowane i da się to jakoś szybko prosto wyjaśnić. To session_start() mam na początku więc to nie jest problem, rzeczywiście nie pobieram jakiś danych z BD i w tym jest problem ale tak jak napisałem wcześniej, muszę o tym poczytać, nauczyć się i po problemie wink.gif Miałem nadzieje że ktoś mi tu poda coś co będzie można dopasować pod moją stronę ale jak nie to nie ma jakiegoś większego problemu. Proszę się tu nie kłócić biggrin.gif
viking
Nie kłócimy się. To były konstruktywne uwagi. Masz artykuł jak to konkretnie zrobić więc liczę że nie będzie kolejnych dziwnych pytań. A na przyszłośc podawaj cały kod który dotyczy tematu.
matius71
System logowania mam ten: https://daveismyname.blog/login-and-registr...system-with-php

W jaki sposób mogę sprawdzić jakie wartości w BD ma AKTUALNIE zalogowany użytkownik? Tego jeszcze nie mogę tylko rozgryźć?

Wyświetlają mi się dane z DB ale chcę tylko wyświetlić dane usera który jest aktualnie zalogowany.

CODE
<?php

$stmt = $db->query('SELECT memberID, userlogin, permissions FROM members WHERE permissions = "User Permissions"');
echo '<ul>';
foreach($stmt as $row)
{
echo '<li>'.$row['memberID'].') '.$row['userlogin'].': '.$row['permissions'].'</li>';
}
$stmt->closeCursor();
echo '</ul>';

?>
viking
WHERE permissions = "User Permissions" AND memberId = ?
matius71
<?php
$userlogin = $_SESSION['userlogin'];
$stmt = $db->query("SELECT memberID, userlogin='$userlogin', permissions FROM members");
echo '<ul>';
foreach($stmt as $row)
{
echo '<li>'.$row['memberID'].') '.$row['userlogin'].': '.$row['permissions'].'</li>';
}
$stmt->closeCursor();
echo '</ul>';

?>

ale wywala to co zwykle czyli:

Notice: Undefined index: userlogin in D:\XAMPP\htdocs\memberpage.php on line 39
33) : Administrator

linia 39 to
CODE
echo '<li>'.$row['memberID'].') '.$row['userlogin'].': '.$row['permissions'].'</li>';

viking
Nie wiem ile razy można ci powtarzać w tym temacie że masz startować sesję zanim z niej skorzystasz.
Zapytanie też pokazałem jak ma wyglądać.
matius71
Ok, rozumiem że chodzi ci o to żeby dodać na początku session start

CODE
<?php
session_start();
$memberID=$_SESSION['memberID'];
$stmt = $db->query("SELECT memberID='$memberID', userlogin, permissions FROM members");
echo '<ul>';
foreach($stmt as $row)
{
echo '<li>'.$row['memberID'].') '.$row['userlogin'].': '.$row['permissions'].'</li>';
}
$stmt->closeCursor();
echo '</ul>';

?>


Nie ważne w którym miejscu dodam to i tak wywala błąd pod tytułem:
CODE
Notice: A session had already been started - ignoring session_start() in D:\XAMPP\htdocs\memberpage.php on line 34
viking
var_dump($_SESSION); przed $memberID
matius71
CODE
array(3) { ["loggedin"]=> bool(true) ["userlogin"]=> string(6) "tester" ["memberID"]=> int(1) }
viking
Popraw zapytanie, później iteruj p $stmt->fetch
matius71
Nie wiem czy to o coś takiego chodzi?

CODE
<?php

$memberID=$_SESSION['memberID'];
$stmt = $db->query("SELECT memberID='$memberID', userlogin, permissions FROM members");
$stmt->execute(array(':memberID' => $memberID));
$row = $stmt->fetch(PDO::FETCH_ASSOC);

echo '<ul>';
foreach($stmt as $row)
{
echo '<li>'.$row['memberID'].') '.$row['userlogin'].': '.$row['permissions'].'</li>';
}
$stmt->closeCursor();
echo '</ul>';
?>


Nie wiem co mam poprawić w zapytaniu.
viking
Pocztaj trochę dokumentację mysql. Co to memberID='$memberID' niby ma robić? Podałem jak masz zmienić warunek where.
matius71
Dobra, już mi działa:

CODE
$memberID=$_SESSION['memberID'];
$stmt = $db->query("SELECT memberID, userlogin, permissions FROM members where memberID='$memberID'");
$row = $stmt->fetch(PDO::FETCH_ASSOC);

$_SESSION['permissions'] = $row['permissions'];


Teraz chciałem zrobić niby proste sprawdzenie ale oczywiście nie działa, zawsze wyświetla "Masz uprawnienia SeniorAdmin lub Administrator." Co tu jest nie tak?

CODE
if ($_SESSION['permissions'] == ("SeniorAdmin" || "Administrator"))
{
echo '<p>Masz uprawnienia SeniorAdmin lub Administrator.</p>';

require('admin/addnew.php') ;

} else
{
echo '<p>Nie masz uprawnien SeniorAdmin lub Administrator.</p>';
}


Dodam że wszystko działa jeśli sprawdzam czy user ma uprawnienia tylko np "SeniorAdmin" natomiast jak dodaje "|| Administrator" to już przestaje działać thumbsdownsmileyanim.gif
nospor
zacznij prosze uzywac poprawnego bbcode dla kodu wstawianego.

A to:
if ($_SESSION['permissions'] == ("SeniorAdmin" || "Administrator"))
to zes skad wytrzasnal? Nigdzie nie ma takiej kontrukcji...

  1. if ($_SESSION['permissions'] === "SeniorAdmin" || $_SESSION['permissions'] === "Administrator")
matius71
Czyli za każdym razem trzeba $_SESSION['permissions'] ? Nie da się jakoś krócej? biggrin.gif Rzeczywiście, to co podałeś działa pięknie!
Pyton_000
Kod
if (in_array($_SESSION['permissions'], ["SeniorAdmin", "Administrator"]))

Albo tak
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.