En liten fråga om sessioner:
<?
session_start();
// Kopplar upp mot databasen
$test = mysql_connect("server", "user", "pass");
mysql_select_db("dbuser");
// Någon vill logga in
if (isset($HTTP_POST_VARS['login'])) {
//Letar efter angivet lösenord/användarnamn i databasen
$query = mysql_query("SELECT * FROM LOGINPASS WHERE USER='{$HTTP_POST_VARS['user']}' AND PASS='{$HTTP_POST_VARS['pass']}'");
if (mysql_num_rows($query) == 1) {
// Rätt användare och lösenord, logga in
session_register("login");
$login = "true";
} else {
// Felaktigt inloggning
echo 'Felaktig inloggningsinfo.';
}
}
// Någon vill logga ut
if (isset($HTTP_GET_VARS['action']) && $HTTP_GET_VARS['action'] == 'logout' && isset($HTTP_SESSION_VARS['login'])) {
session_unregister("login");
session_destroy();
echo 'Du är utloggad. Välkommen åter!';
}
if (isset($HTTP_SESSION_VARS['login']) && $HTTP_SESSION_VARS['login'] == "true") {
// Lägg allt som ska visas när man loggat in här...
echo 'Du är inloggad.';
echo "<br><br><a href=\"{$_SERVER['PHP_SELF']}?action=logout\">Logga ut</a>";
echo "<br><br><a href='s2.php'>-=1=-</a>";
// Detta visar loginrutan om man inte är inloggad
} else {
?>
<form method="post" action="<?= $HTTP_SERVER_VARS['PHP_SELF'] ?>">
Username<br>
<input type="text" name="user"><br>
Password<br>
<input type="text" name="pass"><br>
<input type="submit" name="login" value="Login">
</form>
<?
}
?>
Detta verkar vara säkert och bra men det är ett litet problem. För att scriptet ska fatta att man har loggat in måste man först fylla i rätt user & pass (givetvis). När man sen trycker på "Submit" så tömmer den formuläret. Om man sedan uppdaterar sidan så fattar den..
Jag provade att byta ut
if (isset($HTTP_SESSION_VARS['login']) && $HTTP_SESSION_VARS['login'] == "true") {
mot
if (isset($login) && $login == "true")
och då fattade han (php-tolken :) ) det direkt efter man tryckt på "submit". Dock var det inte särskilt svårt att hacka sig in m.h.a. http://sida.se/s1.php?login=true
Några förslag???