Ja, ich habe das Problem, dass ich in der URL eines HTTP POST Request (ein Trackback^^) GET-Varaibalen mitsende - getrennt durch das übliche &. Die URL sieht zB so aus: .../bla/?action=trackback&entry=16
Dazu verwende ich eine Klasse, die folgenden Code einsetzt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| // Parse the target $target = parse_url($tb);
if ((isset($target["query"])) && ($target["query"] != "")) { $target["query"] = "?" . $target["query"]; } else { $target["query"] = ""; } if ((isset($target["port"]) && !is_numeric($target["port"])) || (!isset($target["port"]))) { $target["port"] = 80; } // Open the socket $tb_sock = fsockopen($target["host"], $target["port"]); // Something didn't work out, return if (!is_resource($tb_sock)) { return '$trackback->ping: can\'t connect to: ' . $tb . '.'; exit; } // Put together the things we want to send $tb_send = "url=" . rawurlencode($url) . "&title=" . rawurlencode($title) . "&blog_name=" . rawurlencode($this->blog_name) . "&excerpt=" . rawurlencode($excerpt); // Send the trackback fputs($tb_sock, "POST " . $target["path"] . $target["query"] . " HTTP/1.1\r\n"); fputs($tb_sock, "Host: " . $target["host"] . "\r\n"); fputs($tb_sock, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($tb_sock, "Content-length: " . strlen($tb_send) . "\r\n"); fputs($tb_sock, "Connection: close\r\n\r\n"); fputs($tb_sock, $tb_send); |
$tb enhält die ganze URL.
Der Request an sich funktionier auch, nur gibt es nun Probleme im angepeilten script. Dieses kann nämlich jetzt nicht mehr auf die Get-Variable entry zugreifen. Als ich die gesamte URL vom besagten Script ausgeben lasse (mit $_SERVER['REQUEST_URI']) merke ich dass die & in HTML-Entities umgewandelt wurden: _homepage/?action=trackback&entry=16 - So ist es also logisch dass ich nicht mehr auf entry zugreifen kann.
Irgendwo müssen also die & ersetzt werden - nur wo und wie kann cih das unterbinden? Hat jm eine Idee wie man das Problem lösen kann, ohne die Konfiguration von PHP oder das Trennzeichen zu ändern?
mfg