Gå til innhold

Trenger hjelp til å lage login-funksjon i PHP


Anbefalte innlegg

Hei :)

Jeg sliter litt med å få laget et veldig simpelt loginn system.

Jeg skal ikke ha database, for det skal kun være 1 bruker som jeg har valgt.

Det er 2 koder som jeg har, en html og en php. Jeg har sikkert brukt 1 time på å prøve å sette di sammen, men får det ikke til :p

 

Håper noen kan hjelpe meg!

 

Kodene er nedenfor..

<?php

$bruker = $_GET['bruker'];

$passord = $_GET['passord'];

 

if (($bruker == "kongen") && ($passord == "1234"))

echo "<h1>HALLA :D</h1>";

else

echo "<h1>HADE :D</h1>";

?>

<label for="name">Username</label>

<input name="bruker" type="text" />

<label for="password">Password</label>

<input name="passord" type="password" />

<input type="submit" value="submit" />

</form>

Endret av cyclo
Emnetitel endret da original emnetitetl brøt med forumets retnignslinjer
Lenke til kommentar
Videoannonse
Annonse

[...]

<label for="name">Username</label>

<input name="bruker" type="text" />

<label for="password">Password</label>

<input name="passord" type="password" />

<input type="submit" value="submit" />

</form>

 

Få se <form> greia de. Den skal ligne på denne:

 

<form method="get" action="">

Lenke til kommentar

Tja. Kan vel det.

 

Slik ditt system ser ut så er dette sånn jeg ville gjort det:

 

<?php

// Per standard så er ikke en bruker logget inn. Så vi definerer det i variablen 
$loggedIn = false;


// Her sjekker vi om formen har blitt sent (submitted)
if(!empty($_GET))
{
// Samle det hele inn i variabler
$bruker = $_GET['bruker'];
$passord = $_GET['passord'];

// Sjekk om det stemmer
if (($bruker == "kongen") && ($passord == "1234"))
{
	// Hvis det gjør det, ja da er brukern logga inn
	$loggedIn = true;
}
else
{
	// Hvis ikke, nei da må han logge inn. I tilleg så skriver vi en liten advarsel vi 
	$loggedIn = false;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Conforming HTML 4.01 Transitional Template</title>
</head>

<body>
<!-- Dette er det samme som og skrive if($loggedIn == true) { ; Dette ser bare bedre ut i en template -->
<?php if($loggedIn == true): ?>
Du er innlogget <b>Kongen</b>.
<?php else: ?>

<?php if(!empty($_GET) && $loggedIn == false): ?>
<b>Du har skrevet feil brukernavn eller passord.
<?php endif; ?>

<form>
<label for="name">Username</label>
<input name="bruker" type="text" />	

<label for="password">Password</label>
<input name="passord" type="password" />

<input type="submit" value="submit" />
</form>

<?php endif; ?>
</body>
</html>

 

Men skal man gjøre det en smule mer avansert så må man bruke sessions. Kommer tilbake med et session script straks

 

EDIT: Her har du et med sessions. Det anbefaler jeg da det er byggeblokkene for og lage et ordentlig login / logout / register system :)

 

<?php
error_reporting(E_ALL & ~E_NOTICE);

// Dette starter en "Session Instance"
session_start();

// Hvis brukeren vil logge ut så sletter dette informasjonen som er laget.
if($_GET["action"] == "loggut") { $_SESSION = array(); session_destroy(); header("Location: {$_SERVER[php_SELF]}?action=loggut_ok");} 
// Dette viser en melding om at brukeren har logget ut 
if($_GET["action"] == "loggout_ok") { $message="Du har logget ut"; } 

// Her sjekker vi om formen har blitt sent (submitted)
if(!empty($_POST))
{
// Samle det hele inn i variabler
$bruker 	= $_POST['bruker'];
$passord 	= $_POST['passord'];

// Sjekk om det stemmer
if (($bruker == "kongen") && ($passord == "1234"))
{
	// Hvis det gjør det, ja da er brukern logga inn
	$_SESSION["loggedIn"] = true;
	$_SESSION["bruker"] = $bruker;
}
else
{
	$message = "Du har skrevet inn feil brukernavn eller passord";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Conforming HTML 4.01 Transitional Template</title>
</head>

<body>
<?php if(isset($message)): echo $message . "<br />"; endif; ?>

<?php if(@$_SESSION["loggedIn"] == true): ?>
Du er innlogget <b><?=$_SESSION["bruker"]?></b>. <br /><a href="?action=loggut">Logg ut</a>
<?php else: ?>

<form method="post">
<label for="name">Username</label>
<input name="bruker" type="text" />	

<label for="password">Password</label>
<input name="passord" type="password" />

<input type="submit" value="submit" />
</form>

<?php endif; ?>
</body>
</html>

Endret av Surmoth
Lenke til kommentar

Siden du er nybegynner tenkte jeg at du skulle få det så enkelt som mulig:

<?php
error_reporting(E_ALL ^ E_NOTICE);

if (isset($_COOKIE['admin']))
{
	if ($_GET['MosKake'])
	{
		setcookie("admin", "administrator", time()-99999);
		header('Location:'.$_SERVER['PHP_SELF'].'');
	}

	?>
		<html>
		<head>
		</head>
		<body>
		<h3>Innlogget!</h3>
		<a href="?MosKake=1">Logg ut</a>

	<?php
}

else
{
	if ($_POST['OK'])
	{
		$Brukernavn = $_POST['Brukernavn'];
		$Passord = $_POST['Passord'];

		if (strcmp($Brukernavn, "kongen") === 0 && strcmp($Passord, "12345") === 0)
		{
			setcookie("admin", "Administrator");
			header('Location:'.$_SERVER['PHP_SELF'].'');
		}
	}

	?>
		<html>
		<head>
		</head>
		<body>
		<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
			Brukernavn: <input type="text" name="Brukernavn" size="20" />
			<br />
			Passord: <input type="password" name="Passord" size="20" />
			<br />
			<input type="submit" name="OK" value="Logg inn" />
		</form>
	<?php
}
?>
</body>
		</html>

Riktig nok ribbet til benet og forenklet, men det fungerer.

Endret av greygenic
Lenke til kommentar

Skjønner ikke hvorfor jeg ser ===, når det riktig nok skal fungere med ==?

if (strcmp($Brukernavn, "kongen") === 0 && strcmp($Passord, "12345") === 0)

Når man bruker "==" så sjekker PHP om verdiene er like.

Når man bruker "===" så sjekker PHP om verdiene er like OG at de er av samme type.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...