06. marts 2005 - 17:44
Der er
23 kommentarer og 1 løsning
Hjælp til Sessions!
Hej Eksperter! Jeg har et login script på min forside, og når man logger ind kommer man ind på en side der hedder loggetind.php! Men alle kan jo gå ind på denne side hvis de kender den, så derfor har jeg fået af vide at jeg skal ha' sat en sessions ind! Men hvordan skal denne se ud?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
06. marts 2005 - 17:56
#1
1) skriv session_start(); øverst i alle sidernes kode (lige efter <?php ) 2) når der er logget ind korrekt, skriver du: $_SESSION['loggetind'] = "ok"; 3) når du vil checke skriver du: if($_SESSION['loggetind'] != "ok") { //skrid :)
06. marts 2005 - 18:13
#2
den virker ikke.. Parse error: parse error, unexpected $ in ..../loggetind.php on line 9
06. marts 2005 - 18:20
#3
kan vi se linierne omkring linie 9?
06. marts 2005 - 18:26
#4
<?PHP ob_start(); ?> <?php session_start(); if($_SESSION['loggetind'] != "ok") { //skrid ?>
06. marts 2005 - 18:40
#5
og burde man ikke ha' en eller anden fejl meddelse om at man ikke var logget ind? eller blive sendt til en side?
06. marts 2005 - 19:35
#6
Som jeg har skrevet skal session_start() ind som første linie. Hvis det er nødvendigt for dig at bruge output buffering, må du bruge den derefter. <?php session_start(); ob_start(); if($_SESSION['loggetind'] != "ok") { header("location: index.php"); } ?> <html> ... Så mangler du bare at sætte sesion-var. Det putter du ind i dit eksisterende. .. if(//brugernavn og password var rigtigt) { $_SESSION['loggetind'] = "ok"; header("location: loggetind.php"); } :)
06. marts 2005 - 19:58
#7
du må undskylde, men jeg er ikke helt med..
06. marts 2005 - 19:58
#8
Skal koden se sådan her ud: <?php session_start(); ob_start(); if($_SESSION['loggetind'] != "ok") { header("location: index.php"); } if(//brugernavn og password var rigtigt) { $_SESSION['loggetind'] = "ok"; header("location: loggetind.php"); } ?>
06. marts 2005 - 20:01
#9
For så kommer den med en fejl Parse error: parse error, unexpected ';' in ...../loggetind.php on line 11
06. marts 2005 - 20:34
#10
Du skal sætte den session var, når der logges ind, lige før du sender folk til loggetind.php $_SESSION['loggetind'] = "ok"; Og på de andre sider checker du om den er sat: <?php session_start(); ob_start(); if($_SESSION['loggetind'] != "ok") { header("Location: index.php"); //bemærk stort L i location nu :) } Så bliver de sendt til index.php hvis ikke den er sat.
06. marts 2005 - 21:02
#11
Jeg forstår det altså ikke.. jeg kan gå ind på siden loggetind ligemeget hvad.. og har lige slettet alle mine cookies.. så det er ikke derfor
06. marts 2005 - 21:09
#12
har du også haft alle browservinduer lukket? Sessions ligger ikke på din computer, men på serveren, så at slette sine cookies er irrelevant.
06. marts 2005 - 21:12
#13
he he se... så ved jeg jo det.. Nej prøver lige at lukke dem! =)
06. marts 2005 - 21:19
#14
Hvis du fra totalt lukket browser kan gå direkte ind på en side hvor der står: <?php session_start(); ob_start(); if($_SESSION['loggetind'] != "ok") { header("Location: index.php"); //bemærk stort L i location nu :) } ?> ...så må du være tryllekunstner :)
06. marts 2005 - 21:29
#15
Nej det kan jeg ikke.. deværre, jeg er ikke nogen tryllekunstner! Men har et problem med denne her: "Du skal sætte den session var, når der logges ind, lige før du sender folk til loggetind.php $_SESSION['loggetind'] = "ok"; " Min login kode ser sådan her ud: <form name="login" method="post" action="loginHandler.php"> <tr> <td width="50%"> <p style="margin-top: 0; margin-bottom: 0"> <font color="#FFFFFF">Brugernavn </font> </td> <td width="50%"> <font color="#FFFFF0"> <input type="text" name="user" size="8" style="font-size: 8 pt; border-style: outset; border-width: 1; padding: 1"></font></td> </tr> <tr> <td width="50%"> <font color="#FFFFFF">Password</font></td> <td width="50%"> <font color="#304C80"> <input type="password" name="pass" size="8" style="font-size: 8 pt; border: 1px outset #FFFFFF; padding: 1"></font></td> </tr> <tr> <td width="50%"> <font color="#FFFFFF"> <input type="checkbox" name="C1" value="ON">Autologin</font></td> <td width="50%"> <INPUT TYPE="image" SRC="Pic/Knapper/loginsubmitbutton.gif" STYLE="margin-left:4px;border:0px" value="Login" name="I1" width="44" height="18"></td> </tr> </table> </td> </tr> <tr> og min loginhandler.php ser sådan ud: <?php if( isset( $_POST["user"] ) && isset( $_POST["pass"] ) && trim( $_POST["user"] ) != "" && trim( $_POST["pass"] ) != "" ) { if( strtolower( $_POST["user"] ) != "" || $_POST["pass"] != "" ) header( "Location: index.php?side=36" ); else { session_start(); $_SESSION["user"] = $_POST["user"]; if( $_POST["C1"] == 'on' ) { setcookie( "brugernavn", $_POST["user"], time() + 60*60*24*365, "/" ); setcookie( "kodeord", md5( $_POST["pass"] ), time() + 60*60*24*365, "/" ); } header( "Location: viplogin.php" ); } } else // hvis ikke brugernavn og kode er sat, returneres til loginside med fejl. header( "Location: index.php?side=37" ); ?>
06. marts 2005 - 21:29
#16
mener bare hvor skal jeg sætte $_SESSION['loggetind'] = "ok"; ind henne?
06. marts 2005 - 21:52
#17
Hvad sker der ?? Den kigger jo ingen steder på hvad brugernavnet og passwordet er ?!?!? Den kigger jo bare om de er tomme. Skal du ikke lige have en database med brugere, eller i det mindste et standard password, der virker. header( "Location: index.php?side=36" ); Denne linie vil altid blive udført (hvis der selvfølgelig er noget i $_POST['user'] og $_POST['pass']) ...og denne linie: if( strtolower( $_POST["user"] ) != "" || $_POST["pass"] != "" ) Den siger så at hvis der står noget i den ene ELLER den anden skal vi til den side der. Ovenstående betingelse har netop fastslået at de begge to er sat og ikke tomme, denne linie er med andre ord fuldstændig værdiløs ?!? Hvad er dine regler for om man eksisterer som bruger ?
06. marts 2005 - 21:59
#18
he he har bare taget brugernavnet og password ud af koden.. <?php if( isset( $_POST["user"] ) && isset( $_POST["pass"] ) && trim( $_POST["user"] ) != "" && trim( $_POST["pass"] ) != "" ) { if( strtolower( $_POST["user"] ) != "BRUGERNAVN" || $_POST["pass"] != "PASSWORD" ) header( "Location: index.php?side=36" ); else { session_start(); $_SESSION["user"] = $_POST["user"]; if( $_POST["C1"] == 'on' ) { setcookie( "brugernavn", $_POST["user"], time() + 60*60*24*365, "/" ); setcookie( "kodeord", md5( $_POST["pass"] ), time() + 60*60*24*365, "/" ); } header( "Location: viplogin.php" ); } } else // hvis ikke brugernavn og kode er sat, returneres til loginside med fejl. header( "Location: index.php?side=37" ); ?> Forstår du den bedre nu?
06. marts 2005 - 22:16
#19
<?php session_start(); if(!empty($_POST['user']) && !empty($_POST['pass'])) { if(strtolower($_POST['user']) != "BRUGERNAVN" || $_POST['pass'] != "PASSWORD" ) // at strtolower kan give "BRUGERNAVN" er et mirakel :P header( "Location: index.php?side=36" ); else { $_SESSION['navn'] = $_POST['user']; if( $_POST["C1"] == 'on' ) { setcookie( "brugernavn", $_POST["user"], time() + 60*60*24*365, "/" ); setcookie( "kodeord", md5( $_POST["pass"] ), time() + 60*60*24*365, "/" ); } header( "Location: viplogin.php" ); } } else // hvis ikke brugernavn og kode er sat, returneres til loginside med fejl. header( "Location: index.php?side=37" ); ?> ..og så på viplogin.php: <?php session_start(); if(!isset($_SESSION['navn'])) header("Location: index.php?side=37"); .....resten af den "hemmelige" side :)
06. marts 2005 - 22:19
#20
hvad mener du med at "at strtolower kan give "BRUGERNAVN" er et mirakel :P"
06. marts 2005 - 22:23
#21
at strtolower("BRUGERNAVN") er "brugernavn", rimelig åbenlyst.
06. marts 2005 - 22:37
#22
yes.. men det ser ud til at virke! Genstarter lige en gang og ser og det stadig virker, og så får du point!
06. marts 2005 - 22:49
#23
Det virker stadig så du får tak for den store hjælp og du får point! =)
06. marts 2005 - 22:52
#24
ok, fint nok at det virkede :)
Vi tilbyder markedets bedste kurser inden for webudvikling