ФорумПрограммированиеPHP для идиотов → HTTP Auth -> cookie session

HTTP Auth -> cookie session

  • Cross

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 4 октября 2010 г. 11:16

    Добрый вечер.

    В корне сайта есть htaccess и htpasswd. Знаю что имя и пароль авторизованного юзера находятся в PHP_AUTH_USER и PHP_AUTH_PW, так вот как мне выдать ему сессию и куки?

    Знаю только что примерно как то так:
    session_start();
    $_SESSION['name'] = "SESS_".md5("session");
    setcookie("admin", md5("admin"), time() + 3600);
  • artoodetoo

    Сообщения: 5138 Репутация: N Группа: в ухо

    Spritz 4 октября 2010 г. 12:40, спустя 1 час 24 минуты 24 секунды

    например так

    можно специально не выставлять кук. session_start() тебе поставит куку SID, всю остальную инфу получишь из сессии, а она зависит от SID

    <?php

    session_start();
    $self = $_SERVER[&#39;PHP_SELF&#39;];

    // AUTHORIZATION

    $realm = &#39;Protected area&#39;;
    $users = array (
    array(&#39;mary&#39;, &#39;mary123&#39;),
    array(&#39;john&#39;, &#39;john123&#39;),
    );

    if (isset($_GET[&#39;logout&#39;])) {

    unset($_SESSION[&#39;login&#39;]);
    exit(&#39;<p>You have logged out. [<a href=&quot;&#39; . $self . &#39;&quot;>Login</a>]</p>&#39;);

    }

    if (!isset($_SERVER[&#39;PHP_AUTH_USER&#39;]) || !isset($_SERVER[&#39;PHP_AUTH_PW&#39;]) || !isset($_SESSION[&#39;login&#39;])) {

    header(&#39;WWW-Authenticate: Basic realm=&quot;&#39; . $realm .&#39;&quot;&#39;);
    header(&#39;HTTP/1.0 401 Unauthorized&#39;);

    $_SESSION[&#39;login&#39;] = TRUE;

    exit(&#39;<p>You are not authorized. [<a href=&quot;&#39; . $self . &#39;&quot;>Login</a>]</p>&#39;);

    } else {

    $authorized = FALSE;

    foreach ($users as $u) {

    list($username, $password) = $u;
    if ($_SERVER[&#39;PHP_AUTH_USER&#39;] == $username &amp;&amp; $_SERVER[&#39;PHP_AUTH_PW&#39;] == $password) {
    $authorized = TRUE;
    break;
    }

    }

    if (!$authorized) {

    unset($_SESSION[&#39;login&#39;]);
    header(&#39;Location: &#39; . $self);
    exit;

    }

    }

    // PROTECTED CONTENT

    ?>

    <p>Hello <?php echo $username ?>! [<a href=&quot;<?php echo $self ?>?logout&quot;>Logout</a>]</p>

    <h1>Protected Content</h1>

    <p>blablabla</p>
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!