最后的逻辑有点问题:
if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) 
指的是如果用户名和密码中只要有一个符合都可以登录,应当是都符合才能登录吧。不过主要问题不是这里,先检查一下你的用户名和密码是否传到了处理程序。

解决方案 »

  1.   

    PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本。http://www.phpe.net/articles/195.shtml
    apache2.0.39 php4.2.3在windowsXP下模块方式搭建.
      

  2.   

    将你的php改为模块安装:1.将将c:/php/sapi下所有.dll复制到c:windows/system32下.2打开httpd.conf
    找到一系列 LoadModule开头的指令项,在最后加入如下内容:LoadModule php4_module c:/php433/sapi/php4apache2.dll
    <FilesMatch ".php$">
    SetOutputFilter PHP
    </FilesMatch>注意:要修改c:/php433哦3.屏蔽原来的php.exe#ScriptAlias /php433/ "C:/php433/" AddType application/x-httpd-php .php#Action application/x-httpd-php3 "/php433/php.exe" 
      

  3.   

    将你的php改为模块安装:1.将将c:/php/sapi下所有.dll复制到c:windows/system32下.2打开httpd.conf
    找到一系列 LoadModule开头的指令项,在最后加入如下内容:LoadModule php4_module c:/php433/sapi/php4apache2.dll
    <FilesMatch ".php$">
    SetOutputFilter PHP
    </FilesMatch>注意:要修改c:/php433哦3.屏蔽原来的php.exe#ScriptAlias /php433/ "C:/php433/" AddType application/x-httpd-php .php#Action application/x-httpd-php3 "/php433/php.exe" 保存httpd.conf,并退出编辑.
    重启apache2服务
      

  4.   

    请检查$PHP_AUTH_USER是否有值
    请检查PHP_AUTH_USER在何处
      

  5.   

    我在末行有加入
    LoadModule php4_module c:/php/sapi/php4apache2.dll 
    AddType application/x-httpd-php .php4 .php3 .php
    <FilesMatch ".php$">
    SetOutputFilter PHP
    </FilesMatch>而
    #ScriptAlias /php433/ "C:/php433/" 
    #Action application/x-httpd-php3 "/php433/php.exe" 
    我的配置里没有这几行啊
    改了也不行啊
      

  6.   

    请问 xuzuning(唠叨) 
    怎么检查
    $PHP_AUTH_USER是否有值
    PHP_AUTH_USER在何处?
    谢谢
      

  7.   

    你的realm="我的秘密資料"一个改为realm="我的秘密資料1"一个改为realm="我的秘密資料2"
    如果登陆框里出现的是“我的秘密資料2”
    那么就得到$PHP_AUTH_USER了
      

  8.   

    还有,你的web服务器要用apache,这个程序才好用
      

  9.   

    有啊,,我有用啊,,还装了数据库mysql,
    我改了一下是我的秘密資料1,那登录的用户名与密码是哪个啊,
    不好意思我是刚学这个的要不哪个前辈帮忙写一个简单程序帮我测试一下是什么问题????
    谢谢
      

  10.   

    哦你的用户名和密码没设置好,应该是apache授权的用户
    设置一个用户名为hello,密码也为hello的方法如下
    -------------------Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.C:\Documents and Settings\hai>cd \C:\Apache2\Apache2\bin>htpasswd -c hello.txt hello
    Automatically using MD5 format.
    New password: *****
    Re-type new password: *****
    Adding password for user helloC:\Apache2\Apache2\bin>注意:同时你的程序中的"validname"和"goodpassword" 都要改成hello
      

  11.   

    这一步我是没做,但我按你方法又添加了,但还不行也重启了apache,
    密码与用户也改了输入hello,
    还不行啊再请教谢谢
    多谢谢
      

  12.   

    将程序改成:good luck~<?php
    if ((!isset($_SERVER['PHP_AUTH_USER'])) || (!isset($_SERVER['PHP_AUTH_PW']))) {
        header('WWW-Authenticate: Basic realm="我的秘密資料1"');
        header('HTTP/1.0 401 Unauthorized');
        echo '您必須通過使用者認證。';
        exit; } else if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']))){ 
        if (($_SERVER['PHP_AUTH_USER'] != "hello") || ($_SERVER['PHP_AUTH_PW'] != "hello")) {
           header('WWW-Authenticate: Basic realm="我的秘密資料2"');
           header('HTTP/1.0 401 Unauthorized');
           echo '您必須通過使用者認證。';
           exit;
        } elseif (($_SERVER['PHP_AUTH_USER'] == "hello") || ($_SERVER['PHP_AUTH_PW'] == "hello")) {
           echo "<P>You're authorized!</p>";
        }

    ?>