Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przkierowanie logowania na OS
Forum PHP.pl > Forum > PHP
politech
Hej, chciałbym zrobić logowanie na stronę ale takie jak jest np w routerach, gdzie wyskakuje okno Windowsa czy innego OS, przez które się loguje.
Nie za bardzo wiem jak się za to zabrać, a nie udało mi się tego wygooglować.

Z góry dziękuję za pomoc.
Fifi209
To o czym mówisz to nic innego jak: apache auth
erix
albo HTTP Basic Authentication. [;
modern-web
http://httpd.apache.org/docs/2.0/howto/auth.html
Najpopularniejszy sposób autoryzacji za pomocą serwera Apache.
politech
a co jesli strona będzie stała nie na apachu a na lighttpd?
Fifi209
Cytat(politech @ 9.06.2011, 10:40:45 ) *
a co jesli strona będzie stała nie na apachu a na lighttpd?

Wtedy czytasz post Erix'a i szukasz w google.

np tu
politech
  1. <?php
  2.  
  3. $realm = 'Restricted area';
  4. $bufor = include 'mechanizm.php';
  5.  
  6.  
  7. $users = array('admin' =>$bufor);
  8.  
  9.  
  10. if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
  11. header('HTTP/1.1 401 Unauthorized');
  12. header('WWW-Authenticate: Digest realm="'.$realm.
  13. '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
  14.  
  15. die('Nacisnoles Cancel');
  16. }
  17.  
  18.  
  19. // analyze the PHP_AUTH_DIGEST variable
  20. if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) ||
  21. !isset($users[$data['username']]))
  22. die('Wrong Credentials!');
  23. header("Location: index.php");
  24.  
  25.  
  26. // generate the valid response
  27. $A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]);
  28. $A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
  29. $valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);
  30.  
  31. if ($data['response'] != $valid_response)
  32.  
  33. die('Wrong Credentials!');
  34. header("Location: logowanie.php");
  35. // ok, valid username & password
  36. //echo 'Your are logged in as: ' . $data['username'];
  37. header("Location: logon.php");
  38.  
  39. // function to parse the http auth header
  40. function http_digest_parse($txt)
  41. {
  42. // protect against missing data
  43. $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
  44. $data = array();
  45. $keys = implode('|', array_keys($needed_parts));
  46.  
  47. preg_match_all('@(' . $keys . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);
  48.  
  49. foreach ($matches as $m) {
  50. $data[$m[1]] = $m[3] ? $m[3] : $m[4];
  51. unset($needed_parts[$m[1]]);
  52. }
  53.  
  54. return $needed_parts ? false : $data;
  55. }
  56.  
  57. ?>



Dla tego kodu na lighttpd wyrzuca mi nieznaną funkcje preg_match_all(..)
Rozumiem, ze muszę przeprowadzić konfigurację serwera, zgodnie z linkiem wysłanym w poście wyżej. Z tym, że nie wiem czy tą konfiguracje mam wkleić do mojego skryptu, czy mam ją ręcznie jakoś przeprowadzić(linux and php nooby).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.