Avatar billede morteeart Nybegynder
20. august 2004 - 10:17 Der er 7 kommentarer og
1 løsning

Loginsystem med .htaccess virker ikke

Hey,

Jeg har lavet et loginsystem med htaccess, og den beskytter da også den valgte mappe. (Dog virker login ikke :S)

Men når jeg så loader en side med ?side=admim/enside.php
så bliver beskyttelsen omgået..

Og det undret jeg mig meget...

Systemet er lavet ud fra en guide på webcafe.dk
Avatar billede dennismp Nybegynder
20. august 2004 - 10:31 #1
Det lyder som om at der er noget galt med din opsætning af din .htaccess fil. Men prøv evt i -

http://www.eksperten.dk/spm/Internet/Webservere/Apache/

jeg tvivler på at det er php der er skyld i det :)
Avatar billede morteeart Nybegynder
20. august 2004 - 10:40 #2
jeg snakkede lige med nogle på #php , og fik at vide at php include() ikke påvirkes af htaccess, og derfor godt kan inkludere beskyttede filer.
Avatar billede dennismp Nybegynder
20. august 2004 - 14:01 #3
ja, fordi .htaccess kun virker igennem apache (da apache respekterer og håndhæver reglerne).. Og når du bruger include("filnavn") så bruger du filsystemet direkte (sådan da).

Men jeg tror ikke jeg har forstået spørgsmålet. JEg troede dat hvis du brugte www.enurl.dk/beskyttetdir/?side=admin/enside.php så kom den ikke og tjekkede brugernavn/kodeord...
Avatar billede dennismp Nybegynder
20. august 2004 - 14:01 #4
men.. er spørgsmålet så løst? :)
Avatar billede morteeart Nybegynder
23. august 2004 - 10:10 #5
tjoo. Men er det så virkeligt ikke muligt lave lave beskyttelse med htaccess på den måde så ?
Avatar billede dennismp Nybegynder
23. august 2004 - 10:28 #6
Næh. Men du kan evt gøre det på denne måde (bare til inspiration, har ikke testet det)..

index.php:
session_start();
define('NOTDIRECT', 1 );
$side = $_GET['side'];

if( strpos($side,'admin/') === 0 && !isset($_SESSION['authd']) ) {
  header("Location: login.php");
  exit;
}

.(hvad der nu ellers laves af din index.php).

admin/enside.php (skal gøres i alle filerne i admin/*.php)
if(! defined('NOTDIRECT') )
  die("Denne fil må ikke kaldes direkte");

resten af koden i enside.php

login.php:
<?php
session_start();
$message = 'Tast dit brugernavn/kodeord';
if( count($_POST) > 0 ) {
  if( $_POST['username'] == 'admin' && $_POST['password'] == 'nimda' ) {
    $_SESSION['authd'] = $_POST['username'];
    header("Location: index.php");
    exit;
  }
  else {
    $message = 'Ugyldigt brugernavn/kodeord';
  }
}
?>
<center><b><?=$message?></b></center>
<form method="post" action="login.php">
Username: <input type="text" name="username"><br>
Password: <input type="text" name="password"><br>
<input type="submit">
</form>
Avatar billede morteeart Nybegynder
23. august 2004 - 13:31 #7
okay, jeg vil kigge på det.
Men læg et svar, så for du point :-) som tak for forlaget.
Avatar billede dennismp Nybegynder
23. august 2004 - 13:42 #8
Ok - men du kan bare forsætte her hvis du har problemer (og vil forsøge med mit forslag.
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