matius71
17.11.2017, 12:19:02
Witam, walki z programowaniem ciąg dalszy

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
17.11.2017, 12:27:43
A zdefiniowałeś wcześniej w sesji "permissions" przed sprawdzeniem warunku, może literówka czy tam czeski błąd?
seba123
17.11.2017, 13:00:51
Nie zapisujesz tego klucza w tablicy. Sprawdź:
PS. Przy takich porównaniach polecam używać stałych.
matius71
17.11.2017, 13:39:10
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ę
viking
17.11.2017, 13:41:45
Masz session_start() na początku? Do tego sprawdzaj czy istnieje jakaś zmienna zawsze przed użyciem. Do gropowania można wykorzystać SPLEnum.
matius71
17.11.2017, 15:03:27
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

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
17.11.2017, 15:05:48
Przeczytaj jeszcze raz mój post.
Pyton_000
17.11.2017, 15:06:04
Podstawowe pytanie. Czy Ty w ogóle pobierasz dane z BD?
matius71
17.11.2017, 15:26:46
hmmm... a miało być tak łatwo

Jak mam to zrobić ehhh....
Pyton_000
17.11.2017, 15:43:02
Zacznij od kursu PHP7 + Mysqli (PDO) i wróć tu za kilka dni.
matius71
17.11.2017, 18:24:06
Możesz polecić jakiś kurs w którym w sensowny sposób będzie wszystko wyjaśnione?
viking
17.11.2017, 18:26:52
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
17.11.2017, 22:07:43
@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
18.11.2017, 06:57:56
Może nie podał więcej kodu. Wiesz jak to jest na tym forum.
Pyton_000
18.11.2017, 10:44:43
Przeczytaj #8 i #9
viking
18.11.2017, 11:05:01
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
18.11.2017, 16:31:23
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

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

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ć
viking
18.11.2017, 16:35:08
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
25.11.2017, 13:29:15
System logowania mam ten:
https://daveismyname.blog/login-and-registr...system-with-phpW 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
25.11.2017, 13:31:38
WHERE permissions = "User Permissions" AND memberId = ?
matius71
25.11.2017, 13:50:06
<?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
25.11.2017, 13:58:12
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
25.11.2017, 14:03:29
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
25.11.2017, 14:06:31
var_dump($_SESSION); przed $memberID
matius71
25.11.2017, 14:10:16
CODE
array(3) { ["loggedin"]=> bool(true) ["userlogin"]=> string(6) "tester" ["memberID"]=> int(1) }
viking
25.11.2017, 14:13:54
Popraw zapytanie, później iteruj p $stmt->fetch
matius71
25.11.2017, 15:02:38
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
25.11.2017, 15:04:34
Pocztaj trochę dokumentację mysql. Co to memberID='$memberID' niby ma robić? Podałem jak masz zmienić warunek where.
matius71
27.11.2017, 16:12:40
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ć
nospor
27.11.2017, 16:14:23
zacznij prosze uzywac
poprawnego bbcode dla kodu wstawianego.
A to:
if ($_SESSION['permissions'] == ("SeniorAdmin" || "Administrator"))
to zes skad wytrzasnal? Nigdzie nie ma takiej kontrukcji...
if ($_SESSION['permissions'] === "SeniorAdmin" || $_SESSION['permissions'] === "Administrator")
matius71
27.11.2017, 16:23:42
Czyli za każdym razem trzeba $_SESSION['permissions'] ? Nie da się jakoś krócej?

Rzeczywiście, to co podałeś działa pięknie!
Pyton_000
27.11.2017, 16:25:37
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.