[php] HTTP authenticatie *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb gezocht en bij werkende gevonden. Rest nog een probleem:
Ik krijg namelijk als ik een username invoer het AUTH.-scherm weer terug tot drie keer toe en dan stopt hij (zoals altijd na 3 keer).

Het probleem lijkt erop dat ik geen variable "$PHP_AUTH_USER" & "$PHP_AUTH_PW" krijg.

Apache 2
PHP 4.3.0
MySQL 4

Ik heb nu het volgende script:
Het "query($sql)" stukje werkt zeker weten goed, getest. en krijg de juiste waarde terug.

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
<?php 
include "functions.php";
// Check to see if $PHP_AUTH_USER already contains info
if (!isset($PHP_AUTH_USER)) 
{
    // If empty, send header causing dialog box to appear
    header('WWW-Authenticate: Basic realm="My Private Stuff"');
    header('HTTP/1.0 401 Unauthorized');
    exit;
} 
elseif (isset($PHP_AUTH_USER)) 
{
    $sql = "SELECT * FROM user WHERE username='$PHP_AUTH_USER' AND passwd='$PHP_AUTH_PW'";

    // Execute the query and put results in $result
    $result = query($sql);

    // Get number of rows in $result. 0 if invalid, 1 if valid.
    $num = mysql_numrows($result);

    if ($num != "0") 
    {
        echo "<P>You're authorized!</p>";   
        exit;
    } 
    else 
    {   
        header('WWW-Authenticate: Basic realm="My Private Stuff"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Authorization Required.';
        exit;
    }
} 
?>

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

titel fix

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Eastern
  • Registratie: Augustus 2000
  • Laatst online: 17-09 19:13
Dat komt waarschijnlijk omdat je geen register_globals = On aan hebt staan in PHP.INI

Acties:
  • 0 Henk 'm!

  • cenix
  • Registratie: September 2001
  • Laatst online: 16-09 20:24
Het probleem lijkt erop dat ik geen variable "$PHP_AUTH_USER" & "$PHP_AUTH_PW" krijg.
de variabelen $PHP_AUTH_USER kun je niet meer gewoon aanroepen, gebruik $_POST['PHP_AUTH_USER']

zie php manual voor globals

Acties:
  • 0 Henk 'm!

Verwijderd

werkt dit script zo (of zou het zo moeten werken) dat het bestand in een directory staat en dat dan eenmalig om een username en gebruikersnaam wordt gevraagd voor alle op te vragen pagina's in die directory?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Eastern schreef op 03 februari 2003 @ 14:24:
Dat komt waarschijnlijk omdat je geen register_globals = On aan hebt staan in PHP.INI
register_globals = off

Acties:
  • 0 Henk 'm!

Verwijderd

Dan moet je de variabele PHP_AUTH_USER dus alsvolgt aanspreken:
$_SERVER['PHP_AUTH_USER']
Voor PHP_AUTH_PASSWD geldt het zelfde

Acties:
  • 0 Henk 'm!

  • Millennium
  • Registratie: Augustus 2000
  • Laatst online: 14-09 18:02

Millennium

Bug free !!!

cenix schreef op 03 February 2003 @ 14:24:
[...]


de variabelen $PHP_AUTH_USER kun je niet meer gewoon aanroepen, gebruik $_POST['PHP_AUTH_USER']

zie php manual voor globals
Dan is het altijd nog $_SERVER['HTTP_AUTH_USER']

TS: Heb je PHP wel als apachemod geinstalleerd( of roep je php.exe aan)

Rampen bak 2004


Acties:
  • 0 Henk 'm!

  • Eastern
  • Registratie: Augustus 2000
  • Laatst online: 17-09 19:13
Klopt ja, het moet dus ON zijn voor de duidelijkheid.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
if (isset($_POST['PHP_AUTH_USER']))
{
$PHP_AUTH_USER = $_POST['PHP_AUTH_USER'];
$PHP_AUTH_PW = $_POST['PHP_AUTH_PW'];
}

en dan de rest erachteraan

NOPE werkt ook niet

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Eastern schreef op 03 February 2003 @ 14:31:
[...]


Klopt ja, het moet dus ON zijn voor de duidelijkheid.
Op ON gezet maar werkt ook niet

Acties:
  • 0 Henk 'm!

  • Millennium
  • Registratie: Augustus 2000
  • Laatst online: 14-09 18:02

Millennium

Bug free !!!

Eastern schreef op 03 February 2003 @ 14:31:
[...]


Klopt ja, het moet dus ON zijn voor de duidelijkheid.
of gewoon leren omgaan met de veiligere methodes (Globals OFF). Met Globals on heb je geen onderscheid meer in script. POST SESSION en GET kunnen allemaal dezelfde global zijn (verder vind ik het gebruik van POST, GET, SERVER, REQUEST etc duidelijker)

Rampen bak 2004


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 03 February 2003 @ 14:31:
Dan moet je de variabele PHP_AUTH_USER dus alsvolgt aanspreken:
$_SERVER['PHP_AUTH_USER']
Voor PHP_AUTH_PASSWD geldt het zelfde
Nope
Met "$_SERVER...... werkt het ook niet.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Eastern schreef op 03 February 2003 @ 14:31:
[...]


Klopt ja, het moet dus ON zijn voor de duidelijkheid.

Mwah, niks moet. Liever niet zelfs. Het is niet voor niks default op off gezet.

@TS : Draait php als cgi-module? In dat geval is het namelijk niet mogenlijk om gebruik te maken van auth op deze manier.

[ Voor 15% gewijzigd door Janoz op 03-02-2003 14:37 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op 03 February 2003 @ 14:36:

[...]

Mwah, niks moet. Liever niet zelfs. Het is niet voor niks default op off gezet.

@TS : Draait php als cgi-module? In dat geval is het namelijk niet mogenlijk om gebruik te maken van auth op deze manier.
8)7 .... hoe weet ik of hij als cgi-module draait???

[ Voor 8% gewijzigd door Verwijderd op 03-02-2003 14:38 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:22
Rodekaart: zou je ten eerste nauwkeuriger willen vermelden wat er "niet werkt" (zoals heel duidelijk in de FAQ/QuickStart staat aangegeven), want hier kunnen we weinig mee. Verder, als iemand weet hoe je PHP hebt draaien (als webserver module, CGI applicatie of fast-CGI module), dan zou jij dat moeten zijn. Het is immers jouw webserver! Als jij het niet weet, wie zou het dan wel moeten weten?

Als je bedoelt dat je niet weet hoe je dat uit moet zoeken: staat er een LoadModule directive in je Apache configuratie, om de PHP module mee te laden? Zo ja, dan draai je PHP als webservermodule en is HTTP-authenticatie vanuit PHP mogelijk.

Dit is trouwens iets wat je zelf uit had mogen zoeken; simpelweg "weet ik veel" antwoorden geeft geen pas. Je mag dan eerst wel eens goed de documentatie van Apache en PHP doornemen. Jij wilt toch een webserver met PHP draaien? Dan mag je ook wel de moeite nemen om je te verdiepen in hoe je die configureert en administreert.

[ Voor 47% gewijzigd door Soultaker op 03-02-2003 14:52 ]

Pagina: 1