Gå til innhold

passordbeskytte sider


Anbefalte innlegg

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
Videoannonse
Annonse

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 :thumbup:

Lenke til kommentar

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

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

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

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...