ホームページ >バックエンド開発 >PHPチュートリアル >こんな入り口ページの作り方
このような入り口ページはどうやって作るのでしょうか?
例えば、大学にはインターネットにアクセスできるWifiがありますが、アカウントとパスワードが必要です。コンピューターまたは携帯電話でインターネットをサーフィンするとすぐに、ログイン Web ページが表示されます (ここではこれを「エントリー Web ページ」と呼びます。正確ですか? それとも「ポータル Web ページ」と呼ぶべきですか?)。アカウントのパスワードを入力し、「オンラインにする」ボタンをクリックすると、オンラインであることを示すメッセージが表示されます。その後、他の Web サイトのページに自由にアクセスできるようになります。
街を歩いていると、チャイナネット、CMCC、チャイナユニコムなどのロックが解除されているように見える Web ページがたくさんありますが、これらのネットワークに接続すると、最初のページが表示されます。インターネットにアクセスするときと同じように、アカウントとパスワードを入力するだけで、この入り口を通過してインターネットを自由に閲覧できます。 WiFi だけでなく、一部のコミュニティのイーサネットも同様で、私が以前住んでいたコミュニティ、グレート ウォール ブロードバンドでも、インターネットにアクセスするには最初にポータル ページからアカウントとパスワードを入力する必要がありました。
このような Web ページの作り方を知りたいですか? Web ページを通じて LAN 内のユーザーのインターネット アクセス権を制御するにはどうすればよいですか?
プロジェクトがあり、このような Web ページを緊急に作成する必要があります。私を助けてください!ひざまずいて、ありがとう!
------解決策---------
プロキシと同様....
------解決策--------------------
この種のゲートウェイの主なタスクは、アクセス許可を制御することです。データパケットのルートは、一般的なWebサーバーと比較して、低いレベルで実装される必要があると思います。ログインページは単なるCGIで、メインプログラムはソケットベースの高性能C/Javaです
あまり理解できませんが、非常に興味がありますのでフォローしてください
-----解決策---------
皆さんはこのことを忘れているようです。マニュアルを読ませますが、あまり読みたくないのです。投稿してください
第 34 章 HTTP 認証に PHP を使用する<br>PHP の HTTP 認証メカニズムは、PHP が Apache モジュールとして実行されている場合にのみ有効であるため、この機能は CGI バージョンには適用されません。 Apache モジュールの PHP スクリプトでは、header() 関数を使用して「認証が必要」情報をクライアント ブラウザに送信し、ユーザー名とパスワードの入力ウィンドウをポップアップ表示させることができます。ユーザーがユーザー名とパスワードを入力すると、URL を含む PHP スクリプトによって事前定義された変数 PHP_AUTH_USER、PHP_AUTH_PW、および AUTH_TYPE が追加され、これら 3 つの変数がそれぞれユーザー名、パスワード、認証タイプに設定されます。事前定義された変数は、$_SERVER または $HTTP_SERVER_VARS 配列に保存されます。 「ベーシック」および「ダイジェスト」(PHP 5.1.0 以降) 認証方法をサポートします。詳細については、header() 関数を参照してください。 <br><br>PHP バージョンの問題: $_SERVER などを含むオートグローバル グローバル変数は PHP 4.1.0 以降で有効であり、$HTTP_SERVER_VARS は PHP 3 以降で有効です。 <br><br>次に、ページでクライアント認証を強制するスクリプトの例を示します。 <br><br>例 34-1. 基本的な HTTP 認証の例<br><br><?php<br /> if ( ! isset($_SERVER['PHP_AUTH_USER'])) {<br /> header('WWW-Authenticate: Basic realm="My Realm"');<br /> header('HTTP/1.0 401 Unauthorized');<br /> echo 'ユーザーがキャンセルボタンを押した場合に送信するテキスト';<br /> exit;<br /> } else {<br /> echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; <br> echo "<p>パスワードとして {$_SERVER['PHP_AUTH_PW']} を入力しました。</p>";<br> }<br>?> <br> <br><br> <br>例 34-2. ダイジェスト HTTP 認証の例<br><br>この例では、単純なダイジェスト HTTP 認証スクリプトを実装する方法を示します。詳細については、RFC 2617 を参照してください。 <br><br><?php<br />$realm = '制限エリア';<br /><br />//user => パスワード<br>$users = array('admin' => 'mypass ', 'ゲスト' => 'ゲスト');<br><br><br>if (!isset($_SERVER['PHP_AUTH_DIGEST'])) {<br> header('HTTP/1.1 401 Unauthorized') ;<br> header('WWW-Authenticate: Digest realm="'.$realm.<br> '" qop="auth" nonce="'.uniqid().'" opaque="'.md5($realm ).'"');<br><br> die('ユーザーがキャンセルボタンを押した場合に送信するテキスト');<br>}<br><br>// PHP_AUTH_DIGEST 変数を分析します<br>preg_match('/username="(?P<username>.*)",s*realm="(?P<realm>.*)",s*nonce="(?P<nonce>.*)", s*uri="(?P<uri>.*)",s*response="(?P<response>.*)",s*opaque="(?P<opaque>.*)",s* qop=(?P<qop>.*),s*nc=(?P<nc>.*),s*cnonce="(?P<cnonce>.*)"/', $_SERVER['PHP_AUTH_DIGEST' ], $digest);<br><br>if (!isset($users[$digest['username']]))<br> die('Username not valid!');<br><br><br>// 有効なレスポンスを生成します<br>$A1 = md5($digest['username'] . ':' . $realm . ':' . $users[$digest['username']]);<br>$A2 = md5($_SERVER['REQUEST_METHOD'].':'.$digest['uri']);<br>$valid_response = md5($A1.':'.$digest['nonce']. ':'.$digest['nc'].':'.$digest['cnonce'].':'.$digest['qop'].':'.$A2);<br><br> if ($digest['response'] != $valid_response)<br> die('Wrong Credentials!');<br><br>// ok、有効なユーザー名とパスワード<br>echo 'あなたは としてログインしています: ' 。 $digest['ユーザー名'];<br><br>?> <br> <br><br><br>互換性の問題: HTTP コードの書き込み時に、すべてのクライアントの互換性を保護するために、「Basic」の最初の文字を大書きする必要があります。 「B」、境界文字列には二重引数(単一引数ではない)を使用する必要があり、HTTP/1.0 401 を実行する場合、401 の前に 1 つの空格が必要です。<br><br> 上の例ではPHP_AUTH_USER と PHP_AUTH_PW の値のみが出力されますが、実際の使用では、ユーザー名とパスワードの正当性を検査するか、データベースの検査を実行するか、dbm ファイルから検索する必要がある場合があります。 🎜><br>注意一部の Internet Explorer ブラウザには、それ自体に問題があります。それらは、ポイント ブローリクエストと同様のシーケンスを取得します。現在、HTTP/1.0 401 を送信する前に WWW-Authenticate を送信することで、この問題を解決できる可能性があります。<br> <br>自分PHP 4.3.0 以降では、外部認証が特定の面で有効であり、セキュリティモードが有効になっている場合は、外部認証を使用して外部認証が行われている場合に、誰かがライトによって暗号を取得することを防止するために、PHP_AUTH が設定されません。ただし、REMOTE_USER は外部認証されたユーザーを認識するために使用できるため、$_SERVER['REMOTE_USER'] を使用できます。 <br><br> 構成説明: PHP に AuthType 命令があるかどうかで、外部認証機構が有効かどうかを判断します。 ><br>注意、これでも、承認されていない URL を介して同じサーバー上の承認された URL 上の暗号を取得するのを防ぐことはできません。情報が返されると、すべてのローカル ブラウザがドメインの Windows 承認に保存されます。これにより、1 人のユーザーを効果的に登録し、ユーザー名とパスワードの再入力を強制できます。 「注釈」としての実行は次のとおりです。 <br><br> 例 34-3. 新規入力用の户名と秘密コードの HTTP 認証の例<br><br><?php<br> function authenticate() {<br> header('WWW-Authenticate: Basic realm="Test Authentication System"'); <br> header('HTTP/1.0 401 Unauthorized');<br><br>