Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Авторизация пользователей в PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

BigMurzik



Местный кот
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
пиплы дабы не создавать новый топик спрошу здесь
занчит вопрос: имеется скрипт .php который лежит на одном хосте и имеется скрипт .cgi на другом хосте, этот .cgi обращается к этому .php и отправляет ему GET запрос file.php?f=forum_id&title=TopicTitle&post=TopicPost&name=NickName вобщем мне нужно какнимть сдеалть что бы к эту запросу еще добавлялось что то вроде login=vasya&pass=pass, естественно эта инфа о логине и пасе должна быть в .php скрипте. Помогите чем сможите. средствами htaccess оказалось не возможным.

----------
В Калининграде лета нет и похоже уже не будет :(

Всего записей: 1967 | Зарегистр. 23-10-2001 | Отправлено: 23:12 05-10-2003
y2kill



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
дописывай в урлу переменые и фсе ..
но соотвестсвено из скрипта в скрипт придется их гонять.. используй луше куки удобней.
 
Народ а вот такой каверзный вопрос:
Хто пробовал привентить NT авторизацию, в смысле пропускать юзверей токо из ActiveDirectory?
Знаю что все это с Win32api работает....
но че то нифига не получается..

Всего записей: 94 | Зарегистр. 17-06-2002 | Отправлено: 16:25 26-11-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
y2kill

Цитата:
Народ а вот такой каверзный вопрос:  
Хто пробовал привентить NT авторизацию, в смысле пропускать юзверей токо из ActiveDirectory?  
Знаю что все это с Win32api работает....  


Код:
 
<?php
 
$ldapconfig['host'] = 'localhost';
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = 'dc=localhost,dc=com';
$ldapconfig['authrealm'] = 'My Realm';
 
function ldap_authenticate() {
    global $ldapconfig;
    global $PHP_AUTH_USER;
    global $PHP_AUTH_PW;
     
    if ($PHP_AUTH_USER != "" && $PHP_AUTH_PW != "") {
        $ds=@ldap_connect($ldapconfig['host'],$ldapconfig['port']);
        $r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER);
        if ($r) {
            $result = @ldap_get_entries( $ds, $r);
            if ($result[0]) {
                if (@ldap_bind( $ds, $result[0]['dn'], $PHP_AUTH_PW) ) {
                    return $result[0];
                }
            }
        }
    }
    header('WWW-Authenticate: Basic realm="'.$ldapconfig['authrealm'].'"');
    header('HTTP/1.0 401 Unauthorized');
    return NULL;
}
 
if (($result = ldap_authenticate()) == NULL) {
    echo('Authorization Failed');
    exit(0);
}
echo('Authorization success');
print_r($result);
 
?>
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:45 26-11-2003
y2kill



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Не совсем то, в любом случае скрипт постоянно запрашивает пароль, а необходимо условие что пользователь зашедший в домен может спокойно открыть страницу корпоративного сайта..
 
Канешна проще пересесть на IIS и его средствами это зделать, но это не интересно.
При этом хочется средствами PHP получать еще и список пользователей домена, а это уже токо при обявлении функций API в dll-ках винды - вот это уже рульно...  
 
Но все равно спасиба за скриптик.... он точна пригодиться..

Всего записей: 94 | Зарегистр. 17-06-2002 | Отправлено: 18:24 27-11-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
y2kill

Цитата:
Не совсем то, в любом случае скрипт постоянно запрашивает пароль, а необходимо условие что пользователь зашедший в домен может спокойно открыть страницу корпоративного сайта..  

Если IE не отправляет сам данные усера зашедшего в домен, то как может получить их php скрипт?
 

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:36 27-11-2003
y2kill



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
я и говорю при работе с php_win32api это возьожно, но не работают скрипты например этот:

Код:
 
<?  
define("LOGON32_LOGON_INTERACTIVE", 2);  
define("LOGON32_LOGON_NETWORK",     3);  
define("LOGON32_LOGON_BATCH",       4);  
define("LOGON32_LOGON_SERVICE",     5);  
 
define("LOGON32_PROVIDER_DEFAULT",  0);  
define("LOGON32_PROVIDER_WINNT35",  1);  
define("LOGON32_PROVIDER_WINNT40",  2);  
define("LOGON32_PROVIDER_WINNT50",  3);  
 
define("LOGON32_DOMAIN_LOCAL", ".");  
define("LOGON32_DOMAIN_ALL",   0);  
 
if(!extension_loaded('win32api')) {  
    if (!dl('win32api')) {  
        die("Couldn't load win32api!");  
    }  
}  
 
function NT_Validate_User($user, $domain, $pass)  
{  
    w32api_register_function("kernel32.dll", "LocalAlloc", "long");  
    w32api_register_function("kernel32.dll", "LocalFree", "long");  
    w32api_register_function("kernel32.dll", "CloseHandle", "bool");  
    w32api_register_function("advapi32.dll", "LogonUserA", "bool");  
 
    $cleanup = w32api_register_function("deref.dll", "deref", "long");  
 
    $pHandle = LocalAlloc(0, 4); //Pointer to a HANDLE  
 
    $test = LogonUserA($user,  
                      $domain,  
                      $pass,  
                      LOGON32_LOGON_NETWORK,  
                      LOGON32_PROVIDER_DEFAULT,  
                      $pHandle);  
 
    if($test != 0)  
    {  
        return 1;  
        if($cleanup)  
        {  
            $handle = deref($pHandle);  
            CloseHandle($handle);  
        }  
        LocalFree($pHandle);  
    } else {  
        return 0;  
    }  
}  
 
?>  

Всего записей: 94 | Зарегистр. 17-06-2002 | Отправлено: 16:27 28-11-2003
Farch



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://www.hotscripts.com/PHP/Scripts_and_Programs/Security_Systems/index.html

Всего записей: 3211 | Зарегистр. 25-12-2001 | Отправлено: 17:32 28-11-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
<?  
define("LOGON32_LOGON_INTERACTIVE", 2);  

Офигеть.

----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 16:48 30-11-2003
Vsevolod



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чего-то у меня постоянно вылетает ошибка на 2 строчки

Цитата:
header('WWW-Authenticate: Basic realm="'.$ldapconfig['authrealm'].'"');  
    header('HTTP/1.0 401 Unauthorized');  

да и что надо написать в

Цитата:
$ldapconfig['authrealm'] = 'My Realm';

никак до меня не доходит.
 
Может за то время, ччто прошло уже можно писать как-то по-современнее? (ну новые команды или т.п.)

Всего записей: 2366 | Зарегистр. 13-06-2001 | Отправлено: 22:03 22-08-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vsevolod
У тебя используется ldap? если нет, то
header("WWW-Authenticate: Basic realm='что хочешь, то и пиши'");

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:14 22-08-2005
sket4



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HTTP Authentication example forcing a new name/password

Код:
 
<?php
  function authenticate() {
    header('WWW-Authenticate: Basic realm="Test Authentication System"');
    header('HTTP/1.0 401 Unauthorized');
    echo "You must enter a valid login ID and password to access this resource\n";
    exit;
  }
 
  if (!isset($_SERVER['PHP_AUTH_USER']) ||
      ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
   authenticate();
  }  
  else {
   echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";
   echo "Old: {$_REQUEST['OldAuth']}";
   echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='post'>\n";
   echo "<input type='hidden' name='SeenBefore' value='1' />\n";
   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
   echo "<input type='submit' value='Re Authenticate' />\n";
   echo "</form></p>\n";
  }
?>  
 


Всего записей: 712 | Зарегистр. 07-05-2004 | Отправлено: 22:16 22-08-2005
Vsevolod



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
опять ругательство на 2 строчки

Цитата:
header('WWW-Authenticate: Basic realm="Test Authentication System"');  
    header('HTTP/1.0 401 Unauthorized');  

 
Warning: Cannot modify header information - headers already sent by (output started at ...
 
Может у меня чего не хватает?
 
и строчкой третьей вылетает  
You must enter a valid login ID and password to access this resource  
 
Мне всего-то хотелось, чтобы логины и пароли брались из Актив Директории. Есть такой-то пользователь и ему можно только туда-то, а есть такая группа  ей можно туда-то.

Всего записей: 2366 | Зарегистр. 13-06-2001 | Отправлено: 14:04 23-08-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PHP FAQ: решение проблемы "Cannot add header information  - headers already sent"

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 14:41 23-08-2005
MurChik



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
обясните плиз почему вот этот скрипт не работает?
 
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
  } else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
  }
 
спрашивает имя и пароль, и все, до бесконечности.

Всего записей: 378 | Зарегистр. 03-04-2003 | Отправлено: 15:31 23-08-2005
Kaylang



Вредный и упрямый
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MurChik
А пользователь у тебя заведен? Пароль правельный?

Всего записей: 38834 | Зарегистр. 29-08-2002 | Отправлено: 16:01 23-08-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MurChik

Цитата:
спрашивает имя и пароль, и все, до бесконечности.

PHP стоит как CGI или как модуль Апача?
 
Kaylang

Цитата:
А пользователь у тебя заведен? Пароль правельный?

ну что за глупости.. на код то посмотри.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 16:16 23-08-2005
MurChik



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
не знаю
как проверить можно?

Всего записей: 378 | Зарегистр. 03-04-2003 | Отправлено: 16:27 23-08-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MurChik

Цитата:
не знаю  
как проверить можно?

phpinfo();
плюс версия php

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 16:30 23-08-2005 | Исправлено: Cheery, 16:32 23-08-2005
MurChik



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
PHP Version 4.4.0
Server API CGI

Всего записей: 378 | Зарегистр. 03-04-2003 | Отправлено: 16:48 23-08-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MurChik

Цитата:
Server API CGI

Тогда забей.. это работает только с модульной версией.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 16:52 23-08-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Интернет » Web-программирование » Авторизация пользователей в PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru