HTTP authentication met meerdere users
Voor een kant en klaar script zijn er voldoende bronnen beschikbaar. Succes
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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!";
}
?>
$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!";
}
?>
?
Je kan het wel met arrays doen denk ik, maar dat kan ik niet goed
Is het script goed? En moet het zo werken?
Want bij mij werkt het iig niet :(...
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)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?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;
}
}
?>
//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?
(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 ...