Invul veld vergelijken met veld in database.
- user_id
- username
- password
- department
Ik heb 4 afdelingen: Administrators, Development, Sales en Finance.
Voor iedere afdeling heb ik home pagina waar weer verdere links staan voor bepaalde gegevens die een medewerker moet invullen.
Nu wil ik hebben dat als een medewerker van bijv. Sales met zijn inloggegevens inlogt dat die persoon automatisch op de pagina van zijn afdeling komt.
In het kort gezegd, ik moet ervoor zorgen dat het veld "username" met het veld "department" in de database wordt vergeleken.
Mijn vraag aan jullie is, hoe zet ik dit op.
Mijn php ervaring is minimaal. Ik heb dit probleem eens aan iemand uitgelgd en die zei dat ik met "ranks" moest werken. Hoe organiseer ik deze situatie en hoe verwerk ik dit in php?
Alle hulp welkom,
Bart.
Je kan toch aan de hand van de user uit de database ophalen welk recht hij heeft?
Ik heb uit de bestanden van een ander persoon gezien dat ze met "ranks" werken:
if($row['rank'] == '1')
{
$_SESSION['level'] = 'admin';
}
else if($row['rank'] == '2')
{
$_SESSION['level'] = 'finance';
}
else if($row['rank'] == '3')
{
$_SESSION['level'] = 'sales';
}
else
{
$_SESSION['level'] = 'development';
}
Hoe kan ik dit zo programmeren dat de username wordt vergeleken met het veld "department" in de database?
Je kunt terwijl je controleerd of er een geldig gebruiker/wachtwoord combinatie is ingevuld toch gewoon het department ophalen die bij die gebruiker hoord? die ifjes en elsejes zijn nergens voor nodig. Je doet waarschijnlijk al hetzelfde met user_id.
Hieronder het volledige scirpt als oplossing op mijn vraag:
$result = mysql_query("SELECT * FROM user WHERE username = '$username'");
$department = mysql_result($result, 0, 'department');
Ook hebben wij samen ervoor gezorgd dat iemand van een ander 'department' niet op de pagina van een andere afdeling komen als die persoon de bestandsnaam van deze in zijn URL balk invoert.
Ik zet dit script bovenaan in de body van mijn script. Dit ziet er als volgt uit:
<html>
<head>
<title>System management</title>
</head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$username = $_SESSION['username'];
$result = mysql_query("SELECT * FROM user WHERE username = '$username'");
$department = mysql_result($result, 0, 'department');
if ($department != 'Administrators')
{
header ('refresh: 0; url=../index.php');
}
?>
$username = $_SESSION['username'];
$result = mysql_query("SELECT * FROM user WHERE username = '$username'");
$department = mysql_result($result, 0, 'department');
if ($department != 'Administrators')
{
header ('refresh: 0; url=../index.php');
}
?>
Als je eventueel nog aanvullingen of opmerkingen heb kan je dit in een reactie op dit topic laten weten.
Alvast bedankt voor eventuele feedback.
Groeten,
Bart.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dit zou het moeten fixen.
Bij het inloggen moet $_SESSION['level'] wel gedefiniëerd worden, maar dat wijst opzich.
Gewijzigd op 04/04/2011 16:59:24 door Danny Wage
Wat zijn dat voor wazige oplossingen, die julie hier aandragen
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if ( ctype_digit($_SESSION['level'])
&& in_array($_SESSION['level'],range(1,4))
&& file_exists('level_'.$_SESSION['level'] .'.php')) {
include 'level_'.$_SESSION['level'] .'.php';
}
else {
include 'no_level.php';
}
?>
if ( ctype_digit($_SESSION['level'])
&& in_array($_SESSION['level'],range(1,4))
&& file_exists('level_'.$_SESSION['level'] .'.php')) {
include 'level_'.$_SESSION['level'] .'.php';
}
else {
include 'no_level.php';
}
?>
maar ja in mijn ogen is bovenstaande ook niet de situatie die je wilt hebben