Jeg har fulgt guiden til punkt og prikke (håber jeg) og det synes også at virke fint nok, lige bortset fra, at når jeg logger ind, melder den tilbage at brugeren ikke findes, men når jeg så klikker 'tilbage' så er jeg godt nok logget ind.
if ..og en masse flere af dem.. // når alt er ok: return true; } </script> </head> <body> <table width="<? echo $table; ?>" align="center" border="0"> <tr> <td width="100%"><?php include($DOCUMENT_ROOT.'/php/menu.php'); ?></td> </tr> <tr> <td width="100%" valign="top">
Den spørger om SESSION["logged_in"] er lig med 1. Umiddelbart vil den ikke være det, for jeg kan slet ikke se noget sted i din kode at SESSION["logged_in"] oprettes? Det den spørger efter, eksisterer slet ikke?
Der burde stå
$_SESSION["logged_in"] = 1;
et eller andet sted i koden, når brugernavn og kodeord er korrekt. Men så vidt jeg kan se, er det ikke tilfældet?
Synes godt om
Slettet bruger
25. december 2010 - 11:06#14
Jeg kan slet ikke finde den tekststreng du skriver nogen steder i koden (start.php eller de andre login filer)
Nu er det bygget om med klargørelse til nogle af de andre ting du har efterspurgt herinde. Du skal tilføje et felt som hedder "admin" i tabellen over dine brugere og give admin-kontoen værdien 1. Andre brugere kan du bare give 0.
I din form skal du også tilføje et skjult felt, for at hjælpe PHP'en lidt.
<input type="hidden" name="login">
Din action i din form skal ligeledes også se således ud;
Det er mig som har været lidt hurtig kan jeg se. Har lige fået et " for meget ind.
header("location:$_GET['redirect']");
Hjalp det?
Synes godt om
Slettet bruger
25. december 2010 - 22:14#18
MySQL ser således ud nu
CREATE TABLE IF NOT EXISTS `brugere` ( `id` int(11) NOT NULL auto_increment, `admin` tinyint(2) NOT NULL, `brugernavn` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Synes godt om
Slettet bruger
25. december 2010 - 22:17#19
hmm...
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/acepdk/public_html/anakin.dk/php/login.php on line 45
Du har session_start(); i toppen af login.php samt alle sider hvor loginformen vises/skjules ikke? Den skal være på alle siderne. Og helt i toppen!
Jeg skrev at det umiddelbart var mangelfuldt. Det burde det nu ikke være helt i samme grad længere, efter de rettelser jeg har givet dig. Har ikke nogen links til nogle færdige systemer ellers, da jeg bygger dem selv altid. Vi skal nok få dette op at køre. Det er såmænd en helt standard metode at lave det på, og de fleste andre systemer vil også følge denne struktur mere eller mindre.
Og iøvrigt kan jeg godt forstå at det ikke virker, da jeg giver dig misvisende informationer! ... Jeg har lige opdaget en fejl jeg har lavet, og derfor vises din login form.
if (isset($_SESSION["brugerNavn"]) && isset($_SESSION["brugerId"])) {
skal rettes til
if (isset($_SESSION["username"]) && isset($_SESSION["userid"])) {
Synes godt om
Slettet bruger
28. december 2010 - 16:55#26
Jeg formoder det er i login.php det skal rettes, men der findes den sætning slet ikke
Og har du rettet din if sætning der var fejl i omkring login formularen?
Du får ikke noget ud af at have login delen på en side for sig selv. Dette skulle være lige så "simpelt". Det er bare den redirect der giver fejl ser det ud til. Hvis du gør ovenstående, skriver den så "test" på en blank side? Og hvis du så klikker tilbage og opdaterer siden med loginformen, kan du så stadig se den?
Synes godt om
Slettet bruger
11. januar 2011 - 16:34#31
Ja, jeg har skiftet begge sætninger ud, og den skriver test på en blank side, og når jeg går tilbage er login formularen stadig synlig.
Den viser ikke brugernavnet, fordi den ikke kan finde det i databasen. Du har stadig dit gamle SQL statement, som søger efter den SESSION som aldrig blev oprettet.
$userQuery = mysql_query("SELECT brugernavn FROM brugere WHERE id = '$_SESSION[brugerId]'");
rettes til
$userQuery = mysql_query("SELECT brugernavn FROM brugere WHERE id = '$_SESSION[userid]'") or die(mysql_error());
Hvis du vil lave en helt simpel logud funktion, kan du bare lave en side der hedder logud.php og som indeholder følgende,
<?php if (isset($_SESSION["username"]) && $_SESSION["userid"]) {
Så laver du bare et ganske normalt link til logud.php. Alle som er logget ind, som går ind på den side, vil blive logget ud og sendt videre. Folk som ikke er logget ind, men som går ind på siden, bliver bare sendt videre uden videre.
Problemet er, at selvom den skifter øjeblikkeligt, og viser linket når man har logget ind, så forsvinder det igen når man har klikket lidt rundt, men stadig er logget ind. Hvis jeg var logget ud, så ville formularen vel vises?
Formularen vil vises, hvis du er logget ud. Dermed så er det ikke dine sessioner, men din $menu variabel som fejler tilsyneladende. Hvor får du værdien "opskrifter" fra, når du klikker rundt på sitet?
Synes godt om
Slettet bruger
19. januar 2011 - 21:16#40
Det er for at vise bestemte underlinks til en bestemt side.
Det bør være ligemeget om du bruger den ene eller den anden. Der bør ikke være problemer med at huske sessions, hvis du har session_start(); i toppen af alle dine filer...
Du skal bruge "userid". Se indlæg #15. Der kan du se hvad dine sessioner hedder. Du har en $_SESSION["username"]; og $_SESSION["userid"];
Hvor meget virker på nuværende tidspunkt, og hvad virker ikke? Der er snart alt for mange indlæg og rettelser i denne tråd, til at det er til at finde rundt i :)
Synes godt om
Slettet bruger
20. januar 2011 - 19:33#44
Det hele virker nu, dog med undtagelse af logud, men eftersom det kun er hustruen og jeg der skal bruge systemet, så lever vi nok med det.
Ak, det var godt. Der var mange ting som drillede. Det er altid lettere, hvis man sidder med selv foran sig :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.