Jag har ett inloggnings script här som jag fått tag på, men logga ut, som är ganska viktig, kommer inte fram :S
<?php
/*
Kollar om sessionen inloggad finns om den gör
det visas informationen mellan måsvingarna
*/
if(isset($_SESSION['inloggad'])) {
echo "Du är nu inloggad!";
echo "kanske är någon länk här?";
echo "En till ?";
}
else {
echo "<br />Du måste logga in via inloggningssidan.<br /><br />
<a href='login.php'>Logga in</a>";
}
//Om man trycker på länken logga ut händer detta
if(isset($_GET['logout'])) {
session_destroy();
echo "<script language='JavaScript'>
location.href=('index.php');
</script>";
exit();
}
?>
Har lagt till det och tagit bort det gamla, men nu som jag ser det verkar det ju inte finnas någon sida som man ska komma till efter att man loggat in... Sen verkar det ju vara konstigt att redan innnan man har provat att logga in så finns det en sida som säger att man inte är inloggad och att man ska klicka för att logga in :S
Jo, så här är det. Jag vill ha en loginsida, därifrån ska man komma till admin.php. Där ska man kunna, just nu, lägga till en nyhet, redigera andra nyheter och tabort andra nyheter. När man är klar ska man kunna logga ut.
Tack för hjälpen föresten ;)
För att komma till admin.php kan du lägga till action="admin.php" i din form-tagg, alt. action="inloggning.php" för att där hantera vad man gör vid fel lösenord etc. och sedan skicka vidare till lämlig sida.
<?php /* login.php */
session_start(); // Alltid överst på sidan
// Inloggning
if (isset($_POST['login'])){
$username = 'hej';
$password = 'hopp';
/*
Testa om användarnamn/lösenord är rätt
Annars skicka tillbaka till formulär
med felmeddelande
*/
if ($_POST['user'] != $username || $_POST['passwd'] != $password) {
header("Location: login.php?badlogin");
exit;
}
// Sätt sessionsvariabel som visar att man är inloggad
$_SESSION['admin_login'] = true;
header("Location: admin.php");
exit;
}
// Utloggning
if (isset($_GET['logout'])){
$_SESSION = array();
session_destroy();
header("Location: index.php");
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Login adminsidor</title>
</head>
<body>
<?php
// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['admin_login'])){
echo "<h2>Logga in</h2>\n";
// Visa felmeddelande vid felaktig inloggning
if (isset($_GET['badlogin'])){
echo "Fel användarnamn eller lösenord!<br>\n";
echo "Försök igen!\n";
}
?>
<form action="login.php" method="post">
<table>
<tr>
<td>Användarnamn:</td>
<td><input type="text" name="user" /></td>
</tr>
<tr>
<td>Lösenord:</td>
<td><input type="passwordd" name="passwd" /></td>
</tr>
<tr>
<td colspan="2" style="padding:10px 30px">
<input type="submit" name="login" value="Logga in" style="width:100px" />
</td>
</tr>
</table>
</form>
<?php
} else {
echo '
<p>Du är redan inloggad</p>
<p>
<a href="login.php?logout=">Logga ut</a><br />
<a href="admin.php">Till adminsidan</a>
</p>
';
}
?>
<p><a href="index.php">Startsidan</a></p>
</body>
</html>
Sedan på de sidor du vill skydda med din inloggning lägger du följande överst:
<?php
session_start();
if (!isset($_SESSION['admin_login'])) {
header("Location: login.php");
exit;
}
Nu är det inte så extremt säkert att ha dina användarnamn/lösenord i klartext i skriptet. Ett enkelt sätt att göra det lite bättre är att du kör följande skript:
echo md5('hopp'); // Ersätt med "hopp" ditt eget lösenord
Sedan lägger du in det som värde i ditt $password och ändrar till:
$username = 'hej';
$password = 'aa471e80ed10cac36bc2dd549c94b9b9';
/*
Testa om användarnamn/lösenord är rätt
Annars skicka tillbaka till formulär
med felmeddelande
*/
if ($_POST['user'] != $username || md5($_POST['passwd']) != $password) {
header("Location: login.php?badlogin");
exit;
}
Åtminstone kan inte då någon få ditt lösenord i klartext om de skulle råka se skriptet, av t.ex. fel på servern.
*
md5 är en envängskryptering, tekniken bygger på att man jämnför två strängar.
Den md5 strängen som är i databasen och den strängen som skickas i ett forumulär.
137 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe