TobiasG Skrevet 27. oktober 2009 Del Skrevet 27. oktober 2009 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
Jonas Skrevet 27. oktober 2009 Del Skrevet 27. oktober 2009 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. Lenke til kommentar
TobiasG Skrevet 27. oktober 2009 Forfatter Del Skrevet 27. oktober 2009 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
TobiasG Skrevet 27. oktober 2009 Forfatter Del Skrevet 27. oktober 2009 (endret) 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 27. oktober 2009 av TobiasG Lenke til kommentar
TheClown Skrevet 27. oktober 2009 Del Skrevet 27. oktober 2009 Bruk et template-system! Smarty anbefalles. Lenke til kommentar
Jonas Skrevet 27. oktober 2009 Del Skrevet 27. oktober 2009 (endret) 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 27. oktober 2009 av Jonas Lenke til kommentar
TobiasG Skrevet 27. oktober 2009 Forfatter Del Skrevet 27. oktober 2009 Skal se på innleggene deres nå Takk, her er hele templatene (index.php) http://www.pastie.org/672004 login'en er lagt inn via include, login.php er her http://www.pastie.org/672006 Lenke til kommentar
Araho Skrevet 27. oktober 2009 Del Skrevet 27. oktober 2009 (endret) 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 27. oktober 2009 av Araho Lenke til kommentar
TobiasG Skrevet 27. oktober 2009 Forfatter Del Skrevet 27. oktober 2009 $error = false; if(*NOE HER*) { echo "*MELDING*"; $error = true; } if($error == false) { *LOGIN SCRIPT HER* } *RESTEN AV SIDEN* Gjør bare noe slik jeg Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå