ken8 Skrevet 4. april 2004 Del Skrevet 4. april 2004 Noen som vet hvordan jeg kan få passordbeskyttet deler av siden min? Nå bruker jeg et include script der innholdet blir lagt inn i index.php. Før pleide jeg å include footer og header, og da brukte jeg htaccess, som jeg syntes fungerte bra. Men siden jeg har gjort om på hvordan siden vises, så spør den ikke lenger om bruker/pass når jeg includer admin.php fra mappa admin som er beskyttet med htaccess. Noen som vet om et lite script som gjør samme nytten som htaccess? Lenke til kommentar
Gilbert Skrevet 4. april 2004 Del Skrevet 4. april 2004 er det innhold eller filer du vil beskytte? Lenke til kommentar
ken8 Skrevet 4. april 2004 Forfatter Del Skrevet 4. april 2004 vil beskytte innholdet. På admin.php som includes i index.php, så skal jeg ha mulighet til å legge til nyheter, legge til ny poll, bruke phpMyAdmin osv... Lenke til kommentar
Gilbert Skrevet 4. april 2004 Del Skrevet 4. april 2004 aha... skjønner. du vil ha et administrasjonspanel som er passordbeskyttet, men uten hjelp fra .htaccess? Det burde være en smal sak igrunn, selve innloggingsprosessen kan gjøres enkel: login.php <?php if ($_GET['error'] == "true") { echo "<font color=\"red\">Feil brukernavn eller passord</font><br>\n"; } ?><form action="login_transfer.php" method="post"> <input type="text" name="brukernavn"> <input type="password" name="passord"><br> <input type="submit" value=" Logg inn "><br> login_transfer.php <?php $brukernavn = $_POST['brukernavn']; $passord = $_POST['passord']; if ($passord == "DITT PASSORD" && $brukernavn == "DITT BRUKERNAVN") { Header ("Location: http://www.dittdomene.no/admin.php"); } else { Header ("Location: http://www.dittdomene.no/login.php?error=true"); } ?> Dette er en enkel måte å gjøre det på. Du bør legge til session registrering også, slik at admin også blir beskyttet. Eksempelet mitt gjør kun innloggingen, og kan godt gjøres tryggere. Poenget er at det skal være greit å se hvordan det er bygget opp. Bare spør igjen når du støter på utfordringer Lenke til kommentar
???????? Skrevet 5. april 2004 Del Skrevet 5. april 2004 Det eksempelet er for lett å hacke, du kan ikke beskytte siden med error=true i adresse linjen! Eksempelet mitt gjør kun innloggingen, og kan godt gjøres tryggere. Poenget er at det skal være greit å se hvordan det er bygget opp. Søk på google.com så finner du mange tutorials. Logg inn scripts er også diskuterte flere ganger i dette forumet. Lenke til kommentar
Gilbert Skrevet 5. april 2004 Del Skrevet 5. april 2004 nei, men uansett hva du har i adresselinjen vil den alltid gå tilbake til login.php så lenge du har feil passord eller brukernavn. Derimot, hvis man har rett passord og brukernavn, havner du på admin.php. Som jeg også nevnte, dette var kun eksempel på innlogging, sikkerheten rundt kontrollpanel-sidene er en annen greie.... Lenke til kommentar
Nervetattoo Skrevet 5. april 2004 Del Skrevet 5. april 2004 Vil nok heller anbefale å bruke sessions i stedet for get variabler. if (//brukernavn/passord sjekk ok:) { $_SESSION['authed'] = true; $_SESSION['user'] = $_POST['username']; header("Location: admin.php"); } else { $_SESSION['authed'] = false; header("Location: not_logged_in.php"); } Er bare å starte sessions på hver side og sjekke om auth er ok, og om et brukernavn er satt. Burde være sikkert nok for personlige sider. Lenke til kommentar
ken8 Skrevet 5. april 2004 Forfatter Del Skrevet 5. april 2004 Jeg har tittet litt på sessions, men problemet mitt er vel at jeg includer innholdet inn i index.php. Får jeg da tatt en sjekk før jeg includer admin.php som kun innholder innholdet, dvs ikke noen html tager. Jeg trodde nemlig at sessions måtte ligge før all html koden? Må jeg gå tilbake til: inlucde("header.php"); **innholdet...** include("footer.php"); for at dette skal funke best mulig? Jeg begynnte nemlig å bli glad i at jeg slapp på splitte index fila hver gang jeg hadde gjort endringer. Lenke til kommentar
???????? Skrevet 5. april 2004 Del Skrevet 5. april 2004 Start med sessionen, dersom den er ok så setter du en varaibel til "ok". Når du da kommer til der du skal include admin siden, gjør du dette dersom variabelen er ok. Lenke til kommentar
ken8 Skrevet 5. april 2004 Forfatter Del Skrevet 5. april 2004 Jeg bruker dette include scriptet, fant det på siden til en av brukerne her: <?php $pagedir = "./inc"; $tutdir = "./admin"; $mainpage = "./inc/news.php"; $fileext = ".php"; $page = $_GET['page']; $admin = $_GET['admin']; if (isset($page)) { $page = stripslashes(strip_tags($page)); $forbidden1 = ereg("\.\./", $page); $forbidden2 = ereg("/", $page); $includepath= $pagedir . "/" . $page . $fileext; if ($forbidden1 || $forbidden2) { echo "<h2>Error</h2>"; echo "<p>Could not include page. Only local files may be included</p>"; } else { if (@fopen("$includepath", "r")) { include ("$includepath"); } else { if (!(@fopen("$includepath", "r"))) { echo "<h2>Server Error 404</h2>"; echo "<p>Could not find the requested page</p>"; } } } } if (isset($admin)) { $tutorial = stripslashes(strip_tags($admin)); $forbidden1 = ereg("\.\./", $admin); $forbidden2 = ereg("/", $admin); $includepath= $tutdir . "/" . $admin . $fileext; if ($forbidden1 || $forbidden2) { echo "<h2>Error</h2>"; echo "<p>Could not include page. Only local files may be included</p>"; } else { if (@fopen("$includepath", "r")) { include ("$includepath"); } else { if (!(@fopen("$includepath", "r"))) { echo "<h2>Server Error 404</h2>"; echo "<p>Could not find the requested tutorial</p>"; } } } } elseif (!(isset($page) || isset($admin))) { include ("$mainpage"); } ?> Så lager jeg et lite logg-in vindu på index.php og hvis session=true, så skal det være lov til å include admin.php. Har jeg forstått riktig da? Hele opplegget hadde kanskje blitt lettere hvis jeg hadde included header/footer i steden? Men som sagt så liker jeg at jeg nå bare trenger å forholde meg til 1 fil. Takker for alle svar. Lenke til kommentar
Nervetattoo Skrevet 5. april 2004 Del Skrevet 5. april 2004 Ok. Den lille kode biten jeg postet lenger opp er egentlig alt du trenger for å sjekke om brukeren er ok. For å svare på spørsmålet ditt, sessions må startes først i skriptet ja. Dvs, session_start(); må kjøres med en gang, det setter du da inn før du inkluderer noe som header. session_start er bare for å starte en session. Så snart du har startet en session vil du automatisk ha tilgang til tidligere satte $_SESSION[] variabler. Disse variablene, om du har startet session, fungerer internt i skriptet akkurat som vanlige variabler. Så du kan manipulere dem som du vil, dvs sjekke om de "matcher" det du måtte ønsker for å autentisere brukeren. Om du i login skriptet ditt setter en slags "auth" session variable til verdien ok f.eks. Så kan du nå denne variablen så lenge brukeren ikke lukker nettleser vinduet sitt, i alle dine skript som brukeren kjører direkte eller indirekte så lenge du starter sessions i dem. Om du skjønte det. Om du skjønner det så vil du nok innse på hvordan måte du kan bruke session til mye fornuftige ting. De eneste som kan tukle med session variablene dine(som lagres lokalt på serveren under "session.path") er de som måtte ha tilgang til serveren. Ingen bruker kan skrive inn eller sende deg session variabler. Kanskje ikke verdens beste forklaring, ble litt vell skribleri over posten, men håper det hjelper Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå