Oto kod:
<?php
if( isset($_GET['q']) ) {
if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ) { header('WWW-Authenticate: Basic realm="Secret page"'); header('HTTP/1.0 401 Unauthorized'); } elseif ( isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == USER
&& isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] == PASSWORD
) { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>You entered '{$_SERVER['PHP_AUTH_PW']}' as your password.</p>"; tbl($_POST);
} else {
header('HTTP/1.0 400 Bad Request'); echo "<p>You shall not pass!</p>"; }
} else {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/jquery.ui.js"></script>
<script type="text/javascript" src="/js/base64.js"></script>
<script type="text/javascript">
function make_basic_auth( user, password ) {
var tok = user + ':' + password;
var hash = Base64.encode(tok);
return hash;
}
function login() {
var url = '/?m=test&q=1';
var user = $('#username').val();
var pass = $('#password').val();
var auth = make_basic_auth(user, pass);
$.ajax({
url: url,
type: "POST",
data: ({
login : user,
password : pass
}
),
username: user,
password: pass,
beforeSend: function(req) {
req.setRequestHeader('Authorization', 'Basic ' + auth );
},
success: function(data) {
alert( data );
}
});
return false;
}
</script>
</head>
<body>
<form action="/?m=test&q=1" method="post" onsubmit="return login()">
<label>Username: <input type="text" name="username" id="username" /></label>
<label>Password: <input type="password" name="password" id="password" /></label>
<input type="submit" value="Log in" />
</form>
</body>
</html>
<?php
}
?>
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...
<?php
if( isset($_GET['s']) ) {
if ( isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == USER
&& isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] == PASSWORD
) { echo 'alert(\'Jest dostęp\');'; } else {
echo 'alert(\'nie ma dostępu\');'; }
} elseif( isset($_GET['q']) ) {
// header('WWW-Authenticate: Basic realm="Secret page"');
// header('HTTP/1.0 401 Unauthorized');
if( !isset($_POST['login']) && !isset($_POST['password']) && !isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']) ) { return false;
}
if (
(!isset($_POST['login']) || !isset($_POST['password']) || ($_POST['login'] != USER
) || ($_POST['password'] != PASSWORD
) ) && (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])) ) {
return false;
}
if( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ) { header('WWW-Authenticate: Basic realm="Secret page"'); header('HTTP/1.0 401 Unauthorized'); } elseif ( isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] == USER
&& isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] == PASSWORD
) { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>You entered '{$_SERVER['PHP_AUTH_PW']}' as your password.</p>"; } else {
header('HTTP/1.0 400 Bad Request'); echo "<p>You shall not pass!</p>"; }
} else {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.js"></script>
<script type="text/javascript" src="js/base64.js"></script>
<script type="text/javascript">
function make_basic_auth( user, password ) {
var tok = user + ':' + password;
var hash = Base64.encode(tok);
return hash;
}
function login( frm ) {
var user = $('#username').val();
var pass = $('#password').val();
$.ajax({
url: frm.action,
type: "POST",
data: ({
'login' : user,
'password' : pass
}
),
username: user,
password: pass,
success: function(data) {
alert( data );
}
});
return false;
}
</script>
</head>
<body>
<form action="?q=1" method="post" onsubmit="return login(this)">
<label>Username: <input type="text" name="username" id="username" /></label>
<label>Password: <input type="password" name="password" id="password" /></label>
<input type="submit" value="Log in" />
</form>
</body>
</html>
<?php
}
?>