Beste leden,
Ik heb hier een probleem met mijn inlog script.
Hij slaat de sessie niet goed op.
Daardoor dat hij steeds zegt "dat je niet bent ingelogd".
Het inlog script:
PHP Code:
<?
session_start();
require("../conn.php");
if($submit){
$query = mysql_query("SELECT * FROM members WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord' AND geactiveerd = '1'");
$result = mysql_num_rows($query);
if(!$result){
$a = "Gebruikersnaam en/of Wachtwoord is/zijn incorrect. Of je bent vergeten om je account te activeren...<br><br><a href=\"?gebruikersnaam=$gebruikersnaam\">Ga terug</a>";
}
else{
while($object = mysql_fetch_object($query)){
$memberid = $object->memberid;
}
$login = 1;
session_register("login");
session_register("memberid");
header("Location: index.php");
}
}
else{
// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";
if(!$login){
$a = "<form method=\"POST\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"submit\" value=\"1\">
Naam:<br>
<input type=\"text\" name=\"gebruikersnaam\" size=\"20\" value=\"$gebruikersnaam\"><br>
Wachtwoord:<br>
<input type=\"password\" name=\"wachtwoord\" size=\"20\" value=\"$wachtwoord\"><br>
<input type=\"submit\" value=\"Login\">
</form>";
}
else{
header("Location: index.php");
}
}
// Op de plaats in je layout waar je het inlogformulier wilt hebben doe je ( echo $a; )
echo $a;
?>
- sessie opslaan error
-
01-12-2010, 19:43 #1
- Berichten
- 1.025
- Lid sinds
- 14 Jaar
sessie opslaan error
-
-
01-12-2010, 23:51 #2
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: sessie opslaan error
Ik mis toch echt een aantal zaken in dit script.. ten eerste:
je gebruikt $submit en $wachtwoord/$gebruikersnaam, het belangrijkste om direct te gaan doen is de superglobals hiervoor te gebruiken ($_POST['submit'], $_POST['gebruikersnaam'] en $_POST['wachtwoord']).
Daarnaast probeer je elementen aan te roepen uit je formulier welke geen naam hebben. In dit geval de submit knop, je mist namelijk de name="submit" tag, dus tenzij je PHP4 draait zal je nooit of ten nimmer bij de if($submit) actie komen in dit script.
In die zelfde if-else statement heb je in de else een verwijzing staan: if(!$login), maar deze controle zal altijd true geven ($login heeft nooit een waarde in dit gedeelte van de if-else. De enige plek waar jij $login een waarde geeft is namelijk NA de submit, zolang er niet op de submit is gedrukt zal $login altijd false zijn en als er wel op de submit is gedrukt zul je nooit bij de controle if(!$login) kunnen komen.
Het allervreemst is misschien nog wel dat je zegt dat je geen melding krijgt dat je ingelogd bent, terwijl je op deze pagina op géén enkele plek een aanvraag doet naar je sessie of deze wel bestaat en of deze geldig is.
Je doet er goed aan de basis van PHP even goed opnieuw door te nemen.. zo gebruik jij in je query bijvoorbeeld wachtwoord = '$wachtwoord' .. je zult op zijn minst een beveiliging moeten inbouwen om deze waarde, bijvoorbeeld de functie mysql_real_escape_string(), en natuurlijk niet vergeten $wachtwoord om te zetten naar de superglobal;
WHERE wachtwoord = '".mysql_real_escape_string($_POST['wachtwoord'])."'
zo dus.
Wat je waarschijnlijk met if(!$login) probeert te doen is te controleren of de sessie met de naam 'login' bestaat, dit doe je dan ook op een andere manier, namelijk:
if(!$_SESSION['login'])
Om verdere foutmeldingen met session_register() te voorkomen kun je overigens ook het volgende gebruiken:
$_SESSION['login'] = true;
$_SESSION['memberid'] = $memberid;
in plaats van:
session_register("login");
session_register("memberid");
Hopelijk heb je genoeg tips gehad om dit stukje te verbeteren, volgens mij heb je voorbeeld genomen aan een (zeer) verouderde tutorial of script.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic