1 login formulier voor meerdere accounts wilt niet lukken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Furio Scripting

Furio Scripting

26/02/2014 17:21:09
Quote Anchor link
Beste forumleden,

Ik heb een formulier waar men kan inloggen voor zowel een klant account als een normale gebruiker account. Beide accounts staan in 2 aparte tabellen. Ik sla in een sessie op wat het type van de account is omdat de locatie waar je heen gestuurd wordt hetzelfde is, op de bestemmingspagina bekijk ik de sessie om te bepalen wat er ingeladen moet worden. Normale gebruiker heeft namelijk een ander menu dan de klant.

Het werkt opzich prima maar met mijn huidige code kan je niet dezelfde account gegevens hebben in beide tabellen wat ik een beetje dom vind. Je moet natuurlijk gewoon hetzelfde email en wachtwoord kunnen gebruiken voor zowel een klantenaccount als een gebruiker account. De sessie geeft bij dezelfde account namelijk altijd 2. (de laatste).

Dit is de code:

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php // check gegevens in klanten tabel.
           $q = 'SELECT email, wachtwoord FROM klanten WHERE email = "'.$sEmail.'" AND wachtwoord = "'.$sWachtwoord.'" AND status = 1';
           $result = $database->query($q);
           $status = mysqli_num_rows($result);
            
           if ($status !== 1)
           {

            
           }

           else
           {
                
                // Geldige inlog gegevens
               echo 'Geldige login gegevens, gebruiker gevonden!';
               $_SESSION['fbplogged'] = 1;
              
               $_SESSION['fbputype'] = 1;
               header('location: /account/');
           }

          
          // Check gegevens in gebruikers tabel.
          $q = 'SELECT email, wachtwoord FROM gebruikers WHERE email = "'.$sEmail.'" AND wachtwoord = "'.$sWachtwoord.'" AND status = 1';
          $result = $database->query($q);
          $status = mysqli_num_rows($result);
              
           if ($status !== 1)
           {

               $errors[] .= 'Login gegevens zijn incorrect, kan niet inloggen.';
            
           }

           else
           {
                // Geldige inlog gegevens
               echo 'Geldige login gegevens, gebruiker gevonden!';
               $_SESSION['fbplogged'] = 1;
               $_SESSION['fbputype'] = 2;
               header('location: /account/');
           }

?>
Gewijzigd op 26/02/2014 17:21:43 door Furio Scripting
 
PHP hulp

PHP hulp

25/04/2024 13:29:12
 
Obelix Idefix

Obelix Idefix

26/02/2014 17:58:47
Quote Anchor link
Als in beide gevallen (klant / gebruiker) eenzelfde combinatie is toegestaan, hoe wordt dan bepaald of de klantgegevens of de gebruikersgegevens moet worden getoond?
Je controleert namelijk nergens of iemand in beide tabellen bestaat. Verder gebruik je in beide gevallen dezelfde sessie-naam; daar kan maar 1 waarde in zitten: of klant of gebruiker.

Waarom heb je het eigenlijk in twee tabellen? Want nu moet iemand die gebruiker en klant is op twee plaatsen zijn gegevens (mailadres, wachtwoord (nog meer?)) wijzigen.
 
Furio Scripting

Furio Scripting

26/02/2014 18:39:35
Quote Anchor link
Obelix en Idefix op 26/02/2014 17:58:47:
Als in beide gevallen (klant / gebruiker) eenzelfde combinatie is toegestaan, hoe wordt dan bepaald of de klantgegevens of de gebruikersgegevens moet worden getoond?
Je controleert namelijk nergens of iemand in beide tabellen bestaat. Verder gebruik je in beide gevallen dezelfde sessie-naam; daar kan maar 1 waarde in zitten: of klant of gebruiker.

Waarom heb je het eigenlijk in twee tabellen? Want nu moet iemand die gebruiker en klant is op twee plaatsen zijn gegevens (mailadres, wachtwoord (nog meer?)) wijzigen.


Door de sessie bepaal ik of het 1: klant is of 2: gebruiker. Als zowel dezelfde email en wachtwoord gebruikt wordt weet ik inderdaad dus niet of het nu een klant of gebruiker is. Vandaar dat ik mijn vraag post hier om tot een oplossing te komen hoe dit het beste aan te passen.

Ik heb 2 tabellen omdat dit overzichtelijker is en ik maar een klein aantal klanten verwacht en een groot aantal gebruikers.

Ik kan ook wel 2 inlog systemen gebruiken maar het lijkt mij handiger en mooier om er 1 te hebben die zelf bepaalt wie wat is.

Toevoeging op 26/02/2014 18:55:06:

Ik heb toch maar besloten voor 2 inlog formulieren omdat een normale gebruiker toch ook via facebook kan inloggen en een klant niet. Bedankt voor het lezen en meedenken!
 
Milo S

Milo S

27/02/2014 08:07:59
Quote Anchor link
Persoonlijk zou ik als ik jou was gaan kijken naar wat de verschillen in database tabel zijn. Ik bedoel je hebt algemene gegevens van een gebruiker, naam, email, gebruikersnaam en wachtwoord. Bij een klant heb je wellicht extra velden als woonplaats, straat, huisnummer etc.

Punt is, is een klant niet ook een gebruiker? Ik persoonlijk zou zien van wel en dus 1 tabel gebruiken voor beide. Vervolgens voeg je een extra veld toe aan die tabel welke je iets noemt als status of rank. Hierin geef je dan een getal aan wat de status van de gebruiker representeert. Klant of normale gebruiker.

Het lijkt mij dat je zo behoorlijk flexibel bent, plus dat het inloggen ineens een heel ander verhaal wordt.
 
Mr Beronne

Mr Beronne

27/02/2014 10:28:23
Quote Anchor link
@Furio Scripting

Ik zal net zoals Milo S zegt één tabel gebruiker voor je users (klant en gebruiker) en dan een extra tabel rights koppelen aan de tabel users.

Voorbeeld.

+++USER+++
- userID Primary Key
- rightID Foreign Key
- gebruikersnaam
- wachtwoord
- email
- adres
- etc

+++userRight+++
- rigthId Primary Key
- description

En als je de tabellen zal vullen krijg je ongeveer dit effect

+++USER+++
Userid = 1 | rightID = 1 | gebruiknaam = test | ww = test | email = [email protected]
Userid = 2 | rightID = 2 | gebruiknaam = test | ww = test | email = [email protected]
Userid = 3 | rightID = 2 | gebruiknaam = test | ww = test | email = [email protected]
Userid = 4 | rightID = 1 | gebruiknaam = test | ww = test | email = [email protected]

+++userRight+++
rigthId = 1 | description = klant
rigthId = 2 | description = gebruiker

Ik hoop dat je met dit voorbeeld verder kan
 
Furio Scripting

Furio Scripting

28/02/2014 00:04:25
Quote Anchor link
Bedankt voor de tips!

Ik ga het nog eens overwegen om er toch 1 van te maken.
 



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.