Avatar billede kimmys Nybegynder
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?
Avatar billede baitianlong Nybegynder
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

:)
Avatar billede kimmys Nybegynder
06. marts 2005 - 18:13 #2
den virker ikke..

Parse error: parse error, unexpected $ in ..../loggetind.php on line 9
Avatar billede bromer Nybegynder
06. marts 2005 - 18:20 #3
kan vi se linierne omkring linie 9?
Avatar billede kimmys Nybegynder
06. marts 2005 - 18:26 #4
<?PHP ob_start(); ?>



<?php 
session_start(); 

if($_SESSION['loggetind'] != "ok")
{ //skrid
?>
Avatar billede kimmys Nybegynder
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?
Avatar billede baitianlong Nybegynder
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");
}

:)
Avatar billede kimmys Nybegynder
06. marts 2005 - 19:58 #7
du må undskylde, men jeg er ikke helt med..
Avatar billede kimmys Nybegynder
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");
}

?>
Avatar billede kimmys Nybegynder
06. marts 2005 - 20:01 #9
For så kommer den med en fejl

Parse error: parse error, unexpected ';' in ...../loggetind.php on line 11
Avatar billede baitianlong Nybegynder
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.
Avatar billede kimmys Nybegynder
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
Avatar billede baitianlong Nybegynder
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.
Avatar billede kimmys Nybegynder
06. marts 2005 - 21:12 #13
he he se... så ved jeg jo det.. Nej prøver lige at lukke dem! =)
Avatar billede baitianlong Nybegynder
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 :)
Avatar billede kimmys Nybegynder
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" );
?>
Avatar billede kimmys Nybegynder
06. marts 2005 - 21:29 #16
mener bare hvor skal jeg sætte
$_SESSION['loggetind'] = "ok";
ind henne?
Avatar billede baitianlong Nybegynder
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 ?
Avatar billede kimmys Nybegynder
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?
Avatar billede baitianlong Nybegynder
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 :)
Avatar billede kimmys Nybegynder
06. marts 2005 - 22:19 #20
hvad mener du med at
"at strtolower kan give "BRUGERNAVN" er et mirakel :P"
Avatar billede baitianlong Nybegynder
06. marts 2005 - 22:23 #21
at strtolower("BRUGERNAVN") er "brugernavn", rimelig åbenlyst.
Avatar billede kimmys Nybegynder
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!
Avatar billede kimmys Nybegynder
06. marts 2005 - 22:49 #23
Det virker stadig

så du får tak for den store hjælp og du får point!

=)
Avatar billede baitianlong Nybegynder
06. marts 2005 - 22:52 #24
ok, fint nok at det virkede :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester