Gjest Skrevet 29. august 2009 Del Skrevet 29. august 2009 Hei! Sitter nå igjen fast med PHP OOP admin/script. <?php require_once("initialize.php"); ?> <?php class Admin { function loginform() { $action = $_GET['action']; echo '<form name="Login" method="post" action="admin.php?action=Login">'; echo 'Brukernavn: <input type="text" name="brukernavn"/><br/>'; echo 'Passord: <input type="password" name="passord"/><br/>'; echo '<input type="submit" value="Login">'; echo '</form>'; } function login($brukernavn="", $passord="") { if ($_GET['action'] == "login"){ if($_POST['brukernavn'] && ($_POST['passord'])){ global $db; global $user; $brukernavn = $db->escape_value($brukernavn); $passord = $db->escape_value(sha1(md5($password))); $result = $db->query("SELECT * FROM ".self::$table_name." WHERE brukernavn = '".$brukernavn."' AND passord = '".$passord."' LIMIT 1"); if($db->num_rows($result) < 1){ $object->message = 'Feil brukernavn eller passord!'; echo warning($object->message); return false; }else{ $result = $db->query("SELECT fornavn, etternavn FROM brukere"); while($row = $db->fetch_array($result, MYSQL_ASSOC)){ $fornavn = $row['fornavn']; $etternavn = $row['etternavn']; } $object->message = ('Du er nå logget inn som: '.$fornavn.' '.$etternavn); echo success($object->message); return true; } } } } function error(){ } } ?> Som du ser så er den koden litt rotet ja. Blandt annet her: if($db->num_rows($result) < 1){ $object->message = 'Feil brukernavn eller passord!'; echo warning($object->message); return false; }else{ $result = $db->query("SELECT fornavn, etternavn FROM brukere"); while($row = $db->fetch_array($result, MYSQL_ASSOC)){ $fornavn = $row['fornavn']; $etternavn = $row['etternavn']; } $object->message = ('Du er nå logget inn som: '.$fornavn.' '.$etternavn); echo success($object->message); return true; } Hvis du ser den siste funksjonen: function error(){ } Så har jeg lyst til å kode en egen klasse for error når du logger inn. F.eks glemmer å fylle ut passord feltet. Hvordan kan jeg da sette opp en variabel som er en array som printer ut alle error meldingene med denne koden: echo success($object->message); (Koden over er allerede kodet i en annen funksjon fil og henter meldingen i denne filen hvis jeg har satt en melding. Variablen ønsker som skal være en array skal hete message som inneholder alle feil håper du skjønner hva jeg mener Lenke til kommentar
Runar Skrevet 29. august 2009 Del Skrevet 29. august 2009 Litt av (ganske mye etter min mening) poenget med OOP og klasser forsvinner når du tvinger HTML ut av funksjonene i klassen. Lenke til kommentar
BlueEAGLE Skrevet 29. august 2009 Del Skrevet 29. august 2009 Så har jeg lyst til å kode en egen klasse for error når du logger inn. F.eks glemmer å fylle ut passord feltet.Hvordan kan jeg da sette opp en variabel som er en array som printer ut alle error meldingene. Det du vil ha er en matrise (array) i objektet og når det oppstår en feil så legger du til et feilobjekt med koden class T_Error_object{ function __construct($message, $fatal=false) { $this->message = $message; if($fatal===true) { die($message); } } } if(empty($password)) { $this->error[]=new T_Error_object("Du har glemt å fylle ut passordet."); } Så, når du sjekker etter feil så gjør du det slik: if(!empty($this->error)) { foreach($this->error as $error) { echo($error->message); } } Håper det hjelper. Lenke til kommentar
Gjest Skrevet 29. august 2009 Del Skrevet 29. august 2009 Litt av (ganske mye etter min mening) poenget med OOP og klasser forsvinner når du tvinger HTML ut av funksjonene i klassen. Hvis du har noe bedre forslag så hvis det fram da? =P Lenke til kommentar
Runar Skrevet 29. august 2009 Del Skrevet 29. august 2009 Det er bare å søke etter "php login class" på f.eks. Google, så finner du mer enn nok av eksisterende klasser du enten kan kopiere eller bruke som inspirasjon. Jeg kan kanskje ikke vise frem et eksempel på en selvsagt versjon av klassen du er ute etter, men jeg har holdt på med dette lenge nok til å vite at man skal skille html output og php, kort fortalt. 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å