Toon posts:

[PHP] Controleren van waarde uit database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hee, ik ben nieuw op dit forum en heb een vraag..

Ik wil dat alleen ingelogde admins een bepaalde tekst kunnen zien..
Stel dat de database er zo uit ziet:

username | password | rank
--------------------------------------------
pietje | post | admin
jantje | duif | normal
jaapje | bakker | normal

Dus alleen pietje is admin, en als hij is ingelogd mag hij een tekst zien, die de andere gebruikers niet zien als ze zijn ingelogd. De code staat hieronder:


<?php
session_start();
if(isset($_SESSION['user'])) { //Als gebruiker is ingelogd, laat pagina zien
?>
<html>
<head>
<title>Admin Area</title>
</head>
<body>

<span>Logged In! Welcome <?php echo $_SESSION['user']; ?></span> //Laat username uit database zien
<a href="logout.php">Logout</a>
<?php
//Als ingelogde gebruiker waarde admin heeft in kolom rank, laat dan onderstaande tekst Manage Users zien
?>
<a href="users.php">Manage Users</a>
<?php
//Als ingelogde gebruiker niet admin heeft, dus normal, laat dan de tekst hierboven niet zien
?>
<?php } else {
header("Location: login.php"); //Als gebruiker niet is ingelogd, ga naar inlogpagina
}
?>

</body>
</html>


Hoe zorg ik ervoor dat die tekst alleen zichtbaar wordt voor admins?
Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Laatst online: 12:18

Ypho

Allround Nerd

Je zou hiervoor de waarde uit de kolom "rank" ook ergens moeten opslaan. Ik neem aan dat je $_SESSION[user] ergens vult zodra de gebruiker is ingelogd? Op die plek kun je ook bijvoorbeeld de waarden $_SESSION[rank] vullen.

/edit: Overigens ziet je code er niet echt handig uit (HTML/PHP door elkaar), maar ik denk dat je een beginner bent? Plaats in ieder geval je code even tussen [ code ] tags, maakt het leesbaarder voor ons.

[ Voor 31% gewijzigd door Ypho op 15-05-2015 11:21 ]

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

  • corniels14
  • Registratie: September 2013
  • Laatst online: 21-03-2024
je kan html code echo'en of een apart bestandje met html code include'en.

dus bijvoorbeeld:
if(isset($_SESSION['user'])) {

echo"<p>welkom user</p>";

}

[ Voor 47% gewijzigd door corniels14 op 15-05-2015 11:29 ]


Acties:
  • 0 Henk 'm!

  • ByteMe_
  • Registratie: Januari 2009
  • Niet online
Verwijderd schreef op vrijdag 15 mei 2015 @ 11:17:
Hee, ik ben nieuw op dit forum en heb een vraag..

Ik wil dat alleen ingelogde admins een bepaalde tekst kunnen zien..
Stel dat de database er zo uit ziet:

username | password | rank
--------------------------------------------
pietje | post | admin
jantje | duif | normal
jaapje | bakker | normal
Ziet dat wachtwoord veld er echt zo uit zonder enige hash? Want dan zou ik ook wat meer verdiepen in het opslaan van wachtwoorden in een database.

[ Voor 7% gewijzigd door ByteMe_ op 15-05-2015 11:32 ]

Mijn laatste reviews: Xiaomi Mi 9T | Mpow H12


Acties:
  • 0 Henk 'm!

  • moijamie
  • Registratie: Augustus 2013
  • Laatst online: 12-10 13:55
Om dit te bereiken zou je in je bij het in loggen de rank moeten op halen met mysqli fetch assoc uit je tabel dan de waarde van rank in nieuwe session variabele stoppen en op de betreffen de pagina if($_SESSION['rank'] == "admin") { echo "je geheime berichtje"; }

const { signature } = await fetchProfile()


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ypho schreef op vrijdag 15 mei 2015 @ 11:19:
Je zou hiervoor de waarde uit de kolom "rank" ook ergens moeten opslaan. Ik neem aan dat je $_SESSION[user] ergens vult zodra de gebruiker is ingelogd? Op die plek kun je ook bijvoorbeeld de waarden $_SESSION[rank] vullen.

/edit: Overigens ziet je code er niet echt handig uit (HTML/PHP door elkaar), maar ik denk dat je een beginner bent? Plaats in ieder geval je code even tussen [ code ] tags, maakt het leesbaarder voor ons.
Bedankt! Dit werkt.

Ik hash de wachtwoorden wel maar dit is een versimpelde versie van de database.
Ik weet niet hoe ik de php midden in de code (tussen de html), bijvoorbeeld naar boven of onder schuif. Want er moet maar 1 regel worden laten zien. Ja, ik ben een beginner. Ik ben wel benieuwd hoe dit moet..

Werkende code:
PHP:
1
2
3
<?php if($_SESSION['rank'] == 1) { ?>
<a href="users.php">Manage Users</a>
<?php } ?>


Bij het inloggen:
PHP:
1
$_SESSION['rank'] = $user['Rank'];

[ Voor 3% gewijzigd door Verwijderd op 15-05-2015 11:48 ]


Acties:
  • 0 Henk 'm!

  • moijamie
  • Registratie: Augustus 2013
  • Laatst online: 12-10 13:55
Verwijderd schreef op vrijdag 15 mei 2015 @ 11:46:
[...]


Bedankt! Dit werkt.

Ik hash de wachtwoorden wel maar dit is een versimpelde versie van de database.
Ik weet niet hoe ik de php midden in de code (tussen de html), bijvoorbeeld naar boven of onder schuif. Want er moet maar 1 regel worden laten zien. Ja, ik ben een beginner. Ik ben wel benieuwd hoe dit moet..

Werkende code:
PHP:
1
2
3
<?php if($_SESSION['rank'] == 1) { ?>
<a href="users.php">Manage Users</a>
<?php } ?>


Bij het inloggen:
PHP:
1
$_SESSION['rank'] = $user['Rank'];
Je zou je kunnen in lezen in object oriented programming. Je kan bijvoorbeeld een nieuwe bestandje maken userclass.PHP Daar een class in schrijven en waar je user functionaliteit nodig hebt die class includen userclass.php met require of iet dergelijks. Hoef je in je HTML alleen nog maar een instancie te maken van je class en je methodes aan te roepen.

const { signature } = await fetchProfile()


Acties:
  • 0 Henk 'm!

  • ByteMe_
  • Registratie: Januari 2009
  • Niet online
Er zijn veel manier om het te verwerken.

Je kunt ook een admin_template includen en daar alle acties in afhandelen(hangt wel vanaf hoe alles is opgebouwd):

code:
1
2
3
<? if($_SESSION['rank'] == 1) 
include('templates/admin_template.php');
?>


Ondersteunt jouw server shorttags trouwens?

@hierboven, beter zelfs

[ Voor 4% gewijzigd door ByteMe_ op 15-05-2015 11:54 ]

Mijn laatste reviews: Xiaomi Mi 9T | Mpow H12


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RonaldDesigns schreef op vrijdag 15 mei 2015 @ 11:52:
Er zijn veel manier om het te verwerken.

Je kunt ook een admin_template includen en daar alle acties in afhandelen(hangt wel vanaf hoe alles is opgebouwd):

code:
1
2
3
<? if($_SESSION['rank'] == 1) 
include('templates/admin_template.php');
?>


Ondersteunt jouw server shorttags trouwens?

@hierboven, beter zelfs
Ja, ik gebruik nu MAMP om te testen.. (localhost)

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op vrijdag 15 mei 2015 @ 11:46:
[...]


Bedankt! Dit werkt.

Ik hash de wachtwoorden wel maar dit is een versimpelde versie van de database.
Ik weet niet hoe ik de php midden in de code (tussen de html), bijvoorbeeld naar boven of onder schuif. Want er moet maar 1 regel worden laten zien. Ja, ik ben een beginner. Ik ben wel benieuwd hoe dit moet..

Werkende code:
PHP:
1
2
3
<?php if($_SESSION['rank'] == 1) { ?>
<a href="users.php">Manage Users</a>
<?php } ?>


Bij het inloggen:
PHP:
1
$_SESSION['rank'] = $user['Rank'];
Je kunt het er toch gewoon tussen zetten? Ik heb de code uit je eerste post genomen, iets aangepast en dit ertussen gezet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
session_start();

// Direct controleren en wegwezen. Ook altijd een exit() na een header met location.
if (!isset($_SESSION['user'])) {
  header("Location: login.php");
  exit();
}

// De gebruiker is hier wel ingelogd.
?>
<html>
<head>
  <title>Admin Area</title>
</head>

<body>
  <span>Logged In! Welcome <?php echo $_SESSION['user']; ?></span> 
  <a href="logout.php">Logout</a>

<?php if($_SESSION['rank'] == 1) : ?>
  <a href="users.php">Manage Users</a>
<?php endif; ?>

</body>
</html>


Zelf vind ik de if () : ... endif; syntax overzichtelijker als je html en php mixt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
HuHu schreef op vrijdag 15 mei 2015 @ 12:07:
[...]

Je kunt het er toch gewoon tussen zetten? Ik heb de code uit je eerste post genomen, iets aangepast en dit ertussen gezet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
session_start();

// Direct controleren en wegwezen. Ook altijd een exit() na een header met location.
if (!isset($_SESSION['user'])) {
  header("Location: login.php");
  exit();
}

// De gebruiker is hier wel ingelogd.
?>
<html>
<head>
  <title>Admin Area</title>
</head>

<body>
  <span>Logged In! Welcome <?php echo $_SESSION['user']; ?></span> 
  <a href="logout.php">Logout</a>

<?php if($_SESSION['rank'] == 1) : ?>
  <a href="users.php">Manage Users</a>
<?php endif; ?>

</body>
</html>


Zelf vind ik de if () : ... endif; syntax overzichtelijker als je html en php mixt.
Bedankt. Dat ziet er inderdaad heel overzichtelijk uit en lijkt mij ook handiger dan doorverwijzen.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op vrijdag 15 mei 2015 @ 12:11:
[...]


Bedankt. Dat ziet er inderdaad heel overzichtelijk uit en lijkt mij ook handiger dan doorverwijzen.
Officieel (http://www.w3.org/Protoco...c2616-sec14.html#sec14.30) moet de header("Location: ...") een absolute URL bevatten. In jouw code staat er een relatieve URL (alleen login.php). Het werkt waarschijnlijk wel altijd, maar je zou dat nog kunnen aanpassen.
Pagina: 1