Gå til innhold

Trenger hjelp til å lage login-funksjon i PHP


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

[...]

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

Skrevet

mmm.. Den har jeg ikke x)) haha...

 

men det som er greia da, det er masse txt som skal komme opp når man har logget inn. Kan du hjelp meg? :)

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

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

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

Skrevet

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

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

Er riktig det. :D

Skrevet

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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...