Witajcie.
Ostatnio zachciało mi się stworzenia nakładki na logowanie do webmaila.
Nakodziłem takie coś:
<?php
ob_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Poczta - krolnet.pl Programowanie, webmastering, bazy danych. Artykuły, gotowce, tutoriale</title>
<link rel="stylesheet" href="http://www.krolnet.pl/errors/style.css" type="text/css" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<div id="cialo">
<img src="logo.jpg" alt="Logo krolnet.pl Programowanie, webmastering, bazy danych. Delphi, Logo, VB .Net">
<h1>Poczta krolnet.pl</h1>
<div id="tresc">
<?php
function formularz() {
print '<div style="padding: 15px; width:260px;">
<table border="0" width="100%">
<tr>
<td>
<form action="index.php" method="post">
Login:<br />
<input type="text" name="login_username" /><br />
Hasło: <br />
<input type="password" name="secretkey" /><br />
<input type="hidden" name="js_autodetect_results" value="SMPREF_JS_OFF" />
<input type="hidden" name="just_logged_in" value="1" />
<input type="submit" value="Logowanie" name="wyslij"/>
</form>
</td>
<td>
<img src="key.png" alt="Poczta">
</td>
</tr>
</table>';
}
if (isset($_POST['wyslij'])) {
$fp = fsockopen("s19.vdl.pl", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$host = 's19.vdl.pl';
$path = '/squirrelmail/src/redirect.php';
$post = 'login_username='.$_POST['login_username'].'&secretkey='.$_POST['secretkey'].'&js_autodetect_results=SMPREF_JS_OFF&just_logged_in=1';
$pack = "POST $path HTTP/1.0\r\n";
$pack .= "Host: $host\r\n";
$pack .= "User-Agent: Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
$pack .= "Referer: $host\r\n";
$pack .= "Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7\r\n";
$pack .= "Content-Type: application/x-www-form-urlencoded\r\n";
$pack .= "Content-length: " . strlen($post) . "\r\n\r\n";
$pack .= "$post\r\n";
$pack .= "Connection: Keep-Alive\r\n\r\n";
fwrite($fp, $pack);
while (!feof($fp)) {
$strona .= fgets($fp, 128);
}
print $strona;
fclose($fp);
if (strstr($strona, 'Musisz by')) {
print '<span style="color: Red;">Wystąpił błąd sesji.</span>';
formularz();
} else
if (strstr($strona, 'Nieznany u')) {
print '<span style="color: Red;">Wprowadzone dane są błędne.</span>';
formularz();
} else {
///header('s19.vdl.pl');
//header('');
header('Host: s19.vdl.pl');
header('POST /squirrelmail/src/redirect.php HTTP/1.1');
//header('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4');
//header('Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5');
header('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7');
header('Keep-Alive: 300');
header('Connection: keep-alive');
//header('Referer: http://www.krolnet.pl/');
header('Content-Type: application/x-www-form-urlencoded\r\n');
header('Content-Length: '.strlen($post).'\r\n');
header($post);
header('Location: http://s19.vdl.pl/squirrelmail/src/redirect.php');
}
}
} else {
formularz();
}
?>
</div>
<div style="text-align: right; font-size: 8pt; font-style: Italic;">© Copyright 2008 by <a href="http://www.krolnet.pl">krolnet.pl</a></div>
</div>
</div>
</body>
</html>
<?php
ob_flush();
?>
I teraz w czym problem? W przekierowaniu. Skrypt rozpoznaje błędy. Złe dane, sesja itd.
Ale ma problem z przekierowaniem. Jeżeli dane są poprawne skrypt wywołuje adres:
http://s19.vdl.pl/squirrelmail/src/redirect.php
Jednak znowu otrzymuje komunikat, że wymagane jest zalogowanie. Czyli nie przekazuje tych danych, które powinien. Ktoś wie w czym błąd zrobiłem?