Onbekend |
|
Sicco, ik vind het vervelend om te zeggen, maar dit script is bar slecht.
Om maar eens wat op te noemen:
- Mogelijkheid tot SQL-injection.
- Wachtwoord wordt niet-gecodeerd opgeslagen.
- Niet consequent gebruik van super globals.
- Onjuist quote-gebruik.
- Geen goede foutafhandeling.
- Variabelen tussen quotes.
- ob_start() gebruiken om bijv. onjuist gebruik van een header() te rechtvaardigen, moet je echt afleren. Het is absoluut niet netjes.
Verder is dit geen inlogscript. Een inlogsysteem is meer dan alleen controleren of een waarde overeenkomt en vervolgens een sessie starten.
Tips:
- Sla geen gebruikersnaam / wachtwoord op in een sessie of cookie, maar sla alleen het lid_id op. Aan de hand van het lid_id kun je alles nakijken.
- Gebruik voor het opslaan de functie md5() van PHP. Die gebruik je dan ook voor het vergelijken:
<?php
if (!$rLogin = mysql_query("SELECT lid_id FROM leden WHERE wachtwoord = '" . md5($_POST['wachtwoord']) . "'"))
{
echo 'Combinatie gebruikersnaam / wachtwoord onjuist';
}
else
{
// juist ingelogd; start sessie
}
?>
<?php if (!$rLogin = mysql_query("SELECT lid_id FROM leden WHERE wachtwoord = '" . md5($_POST['wachtwoord']) . "'")) { echo 'Combinatie gebruikersnaam / wachtwoord onjuist'; } else { // juist ingelogd; start sessie } ?>
Natuurlijk bouw je een functie, waarmee je bij elke pagina controleert of de betreffende persoon ingelogd is. Je slaat bijv. het lid_id op, het ip-adres, evt. een controle getal. Mooi is ook om de database erbij te gebruiken. De gegevens in je sessie sla je ook in de database op. Je kunt dan controleren of het lid_id uit de sessie overeenkomt met het lid_id in de database. Ook kun je controleren of het ip-adres in de sessie overeenkomt met het ip-adres in de database het $_SERVER['REMOTE_ADRR']. Hetzelfde geldt natuurlijk voor het eventuele controle-getal. Op deze manier maak je een (behoorlijk) veilig systeem.
Succes!
|