Externen Seiteninhalt anzeigen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfrage
aufgeben
betteln
code
eigene domain
folgenden code
formular
gecko
header
http
parameter
post
probier
problem
server
session
setzen
type
url
windows
-
Hallo,
Ich habe ein etwas spezielles Sproblem:
Ich besitze ein Formular das auf meinedomain.tld/hallo.php liegt (dieses Forumular sendet die eingegebenen Daten per "POST") die auswertung erfolgt aber auf meinedomain2.tld/echo.php.
Gibt es eine möglichkeit die ausgabe von meinedomain2.tld/echo.php auf meinedomain.tld/hallo.php (oder auch meinedomain.tld/etwasandes.php) zu übertragen?
Ich bedanke mich schon jetzt für Eure hilfe.
LG
Beitrag zuletzt geändert: 3.5.2012 18:26:59 von gatterer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Natürlich gibt es diese Möglichkeit, das nennt sich dann "Proxy". Solange sich das auf deine eigene Domain beschränkt passt das, komm aber ja nicht auf die Idee das zu missbrauchen, da das dann gegen die AGB verstößt.
Brauchst du auch einen PHP-Code als Beispiel? -
hackyourlife schrieb:
Natürlich gibt es diese Möglichkeit, das nennt sich dann "Proxy". Solange sich das auf deine eigene Domain beschränkt passt das, komm aber ja nicht auf die Idee das zu missbrauchen, da das dann gegen die AGB verstößt.
Brauchst du auch einen PHP-Code als Beispiel?
Ja bitte, das währe sehr nett.
Ist eigendlich nicht meine Art nach Coden betteln .
Danke!
PS: Die ausgabe ist je nach gesendeten inhalt anders. Auch eine Captcha ist im "POST" enthalten. -
gatterer schrieb:
Also mal ein Beispielcode:
Ja bitte, das währe sehr nett.
Ist eigendlich nicht meine Art nach Coden betteln .
Um auch POST zu testen kannst du mit dem Tool hier POST-Anfragen an das Script senden...<?php $url = 'http://www.hackyourlife.tk/parameters.php'; // GET-Parameter übernehmen if(strlen($_SERVER['QUERY_STRING']) != 0) $url .= '?' . $_SERVER['QUERY_STRING']; $curl = curl_init($url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER , true); curl_setopt($curl, CURLOPT_REFERER, $url); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'); if(count($_POST) != 0) { // POST-Parameter übernehmen curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST); } $data = curl_exec($curl); $type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); curl_close($curl); header('Content-Type: '.$type); echo($data); ?>
Cookies usw kannst du so nicht setzen... -
hackyourlife schrieb:
Cookies usw kannst du so nicht setzen...
Hallo,
Erstmahls Danke,
Leider hate ich noch probleme beim übertragen der Captcha. Leider ist diese immer falsch.
Gibt es dort überhaupt eine Lösungsmöglichkeit?
-
Ich nutz immer session dafür ...
dok1.php bekommt eine session-anfrage reingeworfen und verwendet die Session-Variablen, wenn vorhanden.
dok2.php als Ziel des Formulares schiebt die (gebrauchten) Ergebnisse in die jeweiligen Session-Variablen, dann stehen sie später auch im dok1 zur Verfügung.
edit
Jupp, das geht ja doch nciht bei domain1 zu domain2 ... sorry.
Beitrag zuletzt geändert: 4.5.2012 18:57:39 von sonok -
sonok schrieb:
Hast du auch den Anfang durchgelesen? Es geht darum eine Seite auf eine andere zu proxien, sodass eine Seite unter einem anderen Namen und auf einer anderen Domain verfügbar wird.
Ich nutz immer session dafür ...
gatterer schrieb:
Natürlich...
Leider hate ich noch probleme beim übertragen der Captcha. Leider ist diese immer falsch.
Gibt es dort überhaupt eine Lösungsmöglichkeit?
Probier einfach folgenden Code aus:<?php $url = 'http://www.hackyourlife.tk/parameters.php'; if(strlen($_SERVER['QUERY_STRING']) != 0) $url .= '?' . $_SERVER['QUERY_STRING']; // build request headers $requestheaders = apache_request_headers(); $curlheaders = array(); foreach($requestheaders as $name => $value) { // filter headers switch(strtolower($name)) { case 'accept-encoding': case 'connection': case 'content-length': case 'content-encoding': case 'content-type': case 'host': case 'keep-alive': case 'server': case 'user-agent': break; default: $curlheaders[] = "$name: $value"; } } $curl = curl_init($url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER , true); curl_setopt($curl, CURLOPT_REFERER, $url); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'); curl_setopt($curl, CURLOPT_HTTPHEADER, $curlheaders); curl_setopt($curl, CURLOPT_HEADER, true); if(count($_POST) != 0) { curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST); } $data = curl_exec($curl); $type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); curl_close($curl); // split header and contents $endofheader = strpos($data, "\r\n\r\n"); $size = 4; if($endofheader === false) { $endofheader = strpos($data, "\n\n"); $size = 2; } $header = substr($data, 0, $endofheader); $data = substr($data, $endofheader + $size); header('Content-Type: ' . $type); // set response headers $headerfields = explode("\n", $header); header(trim($headerfields[0])); for($i = 1; $i < count($headerfields); $i++) { $pos = strpos($headerfields[$i], ':'); $name = trim(substr($headerfields[$i], 0, $pos)); $value = trim(substr($headerfields[$i], $pos + 1)); // filter headers switch(strtolower($name)) { case 'connection': case 'content-length': case 'content-encoding': case 'content-type': case 'keep-alive': case 'server': break; default: header("$name: $value"); } } echo($data); ?>
-
hackyourlife schrieb:
gatterer schrieb:
Leider hate ich noch probleme beim übertragen der Captcha. Leider ist diese immer falsch.
Gibt es dort überhaupt eine Lösungsmöglichkeit?
Natürlich...
Probier einfach folgenden Code aus:
Nun läd die Seite und bricht nach etwas warten ab.
Resultat: weisse Seite PHP-Error Reporting giebt nichts aus.
Kann es eventwell daran liegen dass einen PHP-Session beim zurückgeben des Formulare generiert wird.
Der andere Server weist auf jeden fall die Anfrage nicht zurück.
Ich hoffe du weisst dazu was, sonst muss ich das ganze aufgeben oder nach einer altenative suchen.
-
gatterer schrieb:
Der Grund: das Proxy-Script gibt einen Header weiter, der nicht weitergegeben werden darf. Dabei handelt es sich um
Nun läd die Seite und bricht nach etwas warten ab.
Resultat: weisse Seite PHP-Error Reporting giebt nichts aus.
Kann es eventwell daran liegen dass einen PHP-Session beim zurückgeben des Formulare generiert wird.
Der andere Server weist auf jeden fall die Anfrage nicht zurück.
. Deshalb braucht es auch einige Sekunden bis die Seite abbricht zu laden...Transfer-Encoding
gatterer schrieb:
Aufgeben musst du noch lange nicht... es gibt ja noch viele Möglichkeiten
Ich hoffe du weisst dazu was, sonst muss ich das ganze aufgeben oder nach einer altenative suchen.
Also der ausgebesserte Code:
So sollte es endlich funktionieren...<?php $url = 'http://example.org/register.php'; if(strlen($_SERVER['QUERY_STRING']) != 0) $url .= '?' . $_SERVER['QUERY_STRING']; // build request headers $requestheaders = apache_request_headers(); $curlheaders = array(); foreach($requestheaders as $name => $value) { // filter headers switch(strtolower($name)) { case 'accept-encoding': case 'connection': case 'content-length': case 'content-encoding': case 'content-type': case 'host': case 'keep-alive': case 'server': case 'user-agent': break; default: $curlheaders[] = "$name: $value"; } } $curl = curl_init($url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER , true); curl_setopt($curl, CURLOPT_REFERER, $url); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'); curl_setopt($curl, CURLOPT_HTTPHEADER, $curlheaders); curl_setopt($curl, CURLOPT_HEADER, true); if(count($_POST) != 0) { curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST); } $data = curl_exec($curl); $type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); curl_close($curl); // split header and contents $endofheader = strpos($data, "\r\n\r\n"); $size = 4; if($endofheader === false) { $endofheader = strpos($data, "\n\n"); $size = 2; } $header = substr($data, 0, $endofheader); $data = substr($data, $endofheader + $size); header('Content-Type: ' . $type); // set response headers $headerfields = explode("\n", $header); header(trim($headerfields[0])); for($i = 1; $i < count($headerfields); $i++) { $pos = strpos($headerfields[$i], ':'); $name = trim(substr($headerfields[$i], 0, $pos)); $value = trim(substr($headerfields[$i], $pos + 1)); // filter headers switch(strtolower($name)) { case 'connection': case 'content-length': case 'content-encoding': case 'content-type': case 'keep-alive': case 'transfer-encoding': case 'server': break; default: header("$name: $value"); } } echo($data); ?>
Ob die Session für dein Captcha auch richtig erstellt wird weiß ich nicht, du könntest aber im Zweifelsfall das Captcha ebenfalls proxien, dann stimmt die Session auch sicher zusammen.
Edit (by thoba): URL anonymisiert.
Beitrag zuletzt geändert: 4.5.2012 19:57:56 von thoba -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage