Gå til innhold

[Løst]Die / Exit & header problem


Anbefalte innlegg

Har et problem når det gjelder Die(); og Exit();

skulle gjerne hatt en annen funksjon hvis mulig.

 

Jobber med en webside, litt sånn prøve greier, men så har jeg møtt på problemet med at jeg gjerne bare skulle fått die(); funksjonen til å påvirke en hvis del av websiden, her er scriptet fra index.php

 

...
<html>
<head>
bla, bla
</head>
<body>
Header, Meny...

<div id="content">
  <div id="left">
  <div class="post">
<h1>+ Login</h1><p>
	<?php
	include ("loginform.php");
		?>

  </div>
</div>
...

 

loginform.php

<?php

$submit = $_POST['submitlogin'];

if ($submit)
{

$username = strtolower($_POST['username']);
$password = $_POST['password'];

if ($username&&$password)
{

include ("php/includedb.php"); \\ Dette er bare mysql connect...


$query = mysql_query("SELECT * FROM users WHERE username='$username'");

$numrows = mysql_num_rows($query);

if ($numrows!=0)
{

while ($row = mysql_fetch_assoc($query))
{
	$dbusername = $row['username'];
	$dbpassword = $row['password'];
	$activated = $row['activated'];		

	if ($activated=='0') // OR FALSE
	{
		die("Din brukerkonto er ikke aktivert, vennligst sjekk din e-post konto!<p>");
	}

} 

if ($username==$dbusername&&md5($password)==$dbpassword)
{
	echo "Du er logget inn";
	$_SESSION['username']=$dbusername;	
}
else
	die "Ugyldig passord!<p>";

}

else
die("Det finnes ingen brukere med dette brukernavnet!<p>");

}
else
echo("Vennligst tast inn brukernavn og passord!<p>");
}

echo("
<form action='loginform.php' method='POST'>
Brukernavn:<br \>
	<input type='text' name='username'><br \>
Passord:<br \>
	<input type='password' name='password'><br \>
<font size='1'><a href='sendpassword.php'>Glemt ditt passord?</a></font>
<p>
<input type='submit' name='submitlogin' value='Login'>
</form>
");
?>

 

1. Problem,

får ikke brukt fuction "header" hvis login true, så formen vil egentlig stå der selv etter du er logget inn..

 

2. STØRSTE Problem.. Når jeg bruker die(); dreper jeg ikke bare dette scriptet, men også hele den andre websiden (index.php) så vil bare få opp en brøkdel av index.php..

 

hvordan kan dette løses, noen<3?

Lenke til kommentar
Videoannonse
Annonse
Dette problemet er løst i omtrent alle arkitekturpatterns. Det handler basically om å utføre logikk før du presenterer innholdet. Temaet er muligens litt over ditt nivå, men ta en titt på f.eks. MVC-pattern dersom du vil utforske dette videre.

 

Akkurat MVC er ikke min gode side =P

Altså, php er ganske så mye logikk, etter hvor du plasserer div innhold, på den måten så burde die(); etter alt som har med template og være, men forstår bare ikke da hvordan jeg kan få den teksten jeg vil i midten =P hehe

Lenke til kommentar

Eller jeg kan selvfølgelig kjøre scriptet i en iframe =(

Da vil jeg ikke ta ut annet en frame'en slik at det ikke vil gå utover webtemplae'en, men er det noen annen måte å gjøre det på <3 :)

 

Tenker selv uansett hvor jeg plasserer die funksjonen så vil jo include være midt i index.php,

så det er jo der die vil "slå til.."

Endret av TobiasG
Lenke til kommentar

Unskyld meg, men hvem er det som liksom anbefaler bruk av Smarty? :!: Smarty introduserer egen syntaks, som likevel bare oversettes PHP. Dette medfører naturligvis bare begrensninger og ingen fordeler whatsoever. Første eksempel oversettes til det siste. Så hvorfor i all verden gå en omvei, når man like så godt kan gjøre det skikkelig med en eneste gang? Hvis man absolutt skal benytte seg av et templatesystem, gå i hvert fall for Savant.

 

<h1>List of Plugins, Alphabetically</h1>
{foreach from=$plugins item=plugin}
<h2>{$plugin.name}</h2>
<p>{$plugin.description}</p>
{/foreach}

<h1>List of Plugins, Alphabetically</h1>
<?php foreach ( $plugins as $plugin ) : ?>
<h2><?= $plugin['name'] ?></h2>
<p><?= $plugin['description'] ?></p>
<?php endforeach; ?>

http://phpsavant.com/

http://no2.php.net/control-structures.alternative-syntax

http://www.codeassembly.com/Why-template-s...-sometimes-bad/

http://www.massassi.com/php/articles/template_engines/

Endret av Jonas
Lenke til kommentar

Jeg har laget en lignende løsning, hvor jeg enkelt og greit satt en cookie/session variabel ved login, og sjekket om disse var satt og matchet hverandre. Gjorde de det, presenterte jeg innholdet for de innloggede, og hvis ikke fikk de kun opp innloggingsskjemaet oppe i innloggingsboksen.

 

På denne måten fikk jeg ingen problemer med at scriptet avsluttet og forårsaket en uryddig side. I login.php brukte jeg en header()-call som førte brukeren til siden de var på etter innlogging.

 

Kun et veldig basic eksempel:

if (isset($_COOKIE['userid']) && isset($_SESSION['userid'])){
if ( $_COOKIE['userid']  == $_SESSION['userid']) 
{
echo 'Velkommen '. $_SESSION['username'].'<br><a href="/logout.php">Logg ut</a>';
}
setcookie("userid", "", time()-3600); // Fjern cookien
session_destroy(); // Fjern all session-data.
echo 'Det var et problem med innloggingen, vennligst logg inn på nytt.';
$out = '<form action="/login.php" method="POST">';
$out .= <input type="text" name="username"><br>';
$out .= '<input type="password" name="password"><br>';
$out .= "<input type="submit"> </form>';
echo $out;
}
else {
$out = '<form action="login.php" method="POST">';
$out .= <input type="text" name="username"><br>';
$out .= '<input type="password" name="password"><br>';
$out .= "<input type="submit"> </form>';
echo $out;
}

Endret av Araho
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...