スポンサードリンク

2012年4月8日日曜日

Netbeans(7.0.1)でBasic認証のPHPが動作しない!?

NetbeansでPHPを作成するのは非常に楽ってことに最近感じています。

でも!!

今まで動作していたBasic認証のコードを、
そのままNetbeansが自動生成したソースに移植しても動作しなくなってしまった。

そのことを解決したときの備忘録。

---
NetBeansで新規PHPを作成した場合、
以下のようなソースが自動で作成される。

//---------------------------------------------------
//Netbeans自動生成ソース抜粋
//---------------------------------------------------

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
        //ここに普通はPHPのコードを記載する
        ?>
    </body>
</html>

上記朱記の箇所に、以下のソース抜粋(NG)のようにコード記載したら
Basic認証できなくなってしまった。
(Basic認証の入力画面が表示されない!)

//---------------------------------------------------
//Basic認証コード追加ソース抜粋(NG)
//---------------------------------------------------
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
        if ( !isset($_SERVER["PHP_AUTH_USER"])
        || !($_SERVER["PHP_AUTH_USER"] == "hogehoge"
        && $_SERVER["PHP_AUTH_PW"] == "hogehogepasswords") )
        {
                header("WWW-Authenticate: Basic realm=\"Welcome!!  \"");
                header("HTTP/1.0 401 Unauthorized");

                echo "ユーザまたはパスワードが不正です。\n";
                echo "<br>";
                echo "サイトアクセスしたい場合は、こちらへ連絡ください。\n";
                echo "<br>";
                echo "hogehoge@gmail.com\n";
                exit;
        }

        include("/var/www/php-bin/welcome.php");   

        ?>
    </body>
</html>

以下のようにしたらうまく動作するようになった。
index.phpとしているのに、"DOCTYPE html"とHTML宣言しているからかな。
理由はよくわからないけど、これで動作するようになったからOK!かな。

//---------------------------------------------------
//Basic認証コード追加ソース抜粋(OK)
//---------------------------------------------------
<?php
        if ( !isset($_SERVER["PHP_AUTH_USER"])
        || !($_SERVER["PHP_AUTH_USER"] == "hogehoge"
        && $_SERVER["PHP_AUTH_PW"] == "hogehogepasswords") )
        {
                header("WWW-Authenticate: Basic realm=\"Welcome!!  \"");
                header("HTTP/1.0 401 Unauthorized");

                echo "ユーザまたはパスワードが不正です。\n";
                echo "<br>";
                echo "サイトアクセスしたい場合は、こちらへ連絡ください。\n";
                echo "<br>";
                echo "hogehoge@gmail.com\n";
                exit;
        }

        include("/var/www/php-bin/welcome.php");        
?>

<!--To change this template, choose Tools | Templates
and open the template in the editor.-->

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // put your code here
        ?>
    </body>
</html>


CentOS6
Netbeas7.0.1
以上

0 件のコメント:

コメントを投稿