webForumDet fria alternativet

Enkelt login med default värde.

PHP

8 svar · 684 visningar · startad av teddd

Medlem sedan mars 200950 inlägg
Frågan#1

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??

Medlem sedan juni 20006 031 inlägg
#2

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.

Medlem sedan jan. 20061 807 inlägg
#3

Om det bara är en enda användare, är det inte lika bra att hårdkoda den och hoppa databasen?

Medlem sedan mars 200950 inlägg
#4

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?
Medlem sedan juni 20006 031 inlägg
#5

= 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!

Medlem sedan mars 200950 inlägg
#6

Pedda skrev:

= 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.

Medlem sedan juni 20006 031 inlägg
#7

teddd skrev:

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...
Medlem sedan mars 200950 inlägg
#8

Pedda skrev:

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! :)

Medlem sedan juni 20006 031 inlägg
#9

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.

271 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)