heey hoi,

ik zoek eigenlijk een inlogsysteem in php, voor een hele grote groep met 1 inlog naam en wachtwoord. wanneer iemand dan heeft in gelogt dat diegene dan naar een soort indexpagina gaat en daar kan kiezen naar de verschillende pagina's een stuk of 5 maximaal, meer zullen het er niet worden.

ik heb dit nodig voor bij mij op het werk, waar ze voor de schooljeugd een soort inlogpagina willen hebben en achter deze pagina moet dan informatie komen voor de jeugd. en ook nog een keer een kalender waarop iedereen kan invullen wanneer hij of zij kan werken.
maar dat is toekomst.

wie o wie kan mij helpen, ik heb hier al veelvuldig gezocht en geprobeerd, maar mijn php kennis is ongeveer niveau beginneling...

Als je het formulier binnen dezelfde pagina hebt als het script waarmee je het inloggen controleert, zul je ook naar dezelfde pagina moeten verwijzen. Zoals het script hieronder staat werkt het.


<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	/* Gebruikersnaam en Wachtwoord */
	$Gebruikersnaam = "test";
	$Wachtwoord = "test"; // admin
		 
	/* Haalt de geposten dingen op en beveiligt ze */
	$Post_Gebruikersnaam = htmlspecialchars($_POST['username']);
	$Post_Wachtwoord = htmlspecialchars($_POST['password']);
	
	/* 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
{
?>
<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>
<?php
}
?>


ps. Het kan nog veel netter, maar dit is opzet die je kunt gebruiken.
ohkee, bedankt, alleen nu krijg ik deze fout melding:

Notice: Undefined index: username in /home/bart/domains/celpiavio.nl/public_html/baas/index1.php on line 13

Notice: Undefined index: password in /home/bart/domains/celpiavio.nl/public_html/baas/index1.php on line 14
Verbeter het volgende:
Vul een gebruikersnaam in.
Vul een wachtwoord in.
Gebruikersnaam of Wachtwoord kloppen niet.

http://www.celpiavio.nl/baas/index1.php staat het
Dat komt omdat je niet eerst controleert of die post variabelen wel bestaan. Dat levert altijd een notice op. Gebruik dus bijvoorbeeld:

<?php
if(isset($_POST['username']))
{
// Dan pas met $_POST['username'] werken...
}
?>
ik heb ze er bij in geplakt, nu krijg ik weer een andere error

/* Haalt de geposten dingen op en beveiligt ze */
$Post_Gebruikersnaam = htmlspecialchars if(isset($_POST['username']))($_POST['username']);
$Post_Wachtwoord = htmlspecialchars if(isset($_POST['password']))($_POST['password']);


en de error:

Parse error: parse error, unexpected T_IF in /home/bart/domains/celpiavio.nl/public_html/baas/index1.php on line 13
Je kunt een if-statement natuurlijk niet binnen een functie gebruiken. Het zou zoiets worden van:

<?php
if(isset($_POST['a']))
{
$b = htmlspecialchars($_POST['a']);
}
?>
En zoiets:

<?php
if(isset($_POST['username']))
{
$Post_Gebruikersnaam = htmlspecialchars($_POST['username']);
}

if(isset($_POST['password']))
{
$Post_Wachtwoord = htmlspecialchars($_POST['password']);
}
?>

Effies aangepast
@Lissy: Dit gaat niet werken, je mag geen vergelijking uitvoeren wanneer je een functie aanroept. De oplossing van Blanche is de juiste.

Een andere oplossing:
<?
foreach($_POST as $index => $value){
$_POST[$index] = htmlspecialchars($value);
}
?>
Dan doorloop je alle $_POST input en wordt alles met htmlspecialchars() bewerkt. Ik vraag me alleen af wat je hiermee wilt bereiken, ik gebruik uitsluitend voor data die UIT een database komt en helemaal nooit voor data wat uit een formulier komt.

Edit: foutje hersteld
@frank:
die code die jij net plaatste is die voor username en password of alleen username en moet ik nog een aparte maken voor password? en waar plak ik hem en wat moet ik verwijderen?

en waarom ik niet vanuit een database ga, weet ik niet,ik heb 2 geprobeerd met een database, maar teon kwam het kopje mysql ofzo? en toen raakte ik de draad kwijt...
Bedankt Frank :0)
En tja .... ik vraag maar als ik iets niet kan volgen dus hier komt ie wat is dan $index?

En wat is hier niet goed aan:
<?php
if(isset($_POST['username']))
{
$StrGebruikersnaam = htmlspecialchars($_POST['username']);
}

if(isset($_POST['password']))
{
$StrWachtwoord = htmlspecialchars($_POST['password']);
}
?>
@Lissy: Toen ik mijn reactie aan het tikken was, had jij er nog een ander stukje script staan. Wat je nu gebruikt, is gewoon goed, had eigenlijk ook niets anders van je verwacht.

De $index die ik in de foreach heb staan, is de index (of key) uit de array $_POST. Bv. $_POST['wachtwoord'], wachtwoord wordt dan in $index gezet.

@Bart: de functie htmlspecialchars() gebruik je wanneer je data in de browser wilt weergeven. Verder heeft deze functie geen enkele toegevoegde waarde. Vandaar dat ik niet snap wat de bedoeling is.

Reageren