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...
@ Frank : jippy dan snap ik dat met die if(isset.....
Voor wat betreft die $index hoef je daar verder niets mee te doen?
Laat ik het voor mezelf simpel houden (*knipoog*)
@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*)
/* Haalt de geposten dingen op en beveiligt ze */?>
<?php
if(isset($_POST['Gebruikersnaam']))
{
$b = htmlspecialchars($_POST['Gebruikersnaam']);
}
?>
<?php
if(isset($_POST['Wachtwoord']))
{
$b = htmlspecialchars($_POST['Wachwoord']);
}
?>
<?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
{
?><?php
if(isset($_POST['username']))
{
// Dan pas met $_POST['username'] werken...
}
?> <?php
if(isset($_POST['password']))
{
// Dan pas met $_POST['username'] werken...
}
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
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
@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*)
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...
Toch blijft de vraag wat nu de bedoeling is van de functie htmlspecialchars(). Het voegt helemaal niets toe aan het script, je kunt het gewoon weglaten of nog een stuk of 10 zinloze functies toevoegen. htmlspecialchars() gebruik je wanneer je de data in de browser gaat weergeven en dat doe je hier helemaal niet.
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.
@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:
<?php
$_SESSIOn['logged_in'] = true;
?>
Op pagina's die alleen ingelogde gebruikers mogen zien kun je dan controleren of deze sessie bestaat:
<?php
if(isset($_SESSION['logged_in']))
{
// Toon de pagina
}
else
{
// Stuur gebruiker terug
}
?>
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:
<?php
/* Controlleert of je daadwerkelijk bent ingelogd */
if($Ingelogd == 'True') {
/* Hier de inhoud */
echo 'U bent ingelogd!';
} else {
/* Bericht als je niet ingelogd zou zijn */
echo 'Sorry ik heb slecht nieuws voor u, u bent niet ingelogd!';
}
?>
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.