Hoe kan ik met dit script:


<?PHP
$user = "adminuser";
$pass = "adminpass";
$error = "Sorry, u hebt geen toegang!";


$name = basename ($PHP_SELF);
if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $user) && ( $PHP_AUTH_PW == "$pass" )) ) {
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
echo "$error";
exit;
}
echo "HIER KOMT DE BEVEILIGDE PAGINA ALS JE BENT INGELOGD!"

?>

meerdere users laten aanmeleden? Dus user 1 met adminuser & adminpass als logingegevens gaat naar admin.html of als het kan een sessie, anders kunnen ze gewoon http://www.nl/admin.html intypen, dan heeft het hele gebeuren geen zin. Dan user2 met user1 en pass1 als gegevens gaat naar user2.html of .php?sessionid=23t42g enz.

Kan dit?

je haalt de gegevens uit een tabel en dan pak je de nummers van hun id
bijvorbeeld deze tabel:

(users noem ik het ff)
id | naam | pass | status

1 | ik | mijnpass |admin
2 | jij | jouwpass |user

dan php query:

<?php
$user = "user";
$password = "pass";
$db = "database";

$link = mysql_connect("localhost", $user, $password);
if (!$link) die ("Er zijn problemen met de server, probeer later opnieuw");
mysql_select_db($db, $link) or die ("Er zijn problemen met de server, probeer later opnieuw");



$error = "Sorry, u hebt geen toegang!";

// gegevens uit db
$sql = "SELECT * FROM users WHERE naam =".$PHP_AUTH_USER;
$geg = mysql_query($sql);
$geg2 = mysql_query($sql);


if(isset($PHP_AUTH_USER)){


// juiste rij uitschrijven
while ($rij = mysql_fetch_array($geg)){

if ( ! (($PHP_AUTH_USER == $row['naam']) && ( $PHP_AUTH_PW == "$row['pass']" )) ) {
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
echo "$error";
exit;
}


}

} else {

header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
echo "$error";
exit;

}


// hier komt dus de pagina waar naar waar je de user doorstuurt...

while ($rij = mysql_fetch_array($geg2)){


switch ($row['status']){
case "admin":
header("Location: admin.php");
exit;
break;
case "user":
header("Location: user.php?user=".$row['id']);
exit;
break;
// eventuele andere mogelijkheden

}


}

?>

ik heb dit niet uitgetest (vlug ff geschreven) dus het kan nog fouten bevatten maar normaal zou het moeten werken



dan zet je op die paginas een lus om te zien of ze de autentiekatie al hebben gedaan, zoniet stuur je ze door naar deze inlog pagina...





edit:

header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
wat doet dat juist want een inlogsysteem met auth zie ik ook wel zitten...
moet je voor die regel een speciaal bestand op je server zetten (ik weet wel dat die auth toegelaten is dus dat zal het probleem niet zijn denk ik)
Dus ik maak in MySQL een db aan met USERS, en ik daai het op mijn eigen servertje.
Ja... Dat is een mogelijkheid.. :D

Elwin
is er dan ook nog een andere
.htpass kan je gebruiken maar als je dan een nieuwe gebruiker wilt maken moet je het bestand herchrijven en dit vergt meer moeite dan vlug in een db zetten


aan andor:
jep

id is primary key en auto_increment
de rest is tekst...


--> een vraagje:

header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
wat doet dat juist want een inlogsysteem met auth zie ik ook wel zitten...
moet je voor die regel een speciaal bestand op je server zetten (ik weet wel dat die auth toegelaten is dus dat zal het probleem niet zijn denk ik)



edit:

heb ff een foutje gevonden: de laatste switch moet dit zijn:
<?php
switch ($row['status']){
case "admin":
header("Location: admin.php");
break;
case "user":
header("Location: user.php?user=".$row['id']);
break;
// eventuele andere mogelijkheden

}
?>
Hoe maak ik die db in phpMyAdmin?
CREATE TABLE users (
id int(8) NOT NULL auto_increment,
naam varchar(50) NOT NULL default '',
pass varchar(50) NOT NULL default '',
status varchar(20) NOT NULL default 'user',
PRIMARY KEY (id)
) TYPE=MyISAM;

er staan nog wel wat fouten in het script maar die ga ik er direct eens uithalen :P
ff offtopic:

Ik wil ook zoiets doen (met die popup met inloggen enzo) maar bij mij werkt het gewoon niet :S!!

Ik krijg wel die popup, dan vul ik 1,1 in (had ik zo ingesteld) maar dan krijg ik hem gewoon opnieuw :S...

Is dit een instellingen bij php of apache?
Waarschijnlijk een foutje in de code
Zit hier een fout in:

<?PHP
$user = "1";
$pass = "1";
$error = "Sorry, u hebt geen toegang!";


$name = basename ($PHP_SELF);
if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $user) && ( $PHP_AUTH_PW == $pass )) ) {
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
echo "$error";
exit;
}
echo "HIER KOMT DE BEVEILIGDE PAGINA ALS JE BENT INGELOGD!"

?>

??
Jah, het ziet er iig niet netjes uit.
Zal het dalijk (als niemand anders het doet) even herschrijven maar k moet nu weg.

Reageren