Parantatatam
mag Cookies & Kekse
Hallo,
ich habe mich gerade mal mit dem Thema POST per Header senden beschäftigt und habe ein kleines Programm geschrieben:
post_by_headers.php
get_headers.php
Das erzeugt folgende Ausgabe (post_by_headers.php):
Wie man schön sehen kann sind die Werte des letzten Arrays leer. In diesen sollten aber die Werte aus $_SESSION stecken. Kurze Frage: wo liegt mein Fehler? Es müsste doch eigentlich gehen? Die per POST gesendeten Daten kommen ja bei get_headers.php an und werden dort in die Session geladen, aber wenn ich sie dann aufrufe existieren sie auf einmal nicht mehr.
ich habe mich gerade mal mit dem Thema POST per Header senden beschäftigt und habe ein kleines Programm geschrieben:
post_by_headers.php
PHP:
<?php
session_start();
function PostToHost($rawurl, $data)
{
foreach($data as $key => $value)
{
if(trim($key) != '' && trim($value) != '')
{
$data_to_send .= '&'.$key.'='.$value;
}
if(substr($data_to_send, 0, 1) == '&')
{
$data_to_send = substr($data_to_send, 1);
}
}
$url = explode('//', $rawurl, 2);
$url = $url[1];
$host = explode('/', $url, 2);
$path = '/'.$host[1];
$host = $host[0];
if(!$fp = @fsockopen($host, 80))
{
echo 'Verbindungsaufbau fehlgeschlagen!';
return FALSE;
}
fputs($fp, 'POST '.$path.' HTTP/1.1'."\r\n");
fputs($fp, 'Host: '.$host."\r\n");
fputs($fp, 'Referer: '.$rawurl."\r\n");
fputs($fp, 'Content-type: application/x-www-form-urlencoded'."\r\n");
fputs($fp, 'Content-length: '.strlen($data_to_send)."\r\n");
fputs($fp, 'Connection: close'."\r\n\r\n");
fputs($fp, $data_to_send);
while(!feof($fp))
{
$res .= fgets($fp, 128);
#break;
}
fclose($fp);
return array('referer' => $rawurl, 'host' => $host, 'path' => $path, 'data' => $data_to_send, 'resource' => explode("\n", $res));
}
$data = array('username' => 'admin', 'password' => 'test');
print_r(PostToHost("http://localhost/iFramework/get_headers.php", $data));
print_r($_SESSION);
?>
PHP:
<?php
session_start();
if(!empty($_POST))
{
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
}
print_r($_SESSION);
?>
Code:
Array
(
[referer] => http://localhost/iFramework/get_headers.php
[host] => localhost
[path] => /iFramework/get_headers.php
[data] => username=admin&password=test
[resource] => Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Tue, 26 May 2009 12:12:02 GMT
[2] => Server: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8e DAV/2 PHP/5.2.5
[3] => X-Powered-By: PHP/5.2.5
[4] => Set-Cookie: PHPSESSID=35384f9fdf82c718634b91a629cdd597; path=/
[5] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
[6] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[7] => Pragma: no-cache
[8] => Content-Length: 57
[9] => Connection: close
[10] => Content-Type: text/html
[11] =>
[12] => Array
[13] => (
[14] => [username] => admin
[15] => [password] => test
[16] => )
[17] =>
)
)
Array
(
[username] =>
[password] =>
)
Wie man schön sehen kann sind die Werte des letzten Arrays leer. In diesen sollten aber die Werte aus $_SESSION stecken. Kurze Frage: wo liegt mein Fehler? Es müsste doch eigentlich gehen? Die per POST gesendeten Daten kommen ja bei get_headers.php an und werden dort in die Session geladen, aber wenn ich sie dann aufrufe existieren sie auf einmal nicht mehr.
Zuletzt bearbeitet: