Avatar billede mkjaer Nybegynder
12. oktober 2003 - 14:38 Der er 10 kommentarer og
1 løsning

Forskel mellem 4.1.2 og 4.3.3

Hejsa,

Jeg benytter følgende kode til adgangsbegrænsning. Koden virker fint i PHP 4.1.2, men vil ikke genkende brugernavn/password, når jeg forsøger under PHP 4.3.3

Kan det være opsætningen af PHP hos min udbyder? Eller hvad mon det er der driller mig?

Koder ser således ud:
<?php

Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
Header("Expires: fri, jun 12 1981 00:00:00 gmt");

include("../lib/includes.inc.php");
include("../lib/connect.inc.php");

$rs_admin = mysql_query("SELECT password, realname, id as adminid FROM admin WHERE username = '$PHP_AUTH_USER'");
if ($row_admin = mysql_fetch_array($rs_admin)) {
    extract($row_admin);
    if ($password) {
        $passwd = md5($PHP_AUTH_PW);
        if ($passwd == $password) {
            $login = 'ok';
            $adminuser = $PHP_AUTH_USER;
            session_register("adminuser");
            session_register("login");
        } else {
            unset($PHP_AUTH_USER);
        }
    } else {
        unset($PHP_AUTH_USER);
    }
    unset($PHP_AUTH_USER);
}
if (!$PHP_AUTH_USER && $login != 'ok') {
    header('WWW-Authenticate: Basic realm="IP Administration - webKontrol"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Adgang nægtet, da brugernavn/password ikke er indtastet korrekt.';
}

if ($login == 'ok') {

echo("hemmeligt indhold");
}
?>

På forhånd tak,
Martin
Avatar billede pbudk Nybegynder
12. oktober 2003 - 15:03 #1
<?php

Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
Header("Expires: fri, jun 12 1981 00:00:00 gmt");

include("../lib/includes.inc.php");
include("../lib/connect.inc.php");
$_SERVER[
$rs_admin = mysql_query("SELECT password, realname, id as adminid FROM admin WHERE username = '".$_SERVER["PHP_AUTH_USER"]."'");
if ($row_admin = mysql_fetch_array($rs_admin)) {
    extract($row_admin);
    if ($password) {
        $passwd = md5($_SERVER["PHP_AUTH_PW"]);
        if ($passwd == $password) {
            $login = 'ok';
            $adminuser = $_SERVER["PHP_AUTH_USER"];
            session_register("adminuser");
            session_register("login");
        } else {
            unset($_SERVER["PHP_AUTH_USER"]);
        }
    } else {
        unset($_SERVER["PHP_AUTH_USER"]);
    }
    unset($_SERVER["PHP_AUTH_USER"]);
}
if (!$_SERVER["PHP_AUTH_USER"] && $login != 'ok') {
    header('WWW-Authenticate: Basic realm="IP Administration - webKontrol"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Adgang nægtet, da brugernavn/password ikke er indtastet korrekt.';
}

if ($login == 'ok') {

echo("hemmeligt indhold");
}
?>
Avatar billede mkjaer Nybegynder
12. oktober 2003 - 15:16 #2
Hejsa,

Denne står vist lidt alene:
$_SERVER[

Jeg har forsøgt uden denne linie, og der er desværre ikke nogle forbedringer.

hilsen
Martin
Avatar billede pbudk Nybegynder
12. oktober 2003 - 15:17 #3
ja - den $_SERVER[ var en fejl.

Logger den bare ikke ind eller?
Avatar billede pbudk Nybegynder
12. oktober 2003 - 15:20 #4
prøv evt.

print($_SERVER["PHP_AUTH_USER"]);

og se om den overhovedet har fat i variablen.

du kan læse mere her: http://dk2.php.net/features.http-auth
Avatar billede mkjaer Nybegynder
12. oktober 2003 - 15:20 #5
Nej, $login sættes ikke til 'ok'.
Avatar billede mkjaer Nybegynder
12. oktober 2003 - 15:23 #6
Det har vist ikke fat i variablen overhovedet.
Denne giver ikke noget output: print($_SERVER["PHP_AUTH_USER"]);
Avatar billede mkjaer Nybegynder
12. oktober 2003 - 15:26 #7
Hejsa,

Jeg har lige prøvet med denne stump koder fra php.net

<?php
  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>";
  }
?>

Og her kommer fejlteksten også frem:Text to send if user hits Cancel button

Mystisk. kig evt. på php-opsætningen her: http://www.ip.dk/info.php

Al hjælp er velkommen...
Avatar billede pbudk Nybegynder
12. oktober 2003 - 16:02 #8
mærkeligt - det virker fint på min 4.3.2
Avatar billede mkjaer Nybegynder
12. oktober 2003 - 16:09 #9
Jeg kan forstå, at det skal køre på et Apache-modul, men jeg tror mit nye webhotel kører på cgi-modul. Kan det være forklaringen?
Avatar billede pbudk Nybegynder
12. oktober 2003 - 16:16 #10
<citat>
The HTTP Authentication hooks in PHP are only available when it is running as an Apache module and is hence not available in the CGI version.
</citat>

Ja det kunne da godt se ud til at være forklaringen.
Mit system kører som modul.
Avatar billede mkjaer Nybegynder
12. oktober 2003 - 17:03 #11
Tjaeee, så må jeg heller lave mit eget. Tak for forsøget...
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