PDA

Bekijk Volledige Versie : inlog form voor .htaccess



Matthijs de Z
12/12/07, 17:15
Hoi,

ik heb gisteren mod_auth_mysql geïnstalleerd, de .htaccess file aangepast en
een database gemaakt om een directoy compleet af te schermen (dus alle
files)

Nu zou ik graag willen dat gebruikers via een webformulier kunnen inloggen.
Ik had daar even een test voor gedaan (dus de code is zo lek als een mandje)

<?php
$scriptplaats = $_SERVER["PHP_SELF"];
if(strlen($_POST[username])>0 and strlen($_POST[wachtwoord])>0)
{
$_SERVER['PHP_AUTH_USER'] = $_post[username];
$_SERVER['PHP_AUTH_PW'] = $_post[wachtwoord];
header("Location: /site/tests/members");
}
else
{
?>
<form action="<?php echo" $scriptplaats";?>" method="post"><input
name="status" type="hidden" value="verstuurd">
<table border="0">
<tr>
<td valign="top">Emailadres</td>
<td colspan="5"><INPUT TYPE=TEXT NAME="username" SIZE=15 value="<?php
echo $_POST[username] ?>"></td>
<tr>
<td valign="top">wachtwoord</td>
<td colspan="5"><INPUT TYPE=TEXT NAME="wachtwoord" SIZE=15
value="<?php echo $_POST[wachtwoord] ?>"></td>
</tr>
<td colspan="5"><INPUT TYPE=SUBMIT VALUE="Verstuur"
onclick="this.disabled=true;this.form.submit();">
</td>
</tr>
</table>
</FORM>
<?php
}
?>


Alleen dat werkt dus niet, dan moet ik alsnog inloggen.
Ik heb veel gegoogled en zag erg veel berichten voorbij komen dat het ook
niet mogelijk is om met een form in te loggen bij een .htaccess beveiligde
directory. Is dat ook zo?

En is er dan een oplossing om een directory wel helemaal af te schermen en
dat te doen met een user en wachtwoord uit een database en in te kunnen
liggen via een form?

De "oplossing" waar men in fora meestal mee kwam is een php_auth_user script
te maken, maar volgens mij maak je dan alleen maar een inlog beveiliging op
die ene file. Ik moet juist de hele dir beveiligen.
Mazzel,

Matthijs

Rik Wasmus
12/12/07, 17:15
On Wed, 12 Dec 2007 13:52:45 +0100, Matthijs de Z
<MendanLdaarnaDenalslaatstZ@hotmail.com> wrote:
> Alleen dat werkt dus niet, dan moet ik alsnog inloggen.
> Ik heb veel gegoogled en zag erg veel berichten voorbij komen dat het
> ook niet mogelijk is om met een form in te loggen bij een .htaccess
> beveiligde directory. Is dat ook zo?

Inderdaad. Header authenticatie is heel wat anders dan POST/GET/COOKIE
variabelen. Wat je wel kunt doen is in je PHP script
$_SERVER['PHP_AUTH_USER'] en $_SERVER['PHP_AUTH_PW'] uitlezen. Je kunt ze
echter met geen mogelijkheid meer uitloggen als ze eenmaal een juiste
username/password combinatie hebben ingevoerd. Je kunt natuurlijk een
access denied header sturen bij een uitlog, waarbij ze alsnog gevraagd
worden om een gebruikersnaam en wachtwoord, maar even terug in de history
en ze zijn zo weer bij de informatie.

> En is er dan een oplossing om een directory wel helemaal af te schermen
> en dat te doen met een user en wachtwoord uit een database en in te
> kunnen liggen via een form?

Ja: forceer alles naar een centraal script, bijvoorbeeld met een
mod_rewrite RewriteRule, controleer daar of iemand is ingelogd, en serveer
de gevraagde content ofwel met includes() ofwel met readfile()'s. Let er
wel op dat jij dan ook verantwoordelijk bent voor de contentType headers,
en je de ogevraagde URL/pad moet controleren op geldigheid
(http://www.example.com/afgeschermd/../../.passwd bijvoorbeeld mag
natuurlijk niet lukken..). Dit script gaat het erg druk krijgen...
--
Rik Wasmus

Leihcim
13/12/07, 03:31
Matthijs de Z wrote:
> Hoi,
>
> ik heb gisteren mod_auth_mysql geïnstalleerd, de .htaccess file
> aangepast en een database gemaakt om een directoy compleet af te
> schermen (dus alle files)
>
> Nu zou ik graag willen dat gebruikers via een webformulier kunnen
> inloggen. Ik had daar even een test voor gedaan (dus de code is zo lek
> als een mandje)
>
[snip]
>
> En is er dan een oplossing om een directory wel helemaal af te schermen
> en dat te doen met een user en wachtwoord uit een database en in te
> kunnen liggen via een form?
>

wellicht met:
auto_prepend_file inlog.php

Matthijs de Z
13/12/07, 09:35
"Leihcim" <yourlove@welovespam.nl> schreef in bericht
news:47604da4$0$85786$e4fe514c@news.xs4all.nl...

>> En is er dan een oplossing om een directory wel helemaal af te schermen
>> en dat te doen met een user en wachtwoord uit een database en in te
>> kunnen liggen via een form?
>>
>
> wellicht met:
> auto_prepend_file inlog.php

klopt het dat dan wel alle php files beveiligd kunnen worden, maar
bijvoorbeeld plaatjes of andere files niet?
mazzel,

Matthijs

Leihcim
13/12/07, 12:35
Matthijs de Z wrote:
>
>
> "Leihcim" <yourlove@welovespam.nl> schreef in bericht
> news:47604da4$0$85786$e4fe514c@news.xs4all.nl...
>
>>> En is er dan een oplossing om een directory wel helemaal af te schermen
>>> en dat te doen met een user en wachtwoord uit een database en in te
>>> kunnen liggen via een form?
>>>
>>
>> wellicht met:
>> auto_prepend_file inlog.php
>
>
> klopt het dat dan wel alle php files beveiligd kunnen worden, maar
> bijvoorbeeld plaatjes of andere files niet?
> mazzel,

Volgens mij niet, dat zul je zelf in de file moeten programmeren die je
als prepend file gebruikt.

kort door de bocht:

<?
if(substr($_SERVER['REQUEST_URI'], '.php')) {
if($_SESSION['user']) ;
else {
inlog scherm.....
inloggen....
$_SESSION['user'] = $username;
}
}
?>

Matthijs de Z
13/12/07, 12:55
>> klopt het dat dan wel alle php files beveiligd kunnen worden, maar
>> bijvoorbeeld plaatjes of andere files niet?
>> mazzel,
>
> Volgens mij niet, dat zul je zelf in de file moeten programmeren die je
> als prepend file gebruikt.
>
> kort door de bocht:

[code]

bedankt, ik ga eens even verder kijken hoe dit opgelost kan worden.
mazzel,

Matthijs