inlogsysteem voor grote groep
Pagina: « vorige 1 2 3 volgende »
Voor wat betreft die $index hoef je daar verder niets mee te doen?
Laat ik het voor mezelf simpel houden (*knipoog*)
Dit:
Code (php)
1
2
3
4
5
2
3
4
5
<?
foreach($_POST as $index => $value){
$_POST[$index] = htmlspecialchars($value);
}
?>
foreach($_POST as $index => $value){
$_POST[$index] = htmlspecialchars($value);
}
?>
is hetzelfde als dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if(isset($_POST['username']))
{
$StrGebruikersnaam = htmlspecialchars($_POST['username']);
}
if(isset($_POST['password']))
{
$StrWachtwoord = htmlspecialchars($_POST['password']);
}
?>
if(isset($_POST['username']))
{
$StrGebruikersnaam = htmlspecialchars($_POST['username']);
}
if(isset($_POST['password']))
{
$StrWachtwoord = htmlspecialchars($_POST['password']);
}
?>
En het vergeten van zo'n functie gebeurt de beste, met náme de beste! (*nog_een_knipoog*)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Gebruikersnaam en Wachtwoord */
$Gebruikersnaam = "baas";
$Wachtwoord = "enserweg"; // admin
/* Haalt de geposten dingen op en beveiligt ze */?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Gebruikersnaam en Wachtwoord */
$Gebruikersnaam = "baas";
$Wachtwoord = "enserweg"; // admin
/* Haalt de geposten dingen op en beveiligt ze */?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if(isset($_POST['Gebruikersnaam']))
{
$b = htmlspecialchars($_POST['Gebruikersnaam']);
}
?>
if(isset($_POST['Gebruikersnaam']))
{
$b = htmlspecialchars($_POST['Gebruikersnaam']);
}
?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if(isset($_POST['Wachtwoord']))
{
$b = htmlspecialchars($_POST['Wachwoord']);
}
?>
if(isset($_POST['Wachtwoord']))
{
$b = htmlspecialchars($_POST['Wachwoord']);
}
?>
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
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
<?php /* Kijkt of de invoer veld ingevuld zijn zo niet
Geeft die een error weer */
if (empty($Post_Gebruikersnaam))
{
$error = '<br>Vul een gebruikersnaam in.';
}
if (empty($Post_Wachtwoord))
{
$error .= '<br>Vul een wachtwoord in.';
}
if ($Post_Wachtwoord != $Wachtwoord || $Post_Gebruikersnaam != $Gebruikersnaam)
{
$error .= '<br>Gebruikersnaam of Wachtwoord kloppen niet.';
}
if(isset($error))
{
echo 'Verbeter het volgende:';
echo $error;
exit;
}
else
{
/* Pagina die je krijgt als je ingelogd bent */
$_SESSION['logged_in'] = true;
echo 'Je bent ingelogd.';
}
}
else
{
?>
Geeft die een error weer */
if (empty($Post_Gebruikersnaam))
{
$error = '<br>Vul een gebruikersnaam in.';
}
if (empty($Post_Wachtwoord))
{
$error .= '<br>Vul een wachtwoord in.';
}
if ($Post_Wachtwoord != $Wachtwoord || $Post_Gebruikersnaam != $Gebruikersnaam)
{
$error .= '<br>Gebruikersnaam of Wachtwoord kloppen niet.';
}
if(isset($error))
{
echo 'Verbeter het volgende:';
echo $error;
exit;
}
else
{
/* Pagina die je krijgt als je ingelogd bent */
$_SESSION['logged_in'] = true;
echo 'Je bent ingelogd.';
}
}
else
{
?>
Code (php)
Code (php)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="#" class="login">
<h1>Inlogscherm</h1>
<p>
<label for="username">username:</label>
<input id="username" name="username" type="text">
</p>
<p>
<label for="password">password:</label>
<input id="password" name="password" type="password">
<input type="submit" value="inloggen">
</p>
</form>
</body>
</html>
en deze error krijg ik nu:
Notice: Undefined index: Wachwoord in /home/bart/domains/celpiavio.nl/public_html/baas/index1.php on line 22
Notice: Undefined variable: Post_Wachtwoord in /home/bart/domains/celpiavio.nl/public_html/baas/index1.php on line 36
Verbeter het volgende:
Vul een gebruikersnaam in.
Vul een wachtwoord in.
Gebruikersnaam of Wachtwoord kloppen niet.
kan iemand vertellen wat er nu allemaal niet geod is... want ik ben de draad kwijt
Frank schreef op 21.10.2006 18:47:
@Lissy: Met de foreach hoef je de code niet aan te passen wanneer er formuliervelden bijkomen. De foreach doorloopt gewoon de hele array $_POST, ongeacht het aantal elementen, en klaar ben je. Zo kun je nooit meer een veld vergeten, wel zo simpel! (*knipoog*)
En het vergeten van zo'n functie gebeurt de beste, met náme de beste! (*nog_een_knipoog*)
En het vergeten van zo'n functie gebeurt de beste, met náme de beste! (*nog_een_knipoog*)
KIJK dit is de tip van de dag => DANK je wel voor deze leuke en vooral handige uitleg!!!
@bart: Je moet zomaar alle gegeven scriptjes achter elkaar plakken, dat zijn maar voorbeelden! Je zult ze zelf in je eigen script moeten toepassen, en daarbij zul je zelf ook een klein beetje logisch moeten nadenken...
hoe kan ik nu verder worden gestuurd naar de volgende pagina, hij blijft nu steken op: je bent nu ingelogt
Na 3 seconden wordt je naar de volgende pagina gestuurd.
Tip: gooi deze overbodige functie uit je script, het zorgt alleen maar voor vertraging in de verwerking (nauwelijks meetbaar, maar toch) en vervuiling van je script.
Blanche schreef op 21.10.2006 14:48:
@Benny: Dat script doet niets meer dan controleren of ingevulde gegevens overeenkomen. In jouw script kun je gewoon www.jouwsite.nl/index2.php bezoeken door er direct naar toe te linken, er wordt nergens gecontroleerd of de bezoeker van die pagina wel ingelogd is.
Op een of andere manier moet je ergens opslaan dat een bepaalde gebruiker is ingelogd. Dit kan met sessies of cookies, waarbij het eerste mijn voorkeur heeft.
Als tijdens het inloggen de ingevulde gegevens blijken te kloppen, maak je een sessie aan waaruit blijkt dat de gebruiker ingelogd is:
Op pagina's die alleen ingelogde gebruikers mogen zien kun je dan controleren of deze sessie bestaat:
Op een of andere manier moet je ergens opslaan dat een bepaalde gebruiker is ingelogd. Dit kan met sessies of cookies, waarbij het eerste mijn voorkeur heeft.
Als tijdens het inloggen de ingevulde gegevens blijken te kloppen, maak je een sessie aan waaruit blijkt dat de gebruiker ingelogd is:
Op pagina's die alleen ingelogde gebruikers mogen zien kun je dan controleren of deze sessie bestaat:
Ja, je zou Session kunnen gebruiken om te kijken of die ingelogd zou zijn.
* Zou ik ook gebruiken als er meerdere pagina zoude zijn.
Maar als je in de index2.php zet:
Code (php)
Ik dacht dat dit redelijk eenvoudig zou zijn voor Bart om te begrijpen, en session misschien een beetje te hoog gegerepen.
Maar u kunt uiteraard het beste session gebruiken.
Let op de kleine letter 'n'.
Blanche schreef op 21.10.2006 19:56:
waar zet je die neer, in de het login script, erna of in de body?
@SanThe: oops, typfoutje...
thnx hij werkt ideaal, nu kan ik alle pagina's er achter gaan goed maken. bedankt toppie, en trouwens die php taal is best leuk, ga me eens wat meer in verdiepen....
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
session_start()
if(isset($_SESSION['logged_in']))
{
// Toon de pagina
}
else
{
// Stuur gebruiker terug
}
?>
session_start()
if(isset($_SESSION['logged_in']))
{
// Toon de pagina
}
else
{
// Stuur gebruiker terug
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
halllooooooooooooooooooooooooooo alles goed
</body>
</html>
wat is er niet geod aan deze code?
hij geeft error:
rse error: parse error, unexpected T_IF in /home/bart/domains/celpiavio.nl/public_html/baas/index2.php on line 3
Regel 2 afsluiten met een ; helpt vast.
@ bart: gebruik de en de tags als je PHP en HTML combineert, please.
uhm, ik kan nu als nog gewoon naar index2.php surfen, terwijl deze eigenlijk moet beveiligd zijn
voorbeeld op http://www.celpiavio.nl/baas/index2.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if(isset($_SESSION['logged_in']))
{
// Toon de pagina
}
else
{
// Stuur gebruiker terug
}
?> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
@import 'login.css';
</style>
</head>
<body>
<p class="login">Hey hey welkom op deze beveiligde pagina</p>
</body>
</html>
if(isset($_SESSION['logged_in']))
{
// Toon de pagina
}
else
{
// Stuur gebruiker terug
}
?> <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
@import 'login.css';
</style>
</head>
<body>
<p class="login">Hey hey welkom op deze beveiligde pagina</p>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door bart
In je else staat alleen wat commentaar, dus is het logisch dat er niets gebeurt.
if idem dito