För det första, lägg aldrig lösenord i en xml fil.
Om någon hittar xml filen så kan dom ju läsa lösenordet utan problem.
Hårdkoda istället ett admin namn och lösenord som kan användas om databasen är tom.
8 svar · 684 visningar · startad av teddd
Tjena!
Eftersom jag inte är så haj på php och programmering utan bara kan grunderna så vänder jag mig till er php-gurus :)
Jag håller mest på med css och webbdesign inte så mycket php och nu håller jag på och göra en mycket enkel, skräddarsydd blogg till min tjejkompis.
Det jag behöver nu är ett mycket enkelt login-system.
Min kompis ska vara enda administratorn på bloggen, och jag har en tabell som heter adminuser som innehåller id, first, last, username, password och email.
Jag har en xml fil där jag vill lagra "default-värden" för användarnamn och lösenord, alltså ett användarnamn och ett lösenord som ska gälla om inte administratorn har lagt till ett eget.
Men om det däremot finns inmatade värden i adminuser så är det dom som ska gälla.
Kort och gott:
*Om det inte finns nått i adminuser, jämför inmatat användarnamn och lösenord från formuläret gentemot default-värdena i xml-filen och skicka till admin.php om det stämmer. Annars visa felmeddelande.
Om det däremot finns nått lagrat i adminuser, jämför inmatat användarnamn och lösenord från formuläret gentemot det som användaren har lagt till och skicka till admin.php om det stämmer. Annars visa felmeddelande.*
Hur göra detta??
För det första, lägg aldrig lösenord i en xml fil.
Om någon hittar xml filen så kan dom ju läsa lösenordet utan problem.
Hårdkoda istället ett admin namn och lösenord som kan användas om databasen är tom.
Om det bara är en enda användare, är det inte lika bra att hårdkoda den och hoppa databasen?
Jo det kanske är bäst.
Har med mina simpla kunskaper i php gjort denna kod:
<?php
//store formvaules
$user = $_POST['username'];
$pass = $_POST['password'];
//check if formvalues is valid
if($user = 'admin' AND $pass = 'password') {
//valid inputs, set session to TRUE
$_SESSION['logged_in'] = true;
header('Location:http://localhost/WEBSITES/vemssanning/admin.php');
die();
}
else
{
//invalid inputs, set session to false and redirect to login
$_SESSION['logged_in'] = false;
header('Location:http://localhost/WEBSITES/vemssanning/index.php');
die();
}
?>
Men det fungerar inte :( det spelar ingen roll vad jag skriver in i formulären eller om dom är tomma, jag skickas till admin.php ändå.
Vad är fel?
= används för att tilldela en variabel ett värde.
För att jämföra två värden används ==
Så ändra kollen till:
if($user == 'admin' AND $pass == 'password') {
/red
Koden du gav kanske inte är all kod på sidan, men du måste ha session_start() överst på alla sidor när du använder sessioner.
Så alla sidor ska börja med:
<?php
session_start();
// resten av koden...
Ingen output får finnas innan session_start(), inte ens ett mellanslag!
= används för att tilldela en variabel ett värde.
För att jämföra två värden används ==
Så ändra kollen till:if($user == 'admin' AND $pass == 'password') {/red
Koden du gav kanske inte är all kod på sidan, men du måste ha session_start() överst på alla sidor när du använder sessioner.
Så alla sidor ska börja med:<?php session_start(); // resten av koden...Ingen output får finnas innan session_start(), inte ens ett mellanslag!
Ja nu gick det bättre :)
Och om jag enbart vill att personen med det rätta lösenordet kan visa adminsidan, hur gör jag? För nu behöver man ju bara skriva in adressen till admin.php och all information visas för vem somhelst.
Ja nu gick det bättre :)
Och om jag enbart vill att personen med det rätta lösenordet kan visa adminsidan, hur gör jag? För nu behöver man ju bara skriva in adressen till admin.php och all information visas för vem somhelst.
På alla sidor som du måste vara inloggad på för att se:
<?php
session_start();
if (!isset($_SESSION['logged_in']) && $_SESSION['logged_in'] != true){
header("Location: startsidan.php");
exit;
}
// resten av koden som vanligt...
På alla sidor som du måste vara inloggad på för att se:
<?php session_start(); if (!isset($_SESSION['logged_in']) && $_SESSION['logged_in'] != true){ header("Location: startsidan.php"); exit; } // resten av koden som vanligt...
Ja nu fungerar det.
Satte även session_destroy(); på startsidan o nu funkar det som jag vill att det ska fungera. Lysande, tack! :)
Bra, lycka till med sidan.
Använd gärna länken "Markera som lösning" vid det inlägg som löste frågan så tråden hamnar bland lösta trådar och andra med samma problem hittar lösningen.