Avatar billede thingholm.dk Nybegynder
01. juni 2003 - 21:23 Der er 11 kommentarer og
1 løsning

WWW-authenticate

Hej

Efter at jeg har installeret PHP 4.3.2 har jeg et problem med WWW-authenticate. Boksen til username og pw dukker godt nok frem, men den godtager ikke "anders"/"anders". Er der noget jeg skal indstille i php.ini?

VH

Anders Thingholm

<?

$username = "anders";
$password = "anders";

#--------------- autorize user -------------------
if(!isset($PHP_AUTH_USER) || empty($PHP_AUTH_USER)) {
    Header("WWW-authenticate: basic realm=\"Thingholm - Admin\"");
    Header( "HTTP/1.0 401 Unauthorized");
   
    exit;
  }
else {
  $user_id = strtolower($PHP_AUTH_USER);
  if ($PHP_AUTH_PW !=$password && $userid != $username) {

    Header( "WWW-authenticate: basic realm=\"Thingholm - Admin\"");
    Header( "HTTP/1.0 401 Unauthorized");

    exit;
    }
  }
# ---------------- end autorize user ----------------*/
                   
?>
Avatar billede tangveje Nybegynder
01. juni 2003 - 21:27 #1
Skift $PHP_AUTH_USER ud med $_SERVER['PHP_AUTH_USER'] og $PHP_AUTH_PW ud med $_SERVER['PHP_AUTH_PW']

Det skulle hjælpe
Avatar billede thingholm.dk Nybegynder
01. juni 2003 - 21:30 #2
Nej, det virkede desværre ikke. Den samme fil har virket før under Apache 1.3.27 og PHP 4.2.0, men nu har jeg opdateret min webserver...
Avatar billede tipsen Nybegynder
02. juni 2003 - 00:25 #3
Her har du nogle rettelser og omskrivning - og den har ikke fungeret i ovennævnte form tidligere - uafhængigt af dit serverversion - der er fejl i et variabelnavn og der er fejl i logikken til at teste om det er korrekt username og password!

<?
$username = "anders";
$password = "anders";
#--------------- autorize user -------------------
if(!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] != $username || $_SERVER['PHP_AUTH_PW'] != $password) {
  header('WWW-authenticate: basic realm="Thingholm - Admin"');
  header('HTTP/1.0 401 Unauthorized');
  exit;
}
# ---------------- end autorize user ----------------*/
?>
Avatar billede thingholm.dk Nybegynder
02. juni 2003 - 08:41 #4
Hej igen

SÅ har jeg prøvet tipsen's kode, men den opfører sig på samme måde. Jeg kan med 100% sikkerhed sige at denne kode har virket før jeg reinstallere apache og PHP:

<?

$username = "anders";
$password = "anders";

#--------------- autorize user -------------------
if(!isset($PHP_AUTH_USER) || empty($PHP_AUTH_USER)) {
    Header("WWW-authenticate: basic realm=\"Thingholm - Admin\"");
    Header( "HTTP/1.0 401 Unauthorized");
    echo "You failed to provide the correct password...\n";
    exit;
  }
else {
  $user_id = strtolower($PHP_AUTH_USER);
  if ($PHP_AUTH_PW !=$password && $userid != $username) {
    Header( "WWW-authenticate: basic realm=\"Thingholm - Admin\"");
    Header( "HTTP/1.0 401 Unauthorized");
    echo "You failed to provide the correct password...\n";
    exit;
    }
  }
# ---------------- end autorize user ----------------*/
                   
?>
Avatar billede andy Nybegynder
02. juni 2003 - 11:49 #5
Hvis PHP som CGI så virker http-auth ikke....
Avatar billede thingholm.dk Nybegynder
02. juni 2003 - 11:52 #6
Hvordan tjekker jeg om det er det? Og er der i så fald "noget at gøre ved det" ?
Avatar billede tipsen Nybegynder
02. juni 2003 - 12:05 #7
thingholm: Den kode du har skrevet ovenfor har ikke overensstemmelse mellem $user_id og $userid - derudover fungerer dit user/pass check på den måde, at hvis enten username eller password ikke er forkert bliver man logget ind! Dvs. rigtigt username med forkert password eller rigtigt password med forkert username er nok til at komme ind i systemet - det er derfor jeg siger det aldrig har fungeret!

Derudover er det korrekt at ovennævnte kun fungerer, hvis du kører PHP som CGI - hvad enten det er til IIS eller Apache - det kan du se mere om på http://www.php.net/manual/en/features.http-auth.php

Hvis det er din egen server, afhænger det jo af hvordan du har sat den op, hvordan den nu kører... - jeg vil mene du kan se den vha. phpinfo() - se mere på http://www.php.net/manual/en/function.phpinfo.php
Avatar billede thingholm.dk Nybegynder
02. juni 2003 - 12:12 #8
Hej igen

I kan se min servers informationer her:

dev.thingholm.dk/info.php

Jeg har nu prøvet med denne kode:

<?
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
  } else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
  }
?>

Men den ser heller ikke ud til at virke - http://dev.thingholm.dk/test.php
Avatar billede tipsen Nybegynder
02. juni 2003 - 12:33 #9
Her kan du se, at dit system kører med PHP med som CGI - derfor vil det ikke kunne lade sig gøre:
System  Windows NT ANDERS 5.1 build 2600 
Build Date  May 28 2003 15:06:05 
Server API  CGI/FastCGI 

Mit eget system der har PHP kørende som modul:
System  Windows NT localhost 5.0 build 2195 
Build Date  Feb 15 2003 23:02:25 
Server API  Apache 2.0 Filter 

-Skulle hilse og sige, at det er markant hurtigere at køre det som modul!
Avatar billede thingholm.dk Nybegynder
02. juni 2003 - 13:38 #10
Hvordan installerer jeg PHP som et modul?
Avatar billede tipsen Nybegynder
02. juni 2003 - 14:05 #11
Jeg fandt vist bare en lille nem opskrift på nettet dengang jeg gjorde det - piece of cake - se evt. http://www.google.com/search?lr=&q=install+php+module+apache+2+tutorial
Avatar billede thingholm.dk Nybegynder
02. juni 2003 - 14:57 #12
Ahhh, så har jeg den. Jeg har tilføjet dette i bunden af min httpd.conf

LoadModule php4_module D:/php/php4apache2.dll
AddType application/x-httpd-php .php


Problemet var at jeg have php4apache2.dll i et underbibliotek der hed sapi - det brød den sig ikke om - sagde at den ikke kunde finde filen.

Tak for hjælpen alle sammen?

VH

Anders Thingholm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester