När man har satt en cookie så kan den inte läsas i samma sidvisning utan endast efter att en annan sida laddats.
Mitt förslag är att du riktar inloggningsformuläret till en annan sida som sätter cookien och dina sessioner och sen skickar tillbaks till startsidan med en header location.
Frågan#1
Jag vill att "username" står i fältet på rad 73 angiven tid.
Cookien sätter jag på rad 4.
Vad är felet?
Jag har följande kod:
<?php
session_start(); // Alltid överst på sidan
setcookie('username', $_POST['user'], time() + (7 * 24 * 60 * 60);
include "conn.php"; // Databasanslutningen
// Inloggning
if (isset($_POST['submit'])){
$_POST = db_escape($_POST);
$sql = "SELECT user_id FROM members
WHERE user='{$_POST['user']}'
AND pass='{$_POST['passwd']}'";
$result = mysql_query($sql);
// Hittades inte användarnamn och lösenord
// skicka till formulär med felmeddelande
if (mysql_num_rows($result) == 0){
header("Location: index.php?badlogin=");
exit;
}
// Sätt sessionen med unikt index
$_SESSION['sess_user_id'] = mysql_result($result, 0, 'user_id');
$_SESSION['sess_pass'] = $_POST['passwd'];
$_SESSION['sess_user'] = $_POST['user'];
header("Location: index2.php");
exit;
}
// Utloggning
if (isset($_GET['logout'])){
session_unset();
session_destroy();
header("Location: index.php");
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Index</title>
<style type="text/css">
<!--
.style1111 {
color: #FF0000;
left: auto;
}
-->
</style>
</head>
<body>
<?php
// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){
echo "<h3>Logga in</h3>\n";
// Visa felmeddelande vid felaktig inloggning
if (isset($_GET['badlogin'])){
echo '<p class="style1111">Fel användarnamn eller lösenord!</p>';
}
?>
<form action="index.php" method="post">
Användarnamn:<br>
<input type="text" name="user" value="<?php echo isset($_COOKIE['username']) ? $_COOKIE['username'] : ''; ?>"><br>
Lösenord:<br>
<input type="password" name="passwd"><br>
<input type="submit" name="submit" value="Logga in">
</form>
<p>Inte medlem ?<br>
<a href="register.php">Registera dig</a>
<?php
} else {
echo "<a href=\"index.php?logout=\">Logga ut</a>\n";
}
?></p>
</body>
</html>