22. marts 2003 - 15:08Der 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>
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.
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...
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
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....
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>
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)
"<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"; }
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":
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.