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?

Bart, dat is hier niet de bedoeling. Het is de bedoeling dat je hier leert van je problemen. Kopieren en plakken kunnen we allemaal.

Voor een kant en klaar script zijn er voldoende bronnen beschikbaar. Succes
Is dit goed dan:
<?PHP
$user = "1";
$pass = "1";
$error = "Sorry, u hebt geen toegang!";


$name = basename($PHP_SELF);
if($_SERVER['$PHP_AUTH_USER'] == "" AND $_SERVER['$PHP_AUTH_PW'] == "" AND $_SERVER['$PHP_AUTH_USER'] != $user AND $_SERVER['$PHP_AUTH_PW'] != $pass)
{
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
echo $error;
}
elseif($_SERVER['$PHP_AUTH_USER'] == $user AND $_SERVER['$PHP_AUTH_PW'] == $pass)
{
echo "HIER KOMT DE BEVEILIGDE PAGINA ALS JE BENT INGELOGD!";
}
?>
?
Dan kan je toch nog altijd maar 1 gebruiker instellen he ??
Je kan het wel met arrays doen denk ik, maar dat kan ik niet goed
Dat maakt mij ff niet uit.
Is het script goed? En moet het zo werken?

Want bij mij werkt het iig niet :(...
sorry ben een wxeekendje weg geweest:
kan goed zijn dat het script niet werkt, zal ff mijn werkend script posten:

(heb wel een lichtjes andere database, status is in mijn database what)

<?php

//connect to db
$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 =".$_SERVER['PHP_AUTH_USER'];
$geg = mysql_query($sql);
$geg2 = mysql_query($sql);



if(isset($_SERVER['PHP_AUTH_USER'])){


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

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


}

} else {

unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
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['what']){
case "admin":
//echo "U word doorgestuurd!";
//header("Location: index.php");
//exit;
echo "Hallo ".$_SERVER['PHP_AUTH_USER'];
break;
default:
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
echo "$error";
exit;
break;

}


}

?>
bij mij werkte het voor het weekend dus normaal is alles goed!



maar wil iemand nu eens antwoorden:

in php manual staat:
header('WWW-Authenticate: Basic realm="My Realm"');
en in dit script staat
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");


waar staat die entrer voor en waar staat die realm voor?
excuses voor de dubbele post maar het script blijkt niet helemaal te werken...
(het geeft na drie keer de error message weer, ookal geef ik het juiste password in en user!
(en werkt trouwens ook niet in opera...)

volgens mij kan je het best om compatibel te zijn met alle browsers een formpje maken
en dan de post variabelen in de server php auth bla zetten:


$_SERVER['PHP_AUTH_USER'] = $_POST['pass'];
$_SERVER['PHP_AUTH_PW'] = $_POST['naam'];

ik heb helaas op dit moment gene tijd om te zien of het dan ook een hele tijd meegaat..
Even weer, het werkt niet:(
nja sorry, heb in de week ook nog eens geprobeerd maar kreeg het niet werkend...
Kan ik ook i.pv. HIER KOMT DE BEVEILIGDE PAGINA in mijn 1e post (dus met 1 user en pass) een html-code neerzetten? Of als het kan een code dat hij doorlinkt naar een page? Anders neem ik wel een ander script als dit te moeilijk wordt. (ik heb er al een liggen, alleen met dit venstertje is het wat veliger)
Maak gewo0n een normale login, veilig genoeg maar stukken simpeler ...

Reageren