Avatar billede thomastegl Nybegynder
22. marts 2003 - 15:08 Der er 34 kommentarer og
1 løsning

Sessions igen igen

Har læst en masse spgsm. omkring sessions, men har stadig ikke rigtigt fattet det...
Ønsker at passwordbeskytte enkelte sider. Webhotel understøtter php4 og jeg har også Mysql, men vil helst undgå at benytte det. Der skal ikke angives en bruger, KUN password.

Min login side ser sådan ud:

<?php
if (isset($_GET['pwd'])) {
  session_start(); // Lad os begynde!
  $_SESSION["pwd"] = $_GET["pwd"]; // Gem 
}
?>
<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Hvad er fornavnet på denne prægtige unge mand</title>
</head>
<body>


<table border="0" align="center" width="344" height="211" bgcolor="CCCCCC">
  <tr>
    <td height="110" align="center" valign="top" width="344"><img border="0" src="loginbilleder/9899.jpg" width="156" height="106"></td>
  </tr>
  <tr>
    <td height="38" align="center" valign="top" width="344"><font size="2">Hvad er fornavnet
      på denne smukke unge kvinde?<br>
      (små bogstaver)</font></td>
  </tr>
  <tr>
  <form method="post" action="1998-1999.php">
      <td align=center valign=middle width="344" height="51">
        <p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <input type="password" name="pwd" size=25>&nbsp;&nbsp;
        <font class="fonttype=12"><input type="Submit" value="OK" style="background-color: #C0C0C0; color: #FFFFFF"></p>
        </font></td>
      </form>
      </tr>
</table>

</body>

</html>

1) Er det godt nok, eller bliver der overhovedet ikke oprettet en session???

2) Hvad skal der stå på de sider som passwordet skal give adgang til (2-3 stykker)???

3) Er der nogen grund til at anvende Mysql når der ikke er tale om flere sider???
Avatar billede fangel Nybegynder
22. marts 2003 - 15:32 #1
1) du skulle måske overveje at tjekke om koden er korrekt... ;)

if(isset($_GET['pwd']) AND $_GET['pwd'] == "mit hemmelige kodeord"){
  ...
}

2) i toppen skriver du fx
session_start();
if(!isset($_SESSION['pwd']) OR $_SESSION['pwd'] !== "mit hemmelige kodeord){
  echo "du må ikke være her!";
  exit;
}

3) mysql skulle kun være hvis der var flere brugere / koder...

Morten
Avatar billede jammerlab Nybegynder
22. marts 2003 - 15:34 #2
Er det ikke lidt usmart at bruge exit; ? Den dræber jo hele siden så :)
Avatar billede fangel Nybegynder
22. marts 2003 - 15:38 #3
talker => man må jo ikke se resten af siden vel?... ;)
Avatar billede jammerlab Nybegynder
22. marts 2003 - 15:41 #4
hvis man includer det login script så failer resten af hele siden derfor er det da en dum ide? :) if(blablalab) { echo "nææ må du ik" } else { echo "velkommen } << der er andre smarte MEGET SIMPLE løsninger hehe
Avatar billede thomastegl Nybegynder
22. marts 2003 - 15:48 #5
Kunne du evt. dele ud af dine smarte og simple løsninger TALKER. Det er jo lige præcis sådan nogle jeg er ude efter.

Er lige ved at prøve det Morten skriver...
Avatar billede jammerlab Nybegynder
22. marts 2003 - 15:57 #6
kan jeg ihvertfald :) laver lige et simpelt login script uden MySQL og med sessions... så kan du se hvad jeg mener :)
Avatar billede fangel Nybegynder
22. marts 2003 - 16:00 #7
talker => ja, men er det ikke nemere at lave en fil ved navn "auth.php", med indeholdet

---
<?php
session_start();
if(!isset($_SESSION['pwd']) OR $_SESSION['pwd'] !== "mit hemmelige kodeord){
  echo "du må ikke være her!";
  exit;
}
?>
---

og på alle sider der skal beskyttes skrive

include("auth.php");

Morten
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:04 #8
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:05 #9
dunno den metode jeg benytter mig af er bare
if($_SESSION['pwd']) { echo "hvad end nu kun en admin må se"; }
altså ingen kan se noget kun hvis man er logget ind....
Avatar billede thomastegl Nybegynder
22. marts 2003 - 16:09 #10
Okay, har nu prøvet Mortens anvisninger. Jeg får meldingen "du må ikke være her", og resten af siden vises ikke. Det er ok. Men hvad er der galt på login-siden, siden jeg ikke kan logge ind???

Koden ser nu sådan ud:

<?php
  session_start(); // Lad os begynde!
  $_SESSION["pwd"] = $_GET["pwd"]; // Gem 
if(isset($_GET['pwd']) AND $_GET['pwd'] == "nete"){
}
?>
<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Hvad er fornavnet på denne prægtige unge mand</title>
</head>
<body>


<table border="0" align="center" width="344" height="211" bgcolor="CCCCCC">
  <tr>
    <td height="110" align="center" valign="top" width="344"><img border="0" src="loginbilleder/9899.jpg" width="156" height="106"></td>
  </tr>
  <tr>
    <td height="38" align="center" valign="top" width="344"><font size="2">Hvad er fornavnet
      på denne smukke unge kvinde?<br>
      (små bogstaver)</font></td>
  </tr>
  <tr>
  <form method="post" action="1998-1999.php">
      <td align=center valign=middle width="344" height="51">
        <p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <input type="password" name="pwd" size=25>&nbsp;&nbsp;
        <font class="fonttype=12"><input type="Submit" value="OK" style="background-color: #C0C0C0; color: #FFFFFF"></p>
        </font></td>
      </form>
      </tr>
</table>

</body>

</html>
Avatar billede thomastegl Nybegynder
22. marts 2003 - 16:23 #11
Talker=>
Det ser fint ud bortset fra at jeg ikke ønsker at der skal indtastes noget brugernavn.
Ellers er jeg lidt skeptisk mht. at benytte Mysql, da jeg plejer at døje lidt med at finde rundt i skidtet ( = jeg fatter ikke en skid)
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:35 #12
scriptet er også uden mysql :) du deffinere bare bruger og pass i starten af scriptet...
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:35 #13
glemte selvf. at sige login: test pass: test hehe :D
Avatar billede thomastegl Nybegynder
22. marts 2003 - 16:46 #14
skal der absolut defineres en bruger???

Og kan jeg få dig til at poste scriptet her?
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:48 #15
altså der behøver ikke kun være en bruger nej... jeg fjerner lige bruger og så paster jeg scriptet...
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:51 #16
<? session_start(); ?>
<?

  $password1 = test;

  if($_SESSION['password']) { echo "<span class=normaltext>Du er nu logget ind</span><br>";  } else {
    echo "
      <form action='$PHP_SELF?action=tjeck' method=post>
        &nbsp; Password:</span><br>
        &nbsp; <input type=password name=password class=form><br>
        &nbsp; <input type=submit value=Login class=form></form>
      </span>
  ";
  }

    if($action=="tjeck") {
       
    if($password1==$password) {
               
                  session_start();
                    session_register(password);
                    echo "<meta http-equiv=refresh content=0;URL='$PHP_SELF'>";
                     
              } else { echo "wr000ng"; }
    }
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:52 #17
hov... du skal ikke tage dig af der står class=form og <span class=normaltext> det er til mit CSS... erhm... fjerne lige det unødvendige hehe
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:52 #18
<? session_start(); ?>
<?

  $password1 = test;

  if($_SESSION['password']) { echo "Du er nu logget ind";  } else {
    echo "
      <form action='$PHP_SELF?action=tjeck' method=post>
        Password:</span><br>
        <input type=password name=password><br>
        <input type=submit value=Login></form>
      </span>
  ";
  }

    if($action=="tjeck") {
       
    if($password1==$password) {
               
                  session_start();
                    session_register(password);
                    echo "<meta http-equiv=refresh content=0;URL='$PHP_SELF'>";
                     
              } else { echo "wr000ng"; }
    }
Avatar billede jammerlab Nybegynder
22. marts 2003 - 16:58 #19
"<meta http-equiv=refresh content=0;URL='$PHP_SELF'>"; << den kan du så ændre så den skifter hen på en eller anden side... hvor du self. har <? session_start(); ?> i toppen af alle dine sider... Du kan så gøre noget som det her i din menu

if($_SESSION['password']) { echo "Det her vil man kun se når ma er logget ind";  }
Avatar billede sukos Juniormester
22. marts 2003 - 16:58 #20
Her er en anden:

<?php
session_start();
if(isset($_POST["password"]) && $_POST["password"] == "test") {
$_SESSION["okpass"] = 1;
}
?>
<html><head></head>
<body>
<?php
if (!isset($_SESSION["okpass"])) {
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="password" name="password">
<input type="submit" value="Log ind">
</form>
<?php
}else{
?>
Hejsa! Du er nu logget ind!
<?php
}
?>
</body></html>

Du kan jo bruge en include til at holde styr på om man er logget ind, og du skal nok også lave en "logud" halløj
Avatar billede jammerlab Nybegynder
22. marts 2003 - 17:03 #21
if($action==logout) {
       
        session_destroy();
        echo "<meta http-equiv=refresh content=0;URL='index.php'>";
       
  }

-> et stk fint logud hehe :)
Avatar billede sukos Juniormester
22. marts 2003 - 17:05 #22
næh, du:

<?php
session_start();
$_SESSION = array();
session_destroy();
header("Location:/");
exit;
?>
Avatar billede thomastegl Nybegynder
22. marts 2003 - 17:06 #23
ok. Kigger lige på sagerne. Have patience.
Avatar billede jammerlab Nybegynder
22. marts 2003 - 17:19 #24
sukos -> Say wh000t :D min virker da fint :) den dræber bare den session der er... din måde er da sort? eller er det bare mig?
Avatar billede sukos Juniormester
22. marts 2003 - 17:24 #25
m.h.t. til sessions, skal man være MEGET opmærksom på om register_globals er On eller Off.
Har (vist nok) mest betydning hvis PHP versionen er mindre end 4.1.0
Prøvede at lave et site, med $HTTP_SESSION_VARS (virker hvis register_globals = Off) hvor register_globals var On og lortet ville sgutte som jeg ønskede!
Men fungerede fint på testmaskinen, PHP ver. 4.2.0 register_globals = Off

blev nødt til at definere hver session "helt fra bunden":

$test = $HTTP_POST_VARS["test"];
session_register("test");

anyway, måden at dræbe en session på:

http://dk.php.net/manual/en/function.session-destroy.php
Avatar billede thomastegl Nybegynder
22. marts 2003 - 17:33 #26
Har accepteret talkers svar. Tusind tak for hjælpen!!! :)

Men ville egentlig også gerne give sukos lidt for ulejligheden... hvordan griber man det an???
Avatar billede sukos Juniormester
22. marts 2003 - 17:37 #27
Du griber bare ud i luften du! :O)
Avatar billede thomastegl Nybegynder
22. marts 2003 - 17:40 #28
Hov. Var lidt hurtig.

Hvordan pokker får jeg talkers script banket ind i min fine grafiske login som jeg er så glad for????
Avatar billede thomastegl Nybegynder
22. marts 2003 - 17:41 #29
Sukos =>

ØHHH hva'
Avatar billede jammerlab Nybegynder
22. marts 2003 - 18:00 #30
Thomastegl -> let:

Der hvor du vil bruge scriptet skriver du bare <?php require 'login.php';?>

den skal så selvf. hedde login.php ;)
Avatar billede thomastegl Nybegynder
22. marts 2003 - 19:30 #31
OK, jeg tror jeg er tæt på nu, men der er stadig noget galt. Kan du kigge på dette??

login-siden:

<? session_start(); ?>
<?

  $password1 = nete;

  if($_SESSION['password']) { echo "Du er nu logget ind";  } else {
require 'login19981999.php';
  }

    if($action=="tjeck") {
       
    if($password1==$password) {
               
                  session_start();
                    session_register(password);
                    echo "<meta http-equiv=refresh content=0;URL='1998-1999.php'>";
                     
              } else { echo "wr000ng"; }
    }
?>

hvor login19981999.php ser sådan ud:

<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Hvad er fornavnet på denne prægtige unge mand</title>
</head>
<body>


<table border="0" align="center" width="344" height="211" bgcolor="CCCCCC">
  <tr>
    <td height="110" align="center" valign="top" width="344"><img border="0" src="loginbilleder/9899.jpg" width="156" height="106"></td>
  </tr>
  <tr>
    <td height="38" align="center" valign="top" width="344"><font size="2">Hvad er fornavnet
      på denne smukke unge kvinde?<br>
      (små bogstaver)</font></td>
  </tr>
  <tr>
  <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
      <td align=center valign=middle width="344" height="51">
        <p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <input type="password" name="password" size=25>&nbsp;&nbsp;
        <font class="fonttype=12"><input type="Submit" value="OK" style="background-color: #C0C0C0; color: #FFFFFF"></p>
        </font></td>
      </form>
      </tr>
</table>

</body>

</html>
Avatar billede thomastegl Nybegynder
22. marts 2003 - 19:39 #32
hov undskyld.

login19981999.php ser sådan ud:

<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Hvad er fornavnet på denne prægtige unge mand</title>
</head>
<body>


<table border="0" align="center" width="344" height="211" bgcolor="CCCCCC">
  <tr>
    <td height="110" align="center" valign="top" width="344"><img border="0" src="loginbilleder/9899.jpg" width="156" height="106"></td>
  </tr>
  <tr>
    <td height="38" align="center" valign="top" width="344"><font size="2">Hvad er fornavnet
      på denne smukke unge kvinde?<br>
      (små bogstaver)</font></td>
  </tr>
  <tr>
  <form action='$PHP_SELF?action=tjeck' method="post">
      <td align=center valign=middle width="344" height="51">
        <p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <input type="password" name="password" size=25>&nbsp;&nbsp;
        <font class="fonttype=12"><input type="Submit" value="OK" style="background-color: #C0C0C0; color: #FFFFFF"></p>
        </font></td>
      </form>
      </tr>
</table>

</body>

</html>
Avatar billede jammerlab Nybegynder
22. marts 2003 - 19:57 #33
<form action='$PHP_SELF?action=tjeck' method="post"> den er gal du kan ikke bare bruge en PHP global command uden at starte PHPen :)

<?
echo "<form action='$PHP_SELF?action=tjeck' method=post>";
?>
Avatar billede thomastegl Nybegynder
22. marts 2003 - 20:08 #34
hjælper ikke, nu får jeg en fejlmelding:

Parse error: parse error, expecting `','' or `';'' in login-siden on line 10

ØV ØV ØV
Avatar billede thomastegl Nybegynder
22. marts 2003 - 20:13 #35
Undskyld.
Trætheden begynder vist at melde sig.

Alt virker som det skal nu. :) :) :)

Tusind tak, og fortsat god weekend.
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