Invul veld vergelijken met veld in database.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

04/04/2011 11:18:15
Quote Anchor link
Ik heb een log in pagina met een "username", "password" invul veld en een submit button. In mijn database heb ik in de tabel "user" 4 velden:

- 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.
Gewijzigd op 04/04/2011 11:29:29 door
 
PHP hulp

PHP hulp

24/11/2024 17:07:54
 
- Ariën  -
Beheerder

- Ariën -

04/04/2011 11:19:15
Quote Anchor link
Je kan toch aan de hand van de user uit de database ophalen welk recht hij heeft?
 

04/04/2011 11:21:09
Quote Anchor link
Ik weet niet precies waar je het over hebt. Ik zou het zo simpel mogelijk willen houden.

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?
Gewijzigd op 04/04/2011 11:22:05 door
 
- Mark -

- Mark -

04/04/2011 11:48:08
Quote Anchor link
Waar haal je rank nu weer vandaan? Dat is ook niet nodig.

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.
 

04/04/2011 14:12:16
Quote Anchor link
Ik zit hier net op school en heb het even aan een klasgenoot gevraagd. We zijn er uiteindelijk samen uitgekomen. Het resultaat op mijn vraag is dat we een querie hebben aangemaakt met daaronder een variabele als mysql_result.

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
     session_start();
    
     include("../connect.php");
?>


<html>
<head>
<title>System management</title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
}

?>




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.
Gewijzigd op 04/04/2011 14:15:41 door
 
Danny Wage

Danny Wage

04/04/2011 16:49:38
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if($_SESSION['level'] == '1')
{

  include 'level_1.php';
}
else
if($_SESSION['level'] == '2')
{

  include 'level_2.php';
}
else
if($_SESSION['level'] == '3')
{

  include 'level_3.php';
}
else
if($_SESSION['level'] == '4')
{

  include 'level_4.php';
}
else {
  include 'no_level.php';
}

?>


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
 
Jordi Kroon

Jordi Kroon

04/04/2011 16:57:54
Quote Anchor link
Ik zou dan hier voor gaan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
switch ($_SESSION['level']) {
   case
1:
    include('level_1.php';  
  
   case
2:
    include('level_2.php';
  
   case
3:
    include('level_3.php';    
  
  case:
4:
    include('level_4.php';

  default:

    include 'no_level.php';

}

?>
 
Noppes Homeland

Noppes Homeland

04/04/2011 18:44:28
Quote Anchor link
@Danny Wage en jordi kroon
Wat zijn dat voor wazige oplossingen, die julie hier aandragen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';    
}

?>


maar ja in mijn ogen is bovenstaande ook niet de situatie die je wilt hebben
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.