login namen toevoegen.
nu wil ik meerdere gebruikersnamen en wachtwoorden toevoegen.
ik heb al de or of xor gebruik en || maar dan werkt het niet optimaal.
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
41
42
43
44
45
46
47
48
49
<?php
// We gaan sessies gebruiken
session_start();
// Gebruikersnaam en wachtwoord instellen
$sGebruikerControle = 'admin'||'user';
$sWachtwoordControle = 'voor'||'hallo';
// Controle of het formulier verzonden is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controle of benodigde velden wel ingevuld zijn
if(isset($_POST['user'], $_POST['pass']))
{
// Overbodige spaties verwijderen
$sGebruiker = trim($_POST['user']);
$sWachtwoord = trim($_POST['pass']);
// Gebruikersnaam en wachtwoord controleren
if($sGebruiker == $sGebruikerControle && $sWachtwoord == $sWachtwoordControle)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.';
}
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=login_form.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=login_form.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: login_form.php');
exit();
}
?>
// We gaan sessies gebruiken
session_start();
// Gebruikersnaam en wachtwoord instellen
$sGebruikerControle = 'admin'||'user';
$sWachtwoordControle = 'voor'||'hallo';
// Controle of het formulier verzonden is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controle of benodigde velden wel ingevuld zijn
if(isset($_POST['user'], $_POST['pass']))
{
// Overbodige spaties verwijderen
$sGebruiker = trim($_POST['user']);
$sWachtwoord = trim($_POST['pass']);
// Gebruikersnaam en wachtwoord controleren
if($sGebruiker == $sGebruikerControle && $sWachtwoord == $sWachtwoordControle)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.';
}
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=login_form.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=login_form.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: login_form.php');
exit();
}
?>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
// Gebruikersnaam en wachtwoord instellen
$sGebruikerControle = 'admin'||'user';
$sWachtwoordControle = 'voor'||'hallo';
?>
// Gebruikersnaam en wachtwoord instellen
$sGebruikerControle = 'admin'||'user';
$sWachtwoordControle = 'voor'||'hallo';
?>
Dit gaat niet goed. de variabelen krijgen hier de waarde TRUE.
Waarschijnlijk zoek je een mogelijkheid met arrays:
Code (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
27
28
29
30
31
32
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
<?php
// Gebruikersnaam en wachtwoord instellen
$sGebruikers = array(
array(
'username' => 'admin',
'password' => 'voor'
),
array(
'username' => 'user',
'password' => 'hallo'
)
)
echo $gebruikers[0]['username'];
echo $gebruikers[0]['password'];
// Gebruikersnaam en wachtwoord controleren
foreach($gebruikers as $gebruiker)
{
if($gebruiker['username'] == $sGebruiker && $gebruiker['password'] == $sWachtwoord)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.';
exit;
}
}
?>
// Gebruikersnaam en wachtwoord instellen
$sGebruikers = array(
array(
'username' => 'admin',
'password' => 'voor'
),
array(
'username' => 'user',
'password' => 'hallo'
)
)
echo $gebruikers[0]['username'];
echo $gebruikers[0]['password'];
// Gebruikersnaam en wachtwoord controleren
foreach($gebruikers as $gebruiker)
{
if($gebruiker['username'] == $sGebruiker && $gebruiker['password'] == $sWachtwoord)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.';
exit;
}
}
?>
Gewijzigd op 25/10/2014 17:25:20 door Frank Nietbelangrijk
Ik gebruik het or teken of als ik xor in vul dan gaat het ook niet goed.
Dan zou het toch ook moeten werken. of zie ik dat helemaal verkeerd?
Of beter nog waarom zie ik dat verkeerd..
Toevoeging op 25/10/2014 21:42:06:
ik krijg het maar niet aan de praat...
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
41
42
43
44
45
46
47
48
49
50
<?php
// We gaan sessies gebruiken
session_start();
$sGebruikers = array(
array(
'username' => 'admin',
'password' => 'voor'
),
array(
'username' => 'user',
'password' => 'hallo'
)
)
echo $gebruikers[0]['username'];
echo $gebruikers[0]['password'];
// Gebruikersnaam en wachtwoord controleren
foreach($gebruikers as $gebruiker)
{
if($gebruiker['username'] == $sGebruiker && $gebruiker['password'] == $sWachtwoord)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.'; }
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=17.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=17.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: 17.php');
exit();
}
?>
// We gaan sessies gebruiken
session_start();
$sGebruikers = array(
array(
'username' => 'admin',
'password' => 'voor'
),
array(
'username' => 'user',
'password' => 'hallo'
)
)
echo $gebruikers[0]['username'];
echo $gebruikers[0]['password'];
// Gebruikersnaam en wachtwoord controleren
foreach($gebruikers as $gebruiker)
{
if($gebruiker['username'] == $sGebruiker && $gebruiker['password'] == $sWachtwoord)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.'; }
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=17.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=17.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: 17.php');
exit();
}
?>
sGebruiker en sWachtwoord krijgen geen waarde...
$sGebruiker = $sGebruikers
Kijk eens naar regel 13-17 van je openingspost, dat heeft meer kans van slagen.
Code (php)
Bij $gebruikers is de s weg en hoofdletter G word een kleine letter
Ter informatie:
$HOOFDLETTERS is niet gelijk aan $hoofdletters
Wat betekend de as in regel 21? foreach($gebruikers as $gebruiker)
Alleen de openings posten van regel 13- 17 klopt toch.
Het is een array in een array.
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
41
42
43
44
45
46
47
48
49
50
<?php
// We gaan sessies gebruiken
session_start();
$sGebruikers = array(
array(
'username' => 'admin',
'password' => 'voor'
),
array(
'username' => 'user',
'password' => 'hallo'
)
)
echo $sGebruikers[0]['username'];
echo $sGebruikers[0]['password'];
// Gebruikersnaam en wachtwoord controleren
foreach($sGebruikers as $gebruiker)
{
if($sGebruikers['username'] == $sGebruikers && $sGebruikers['password'] == $sWachtwoord)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['sGebruikers'] = $sGebruikers;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.'; }
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=17.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=17.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: 17.php');
exit();
}
?>
// We gaan sessies gebruiken
session_start();
$sGebruikers = array(
array(
'username' => 'admin',
'password' => 'voor'
),
array(
'username' => 'user',
'password' => 'hallo'
)
)
echo $sGebruikers[0]['username'];
echo $sGebruikers[0]['password'];
// Gebruikersnaam en wachtwoord controleren
foreach($sGebruikers as $gebruiker)
{
if($sGebruikers['username'] == $sGebruikers && $sGebruikers['password'] == $sWachtwoord)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['sGebruikers'] = $sGebruikers;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.'; }
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=17.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=17.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: 17.php');
exit();
}
?>
De foreach is een lus die alle elementen in een array afloopt. Het element dat aan de beurt is wordt in de variabele geplaatst dat achter as staat.
Een heel simpel voorbeeldje zal het verklaren denk ik:
Code (php)
Bij jou is het echter een array in een array. Dat heb je heel goed opgemerkt.
$gebruiker is nu telkens een element uit (de buitenste / hoofd-) array en zal dus telkens alsnog een array zijn, maar dan een gewone enkelvoudige associatieve array. associatief wil zeggen dat we namen gebruiken in plaats van nummers zoals ik hier gedaan heb met 'username' en 'password'. De opbouw van deze array is overigens exact zoals je hem uit de database zou halen met de mysqli_fetch_assoc() functie. (merk op dat assoc ook voor associatief staat). Later kun je de code dus hergebruiken als je met een database wilt gaan werken
kun je een hint geven waar ik nu moet kijken (teveel bomen in dit bos
op dit moment)
Rene janssen op 25/10/2014 16:09:36:
echo 'Een vereist veld bestaat niet!';
Ik heb hier een probleem mee. Als het veld niet bestaat is dit de programmeur zijn schuld, niet de gebruiker. Juister is niet ingevuld.
Jan
Rene janssen op 25/10/2014 18:32:05:
Hoe kan het dat het dan niet goed gaat.
Ik gebruik het or teken of als ik xor in vul dan gaat het ook niet goed.
Dan zou het toch ook moeten werken. of zie ik dat helemaal verkeerd?
Of beter nog waarom zie ik dat verkeerd..
Ik gebruik het or teken of als ik xor in vul dan gaat het ook niet goed.
Dan zou het toch ook moeten werken. of zie ik dat helemaal verkeerd?
Of beter nog waarom zie ik dat verkeerd..
&& is het zelfde ala AND.
|| is het zelfde als OR.
Dit zijn beiden vergelijkings operatoren. Ze worden gebruikt als twee vergelijkingen met elkaar gecombineerd moeten worden. Als een vergelijking klopt dan geeft de operator TRUE terug. als een vergelijking niet klopt dan geeft ie FALSE terug. Je gebruikt deze operatoren voornamelijk in de if(..) statements.
$resultA = ( 1 == 2 && 4 == 4)
$resultB = ( 1 == 2 || 4 == 4)
1 == 2 is niet waar dus FALSE
4 == 4 is waar dus TRUE
Dat vullen we in:
$resultA = ( FALSE && TRUE )
$resultB = ( FALSE || TRUE )
Dan komen de AND en OR operatoren aan de beurt:
FALSE AND TRUE wordt FALSE. Immers a EN b moeten beiden waar zijn
FALSE OR TRUE wordt TRUE. Immers a OF b moet waar zijn.
$resultA krijgt dus de waarde FALSE en $resultB krijgt dus de waarde TRUE.
Gewijzigd op 26/10/2014 09:41:25 door Frank Nietbelangrijk
werkte het daarom niet..
In je post van vanmorgen 08:45 zie ik bijvoorbeeld staan:
Dit gaat nooit true opleveren: je vergelijkt een gehele array met een element van zichzelf. Is per definitie nooit gelijk. Bovendien bestaat $sGebruikers['username'] niet eens. Wat je hier ruwweg bedoelt, is:
En dat is wat ik met mijn eerdere posts bedoelde: in je openingspost deed je dat gedeelte goed (de POST-variabelen ophalen en gebruiken in je vergelijkingen) maar bij het herschrijven van je code is de gehele verwerking van je POST-variabelen eruit gevallen. Je hebt dus niets meer om mee te vergelijken.
Verder lijkt het erop dat je probeert een soort Hongaarse notatie te gebruiken voor de naamgeving van je variabelen. sGebruikers suggereert dan dat je met een string te namen hebt. Het is echter een array. Hiermee ga je jezelf ontzettend in de vingers snijden (en dat is ook meteen een van de punten waarom ik tegen Hongaarse notatie ben). Wat mij betreft hernoem je sGebruikers per direct in gebruikers of gebruikerslijst of wat dan ook, maar in ieder geval iets waarmee je jezelf en anderen niet op het verkeerde been zet.
Gewijzigd op 26/10/2014 13:00:10 door Willem vp
De hongaarse notatie kende ik tot nu toe nog niet.
Ik heb steeds meer het gevoel dat ik niet meer weet waar ik mee bezig ben.
hier onder heb ik het nu gemaakt zoals ik dacht dat het wel zou moeten werken..
Maar helaas...
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
// We gaan sessies gebruiken
session_start();
// Gebruikersnaam en wachtwoord instellen
$sGebruikerControle = array(
array(
'gebruikersnaam' => 'admin',
'wachtwoord' => 'voor'
)
array(
'gebruikersnaam' => 'user',
'wachtwoord' => 'hallo'
)
)
// Controle of het formulier verzonden is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controle of benodigde velden wel ingevuld zijn
if(isset($_POST['user'], $_POST['pass']))
{
// Overbodige spaties verwijderen
$sGebruiker = trim($_POST['user']);
$sWachtwoord = trim($_POST['pass']);
// Gebruikersnaam en wachtwoord controleren
if($sGebruiker == $sGebruikerControle && $sWachtwoord == $sGebruikerControle)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.';
}
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=login_form.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=login_form.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: login_form.php');
exit();
}
?>
// We gaan sessies gebruiken
session_start();
// Gebruikersnaam en wachtwoord instellen
$sGebruikerControle = array(
array(
'gebruikersnaam' => 'admin',
'wachtwoord' => 'voor'
)
array(
'gebruikersnaam' => 'user',
'wachtwoord' => 'hallo'
)
)
// Controle of het formulier verzonden is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controle of benodigde velden wel ingevuld zijn
if(isset($_POST['user'], $_POST['pass']))
{
// Overbodige spaties verwijderen
$sGebruiker = trim($_POST['user']);
$sWachtwoord = trim($_POST['pass']);
// Gebruikersnaam en wachtwoord controleren
if($sGebruiker == $sGebruikerControle && $sWachtwoord == $sGebruikerControle)
{
// Juiste gebruikersnaam en wachtwoord: inloggen!
$_SESSION['logged_in'] = true;
$_SESSION['gebruiker'] = $sGebruiker;
// Doorsturen en melding geven
header('Refresh: 3; url=beveiligd.php');
echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.';
}
else
{
// Terugsturen en foutmelding geven
header('Refresh: 3; url=login_form.php');
echo 'Deze combinatie van gebruikersnaam en wachtwoord is niet juist!';
}
}
else
{
header('Refresh: 3; url=login_form.php');
echo 'Een vereist veld bestaat niet!';
}
}
else
{
// Terug naar het formulier
header('Location: login_form.php');
exit();
}
?>
$sGebruikerControle is een array met daarin meerdere gebruikers. Je kan niet zomaar een string vergelijken met een array; dat is ongeveer hetzelfde als een banaan vergelijken met een hele tros. Je moet dus eerst de array opdelen in stukjes en die losse stukjes afzonderlijk vergelijken. En dat is dus waar je die foreach voor gebruikt.
In dit geval moet je die if-then-else-constructie (regel 28-43 van je laatste script) nog in een foreach-loop zetten. En dan krijg je ongeveer:
Code (php)
De foreach knipt $sGebruikerControle (de tros) op in losse stukjes $gebruiker (de bananen). Elke $gebruiker is zelf ook weer een array met elementen 'gebruikersnaam' en 'wachtwoord'. Omdat $gebruiker een array is, kun je die dus niet rechtstreeks vergelijken met $sGebruiker en $sWachtwoord. Om te kunnen vergelijken zul je daarom de losse elementen uit die array moeten pakken: $gebruiker['gebruikersnaam'] kun je vergelijken met $sGebruiker en $gebruiker['wachtwoord'] met $sWachtwoord.