Cookies werken niet goed
inlog:
-------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";
require("config.php");
if ($submit == "submit")
{
$query = mysql_query("SELECT * FROM members WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord' AND geactiveerd = '1'");
$result = mysql_num_rows($query);
$row = mysql_fetch_object($query);
setcookie("gebruikersnaam", $gebruikersnaam, time() + 90 * 86400);
if (isset($gebruikersnaam))
{
echo "U bent ingelogt als: $gebruikersnaam<br>";
echo "<a href=\"loguit2.php\">Log Uit!</a>";
}
}
else{
echo "<form method=\"POST\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"submit\" value=\"submit\">
Naam:<br>
<input type=\"text\" name=\"gebruikersnaam\" size=\"20\"><br>
Wachtwoord:<br>
<input type=\"password\" name=\"wachtwoord\" size=\"20\"><br>
<input type=\"submit\" value=\"Login\"> <input type=\"reset\" value=\"Aanmelden\"
onclick=\"document.location.href=('aanmelden.php')\">
</form>";
}
?>
// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";
require("config.php");
if ($submit == "submit")
{
$query = mysql_query("SELECT * FROM members WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord' AND geactiveerd = '1'");
$result = mysql_num_rows($query);
$row = mysql_fetch_object($query);
setcookie("gebruikersnaam", $gebruikersnaam, time() + 90 * 86400);
if (isset($gebruikersnaam))
{
echo "U bent ingelogt als: $gebruikersnaam<br>";
echo "<a href=\"loguit2.php\">Log Uit!</a>";
}
}
else{
echo "<form method=\"POST\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"submit\" value=\"submit\">
Naam:<br>
<input type=\"text\" name=\"gebruikersnaam\" size=\"20\"><br>
Wachtwoord:<br>
<input type=\"password\" name=\"wachtwoord\" size=\"20\"><br>
<input type=\"submit\" value=\"Login\"> <input type=\"reset\" value=\"Aanmelden\"
onclick=\"document.location.href=('aanmelden.php')\">
</form>";
}
?>
uitlog:
--------
Als ik uitlog keer in weer naar login en dat is goed. Maar als ik dan probeer in te loggen krijg ik dus die error dat er al gegevens naar gestuurd zijn. Ik weet niet waar het aan ligt want ene keer krijg ik ze wel en als ik iets verander krijg ik ze niet, zonder nou te weten wat reden tot die fout er voor is, want krijg eronder wel gewoon te zien ingelogd als:
Maar het grootste probleem, het inloggen/cookie systeem werkt nog niet goed. Want ik krijg vaak te zien dat ik ingelogd ben als test, terwijl ik dat helemaal niet ben (en dat schijnbaar nog wel in cookie ofzo staat). Soms krijg ik wel goede inloggegevens, maar wanneer ik weer naar login.php ga moet/kan ik dus opnieuw inloggen.
Op een of andere manier werkt het login/cookie systeem zoals ik hem nu heb en op verschillende manieren heb geprobeerd gewoon niet of niet goed.
Cookies zijn stukjes informatie op de computer van de client worden opgeslagen. Dit betekend dat bij het gebruik van cookies je deze informatie wanneer je het opvraagt je aan de user vraagt om een username. Wat als ik zelf een cookie installeer voor jouw site met de username van de admin?
Veiligheid van likmevestje. Nul, Nada, Noppes.
Je zoekt sessies. Hierbij wordt de informatie op de server opgeslagen, en aan de hand van een ip van een gebruiker en een sessienummer wat in een cookie bij de gebruiker wordt opgeslagen.
Vervolgens vraagt php om het cookie en zoekt zelf de bijbehorende sessie weer op. Resultaat: gebruiker geeft een geldige of ongeldige sessie op. Wanneer niet op ip gechecked wordt bestaat er ook nog iets als 'session hijacking' ook session fixation genoemd, waarbij deze sessie id wordt opgespoort en gebruikt op listige wijze.
Maar het komt er op neer dat dit per definitie een veiligere manier is dan dit gewoonweg via cookies te doen.
Kortom: google: php session tutorial login
(je mag ook zelf varieren) maar dit zou je redelijk op weg moeten helpen.
Ik had eerst sessions en werkte prima, maar ik vond het niks dat je steeds opnieuw moet inloggen als je explorer hebt gesloten waardoor ik dus met cookies wil werken, zodat je niet steeds opnieuw hoeft in te loggen.
PHPHulp.nl gebruikt ook sessies, hier hoef je toch ook niet steeds opnieuw in te loggen? Sessies gebruiken van zichzelf ook cookies.
Ok, dan ga ik gewoon proberen te zorgen dat sessions beter werken dan nu.
login.php
-----------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
session_start();
require("config.php");
if($submit){
$query = mysql_query("SELECT * FROM x 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");
}
?>
session_start();
require("config.php");
if($submit){
$query = mysql_query("SELECT * FROM x 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");
}
?>
en op index.php
-------------------
Niet ingelogd<br><br>
> <a href="login.php">Log in</a><br>
> <a href="aanmelden.php">Meld aan</a>
en dan nog een stuk code waaronder het bekijken wat voor functie gebruiker heeft en weergeven van aantal links
niemand die weet hoe ik kan zorgen hoe ik ingelogd blijf met bovenstaande sessions/inlog systeem?
Je zet $login in een andere pagina ... dus logisch dat je die niet kan opvragen ...
En hoe kan ik dat verhelpen? Login en index in 1 pagina maken? Maar als je browser sluit en opnieuw opstart moet je ook weer inloggen, is dat er dan mee verholpen?
Probeer het eens zo:
kent iemand hier een verklaring voor?
sessie niet goed weggehaald?
(heb de code nu wel niet meer maar toch..)
ik had eerst alle velden van de sessie leeggemaakt en dan sessie gedestroyd...
in ieder geval nu werk ik enkel met database maar heeft er iemand een script zodat er na een tijd de gebruiker automatisch word afgemeld in de database (zonder sessies dus)
Een session wordt dus altijd vernietigd als browser wordt gesloten, dan is een inlogsysteem toch niet goed te maken met sessions, (op phphulp wordt dacht ik ook met sessions gewerkt en werkt prima),
of heb ik het nu mis?
Dus ja een sessie wordt dan vernietigd...
Maar dan heeft een inlogsysteem met sessies eigenlijk geen nut en kan ik beter overstappen op cookies.
Mede omdat sessie serverside bewaard worden en cookies clientside waardoor iemand ze handmatig kan editen ...
Ja, maar als sessies steets gedestroyed worden heeft het naar mijn mening geen zin om een login systeem met cookies te hebben, omdat je dan steeds opnieuw moet inloggen.
http://www.php.net/sessions
Cookies is totaal onzinnig: sessies gebruiken ook zelf al een cookie om het sessie_id te onthouden.
Grtz,
Adje
Code (php)
wat aantal posts hierboven staat. php site nog even bekeken maar werd er zo snel niet duidelijker op.