HTTP authentication met meerdere users

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

25/06/2004 11:47:00
Quote Anchor link
Hoe kan ik met dit script:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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?
 
PHP hulp

PHP hulp

26/11/2024 19:37:11
 
De VeeWee

de VeeWee

25/06/2004 12:08:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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)
Gewijzigd op 25/06/2004 13:37:00 door de VeeWee
 

25/06/2004 12:38:00
Quote Anchor link
Dus ik maak in MySQL een db aan met USERS, en ik daai het op mijn eigen servertje.
 
Elwin - Fratsloos

Elwin - Fratsloos

25/06/2004 12:42:00
Quote Anchor link
Ja... Dat is een mogelijkheid.. :D

Elwin
 
De VeeWee

de VeeWee

25/06/2004 13:05:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
switch ($row['status']){
    case
"admin":
        header("Location: admin.php");
    break;
    case
"user":
        header("Location: user.php?user=".$row['id']);
    break;
    // eventuele andere mogelijkheden

}
?>
Gewijzigd op 25/06/2004 13:10:00 door de VeeWee
 

25/06/2004 13:30:00
Quote Anchor link
Hoe maak ik die db in phpMyAdmin?
 
De VeeWee

de VeeWee

25/06/2004 13:34:00
Quote Anchor link
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
Gewijzigd op 25/06/2004 13:38:00 door de VeeWee
 
Bart Waarom verplicht

Bart Waarom verplicht

25/06/2004 14:28:00
Quote Anchor link
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?
 
Mitch X

Mitch X

25/06/2004 14:32:00
Quote Anchor link
Waarschijnlijk een foutje in de code Afbeelding
 
Bart Waarom verplicht

Bart Waarom verplicht

25/06/2004 14:33:00
Quote Anchor link
Zit hier een fout in:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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!"  

?>


??
 
Mitch X

Mitch X

25/06/2004 15:01:00
Quote Anchor link
Jah, het ziet er iig niet netjes uit.
Zal het dalijk (als niemand anders het doet) even herschrijven maar k moet nu weg.
 
De VeeWee

de VeeWee

25/06/2004 18:00:00
Quote Anchor link
echo "HIER KOMT DE BEVEILIGDE PAGINA ALS JE BENT INGELOGD!"

moet

echo "HIER KOMT DE BEVEILIGDE PAGINA ALS JE BENT INGELOGD!";

worden
en waarom staat die basename daar, die variabele word niet gebruikt...
 
Mitch X

Mitch X

25/06/2004 18:14:00
Quote Anchor link
Deze regel is fout:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $user) && ( $PHP_AUTH_PW == $pass )) )
?>


Je maakt er een rotzooi van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
if(!isset($PHP_AUTH_USER) || (!$PHP_AUTH_USER == $user && $PHP_AUTH_PW == $pass))
?>

Dat zijn genoeg haakjes.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
echo "$error";
# moet worden
echo($error);
?>


En die ; die VeeWee al aangaf natuurlijk.
 
De VeeWee

de VeeWee

25/06/2004 18:24:00
Quote Anchor link
je kan ook gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $error;
?>


zonder die haakjes dus...
en nog iets wat eigenlijk fout is
--> werk met $_SERVER variabelen



dit word dan


$_SERVER['$PHP_AUTH_USER']
$_SERVER['$PHP_AUTH_PW']


die haakjes is meer javascript style... ik raad je aan van in php ook php codes te gebruiken :p

maar wil iemand mij nu eens een antwoor dgeven op de vorige vraag die ik op deze topic gesteld heb en waarom ze :

entrer

gebruiken --> in de php manual stond er iets anders maar ik begrijp er niet veel van ...
 
Mitch X

Mitch X

25/06/2004 19:50:00
Quote Anchor link
Quote:
die haakjes is meer javascript style... ik raad je aan van in php ook php codes te gebruiken :p

Dat zie je helemaal verkeerd! echo() is, net zoals print(), een functie die met haakjes aangeroepen dient te worden omdat je in die haakjes het argument beho0rt te plaatsen.
 
Mitch X

Mitch X

25/06/2004 19:53:00
Quote Anchor link
Tsja zonder edit wordt het maar weer een extra post:
Je kunt dit bericht niet wijzigen omdat het gelockt is. Vragen hierover kunnen gesteld worden in dit forum.

Als toevoeging : alle functies dienen met () aangeroepen te worden, of ze nou een argument hebben of niet.
 

25/06/2004 23:57:00
Quote Anchor link
Als ik het script maak en de database heb gemaakt, krijg ik dit in IE:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in G:\Abyss Web Server\htdocs\02.php on line 26
 

25/06/2004 23:59:00
Quote Anchor link
dit is dan line 26:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
if ( ! (($PHP_AUTH_USER == $row['naam']) && ( $PHP_AUTH_PW == "$row['pass']" )) ) {
?>
 

26/06/2004 00:03:00
Quote Anchor link
nu heb ik dan ff dit veranderd in line 26:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
if (  ! (($PHP_AUTH_USER == $row['naam']) && ($PHP_AUTH_PW == $row['pass'])) ) {
?>


maar dan komt er in IE te staan:

Notice: Undefined variable: PHP_AUTH_USER in G:\Abyss Web Server\htdocs\02.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at G:\Abyss Web Server\htdocs\02.php:15) in G:\Abyss Web Server\htdocs\02.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at G:\Abyss Web Server\htdocs\02.php:15) in G:\Abyss Web Server\htdocs\02.php on line 39
Sorry, u hebt geen toegang!

dusssss......
 

26/06/2004 00:06:00
Quote Anchor link
Line 15 heb ik veranderd van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$sql
= "SELECT * FROM users WHERE naam =".$PHP_AUTH_USER;
?>

naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$sql
= SELECT * FROM users WHERE naam =".$PHP_AUTH_USER;
?>


Maar dan heb ik dit:
Parse error: parse error, unexpected T_STRING in G:\Abyss Web Server\htdocs\02.php on line 15
 
Bart Waarom verplicht

Bart Waarom verplicht

26/06/2004 22:54:00
Quote Anchor link
Kan je niet gewoon een goed werkend script geven?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.