2011-06-24 8 views
2

私は本当に基本的な認証を使用しようとしています...基本的に私は自分のサイトを生きていますが、アクセスできるように私は少数の人に送ることができる1つのパスワードを持っていますそれは他の人ではありません。PHPのクッキーといくつかの基本認証に関するヘルプ

私はクッキーを使用しようとしていましたが、私は比較的経験がありません。次のコードは、私がこれまで持っていたものです。

ヘッダーの先頭にあります。何らかの理由でこれは

<?php if(!isset($_COOKIE["user"])) header("Location: authenticate.php?invalid=0"); ?> 

authenticate.php迅速かつ汚い

<?php 
    if($_GET["invalid"] == 1) { 
     echo '<p> Invalid password. </p>'; 
    } 
     echo '<form action="enter.php" method="post"> 

       <span>Enter the password</span><br /> 
       <textarea name="mainPass"></textarea> 
       <input type="submit" value="Submit!" /> 
      </form>'; 

?> 

enter.php

<?php 
    $pass = $_POST['mainPass']; 
    if(strstr($pass, "<password removed>")) { 
     setcookie("user", time()+3600); 
     header("Location: index.php"); 
    } else { 
     header("Location: authenticate.php?invalid=1 "); 
    } 
?> 
+1

ヘッダーの後にexit()を挿入します。その後、正しくリダイレ​​クトする必要があります。 –

+1

また、ページの最後に置かれている場合は、phpタグの終了を避ける方が良いでしょうか?> – GitsD

+0

@Bob代わりに何も起こらず、まったくリダイレ​​クトしません。 – tnw

答えて

2

をauthenticate.phpするリダイレクトされません。これを長い間使わないでください。いかなる形態も必要としない。ハードコードされたユーザー名とパスワードを機能コード自体に設定してください。これを行うには、すべてのページの上部にある関数を実行する必要があります。

// quick and dirty http authentication 
    function authenticateHttp() { 
     @session_start(); 
     // credential check 
     if (!isset($_SESSION['auth_realm']) || !isset($_SERVER['PHP_AUTH_USER'])) { 
      // credentials not supplied yet 
      // send http credential request 
      $_SESSION['auth_realm'] = uniqid('', true); 
      header('WWW-Authenticate: Basic realm="' . $_SESSION['auth_realm'] . '"'); 
      header('HTTP/1.0 401 Unauthorized'); 
      // if cancel button clicked, show this 
      exit('You must authenticate before accessing this area.'); 
     } else { 
      // credentials supplied 
      if ($_SERVER['PHP_AUTH_USER'] !== '{your chosen username}' || $_SERVER['PHP_AUTH_PW'] !== '{your chosen password}') { 
       unset($_SESSION['auth_realm']); 
       exit('You have entered an invalid login.'); 
      } 
     } 
    } 
+0

EDIT:@session_start()を関数の先頭に追加しました。ほとんど忘れてしまった。 – dqhendricks

+0

@dqhendricksあなたの関数はエラーを引き起こします:最初のif文で 'Parse error:syntax error、unexpected T_IF'と表示されます – tnw

+0

ehhどの行ですか?これは私のために働く。 – dqhendricks