Oto kod:
  1. <?php
  2.  
  3. if( isset($_GET['q']) ) {
  4.  
  5. define('USER', 'user');
  6. define('PASSWORD', 'pass');
  7.  
  8. if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ) {
  9. header('WWW-Authenticate: Basic realm="Secret page"');
  10. header('HTTP/1.0 401 Unauthorized');
  11. print "Login failed!\n";
  12. } elseif ( isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == USER && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] == PASSWORD ) {
  13. echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
  14. echo "<p>You entered '{$_SERVER['PHP_AUTH_PW']}' as your password.</p>";
  15. tbl($_POST);
  16. } else {
  17. header('HTTP/1.0 400 Bad Request');
  18. echo "<p>You shall not pass!</p>";
  19. }
  20.  
  21. } else {
  22.  
  23. ?>
  24. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  25. <html lang="en">
  26. <head>
  27. <script type="text/javascript" src="/js/jquery.min.js"></script>
  28. <script type="text/javascript" src="/js/jquery.ui.js"></script>
  29. <script type="text/javascript" src="/js/base64.js"></script>
  30. <script type="text/javascript">
  31.  
  32. function make_basic_auth( user, password ) {
  33. var tok = user + ':' + password;
  34. var hash = Base64.encode(tok);
  35. return hash;
  36. }
  37.  
  38.  
  39.  
  40. function login() {
  41.  
  42. var url = '/?m=test&q=1';
  43.  
  44. var user = $('#username').val();
  45. var pass = $('#password').val();
  46.  
  47. var auth = make_basic_auth(user, pass);
  48.  
  49. $.ajax({
  50. url: url,
  51. type: "POST",
  52. data: ({
  53. login : user,
  54. password : pass
  55. }
  56. ),
  57. username: user,
  58. password: pass,
  59. beforeSend: function(req) {
  60. req.setRequestHeader('Authorization', 'Basic ' + auth );
  61. },
  62. success: function(data) {
  63. alert( data );
  64. }
  65. });
  66.  
  67. return false;
  68. }
  69.  
  70. </script>
  71. </head>
  72. <body>
  73.  
  74. <form action="/?m=test&q=1" method="post" onsubmit="return login()">
  75. <label>Username: <input type="text" name="username" id="username" /></label>
  76. <label>Password: <input type="password" name="password" id="password" /></label>
  77. <input type="submit" value="Log in" />
  78. </form>
  79.  
  80. </body>
  81. </html>
  82. <?php
  83. }
  84. ?>



A teraz o co kaman. Gdy wpiszę login: user i hasło: pass, to pojawi się w alert że jestem zalogowany itd..
Ale gdy przejde do samej podstrony oznaczonej: /?m=test&q=1 wtedy okazuje się że jednak nie jestem poprawnie zalogowany...

i jest mały problem...

Ale jeśli usunę część kodu:
beforeSend: function(req) {
req.setRequestHeader('Authorization', 'Basic ' + auth );
},

to się zaloguje, ale za to jeśli źle wpiszę login i hasło wyskoczy okienko podobne do tego:



A tego okienka chcę uniknąć.

Czy ktoś wie jak to zrobić?

Ok juz znalazłem rozwiązanie...

  1. <?php
  2.  
  3. define('USER', 'user');
  4. define('PASSWORD', 'pass');
  5.  
  6. if( isset($_GET['s']) ) {
  7.  
  8. if ( isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == USER && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] == PASSWORD ) {
  9. echo 'alert(\'Jest dostęp\');';
  10. } else {
  11. echo 'alert(\'nie ma dostępu\');';
  12. }
  13.  
  14. exit();
  15. } elseif( isset($_GET['q']) ) {
  16.  
  17. // header('WWW-Authenticate: Basic realm="Secret page"');
  18. // header('HTTP/1.0 401 Unauthorized');
  19.  
  20. if( !isset($_POST['login']) && !isset($_POST['password']) && !isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']) ) {
  21. echo 'nic nie istnieje';
  22. return false;
  23. }
  24.  
  25. if (
  26. (!isset($_POST['login']) || !isset($_POST['password']) || ($_POST['login'] != USER) || ($_POST['password'] != PASSWORD) )
  27. && (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']))
  28. ) {
  29. echo 'zle podane haslo';
  30. return false;
  31. }
  32.  
  33.  
  34. if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ) {
  35. header('WWW-Authenticate: Basic realm="Secret page"');
  36. header('HTTP/1.0 401 Unauthorized');
  37. print "Login failed!\n";
  38. } elseif ( isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == USER && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] == PASSWORD ) {
  39. echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
  40. echo "<p>You entered '{$_SERVER['PHP_AUTH_PW']}' as your password.</p>";
  41. } else {
  42. header('HTTP/1.0 400 Bad Request');
  43. echo "<p>You shall not pass!</p>";
  44. }
  45.  
  46. } else {
  47.  
  48. ?>
  49. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  50. <html lang="en">
  51. <head>
  52. <script type="text/javascript" src="js/jquery.min.js"></script>
  53. <script type="text/javascript" src="js/jquery.ui.js"></script>
  54. <script type="text/javascript" src="js/base64.js"></script>
  55. <script type="text/javascript">
  56.  
  57. function make_basic_auth( user, password ) {
  58. var tok = user + ':' + password;
  59. var hash = Base64.encode(tok);
  60. return hash;
  61. }
  62.  
  63.  
  64.  
  65. function login( frm ) {
  66.  
  67. var user = $('#username').val();
  68. var pass = $('#password').val();
  69.  
  70. $.ajax({
  71. url: frm.action,
  72. type: "POST",
  73. data: ({
  74. 'login' : user,
  75. 'password' : pass
  76. }
  77. ),
  78. username: user,
  79. password: pass,
  80.  
  81. success: function(data) {
  82. alert( data );
  83. }
  84. });
  85.  
  86. return false;
  87. }
  88.  
  89. </script>
  90. </head>
  91. <body>
  92.  
  93. <form action="?q=1" method="post" onsubmit="return login(this)">
  94. <label>Username: <input type="text" name="username" id="username" /></label>
  95. <label>Password: <input type="password" name="password" id="password" /></label>
  96. <input type="submit" value="Log in" />
  97. </form>
  98.  
  99. </body>
  100. </html>
  101. <?php
  102. }
  103. ?>