Установка пароля на php страницу

Discussion in 'PHP' started by GAiN, 22 Jun 2012.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    Нужно поставить login и пароль при входе на php страницу
    htaccess устанавливает пароль сразу на всю папку и на все страницы которые в ней, поэтому этот способ не подходит.
    нужен простой способ на php утановить пароль, без mysql.

    подскажите пожалуйста как реализовать такое ?
     
  2. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
  3. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    там все способы сложные и с mysql.
    нужно простой - аналог htaccess только на одну html страницу
    а простых не нашёл
     
  4. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    497
    Likes Received:
    708
    Reputations:
    748


    PHP:
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        
    header('WWW-Authenticate: Basic realm="My Realm"');
        
    header('HTTP/1.0 401 Unauthorized');
        echo 
    'Текст, отправляемый в том случае,
        если пользователь нажал кнопку Cancel'
    ;
        exit;
    } else {
        echo 
    "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo 
    "<p>Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.</p>";
    }
     
  5. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    тогда уж
    PHP:
    <?php
    $realm 
    'Запретная зона';

    //user => password
    $users = array('admin' => 'mypass''guest' => 'guest');


    if (empty(
    $_SERVER['PHP_AUTH_DIGEST'])) {
        
    header('HTTP/1.1 401 Unauthorized');
        
    header('WWW-Authenticate: Digest realm="'.$realm.
               
    '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');

        die(
    'Текст, посылаемый, если пользователь нажал Cancel');
    }


    // анализируем переменную PHP_AUTH_DIGEST
    if (!($data http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) ||
        !isset(
    $users[$data['username']]))
        die(
    'Неправильные данные!');


    // генерируем корректный ответ
    $A1 md5($data['username'] . ':' $realm ':' $users[$data['username']]);
    $A2 md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
    $valid_response md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);

    if (
    $data['response'] != $valid_response)
        die(
    'Неправильные данные!');

    // ok, логин и пароль верны
    echo 'Вы вошли как: ' $data['username'];


    // функция разбора заголовка http auth
    function http_digest_parse($txt)
    {
        
    // защита от отсутствующих данных
        
    $needed_parts = array('nonce'=>1'nc'=>1'cnonce'=>1'qop'=>1'username'=>1'uri'=>1'response'=>1);
        
    $data = array();
        
    $keys implode('|'array_keys($needed_parts));

        
    preg_match_all('@(' $keys ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@'$txt$matchesPREG_SET_ORDER);

        foreach (
    $matches as $m) {
            
    $data[$m[1]] = $m[3] ? $m[3] : $m[4];
            unset(
    $needed_parts[$m[1]]);
        }

        return 
    $needed_parts false $data;
    }
    ?>
     
  6. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    научись искать. на первой же странице не один вариант того что тебе надо