hallo ik ben voor mijn website bezig om een admin gedeelte te bouwen zodat ik makkelijk content kan toevoegen/verwijderen/wijzigen en heb niet altijd mijn laptop met mijn bestanden bij me natuurlijk :)
dus heb ik nu een zo veilig mogelijke login proberen te maken met de vele criteria en tips die hier gegeven wordt en ben tot een stukje php script gekomen en wil aan jullie vragen of dit goed is en zal werken.
En ik zou je password gewoon in de query meenemen, ipv achteraf controleren:
$gUser = ("
SELECT
name, password
FROM
members
WHERE
name='" .mysql_real_escape_string(trim($_POST['name'])."',
AND
password = '".mysql_real_escape_string($pass)."'
");
Je doet de empty check op de POST variabelen verkeerd om. Eerst doe je:
$gebruikersnaam = trim($_POST['name']);
en dan gebruik je een empty(). Als de variabele echter niet bestaat gaat je script op bovenstaande al onderuit. Altijd dus EERST controleren met isset(), dan pas gebruiken. En ik zou zoals te doen gebruikelijk ook geen empty gebruiken. Als er niets is ingevuld krijg je gewoon geen record uit de database dus wordt de gebruiker ook niet ingelogd.
even alles aangepast en heb het nu zo. maar nu vraag ik mij af als ik de password in de query al controleer hoe weet ik of de wachtwoord wat ik ingevoerd heb gelijk is aan het wachtwoord in de database aangezien het met salt & pepper gecodeerd is.
maakt dit wat uit?
$gUser = ("SELECT
name, password
FROM
members
WHERE
name = '" .mysql_real_escape_string($gebruikersnaam). "'
AND
password = '" .mysql_real_escape_string($pass). "'
");
Regel 6 en 7 zijn overbodig. Verder kan iedereen die de juiste url kan raden gewoon het systeem binnenkomen, je zult de pagina's moeten beveiligen door gebruik te maken van sessie's.