Autor Beitrag
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Mi 30.05.07 22:23 
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:
ausblenden 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
Pepe
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 107

Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
BeitragVerfasst: Do 31.05.07 09:44 
warum sendest du denn nicht alles über post?
Fabian W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Do 31.05.07 10:10 
Du meinst auch entry o.ä.? Das kann ich mir nicht aussuchen, schließlich muss ich trackbacks überall hinsenden können und so wären dann alle ausgeschlossen, die solche queries verwenden.
-> Am Empfängerscript kann ich nichts ändern (weil das ja garnicht von mir ist, das is ja dann irgendeines vom Empgänger)
-> An der URL kann ich nichts ändern, die wird mir ja auch vorgegeben vom jeweilen Blogsystem
-> Das einzige was ich in der Hand habe ist die Art des Senden des Trackbacks
Pepe
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 107

Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
BeitragVerfasst: Do 31.05.07 10:18 
sry, hab gerade erst verstanden, was nen trackback ist :D

aber vielleicht helfen dir die funktionen
urlencode und urldecode weiter :)
Fabian W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Do 31.05.07 10:31 
Naja, ich habe mir $target["query"] kurz vor dem Senden ausgeben lassen und ausgegeben wird schon ein & als HTML-Sonderzeichen (&). Anscheinend wir aber irgendwann nochmal eines hinzugefügt. urldecode hba ich mal ausprobiert tut aber nicht..
Ich bin im Moment etwas hilflos, da ich nicht weiß wie und wo ich suchen könnte...
Vlt hatte jm schonmal das gleiche Problem??
Fabian W. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Do 31.05.07 12:33 
Konnte das Problem lösen - ich mache einfach mit htmlspecialchars_decode($url) die Entities raus, woher sie kommen weiß ich zwar immer noch nicht, aber das is ja auch egal jetzt^^