MozillaPL.org - polskie centrum Mozilli

Główne menu:

php-proxy na katalogu

Jak tworzyć strony WWW zgodnie ze standardami

Moderator: Pomocy?!

php-proxy na katalogu

Postautor: Grzegorz » 20 lutego 2014, 19:19

Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0

Cześć

Chciałbym wyświetlać treść strony www z adres http://www.page1.domain1.com/ jako podstrona (nie poddomena), np.: http://www.page2.domain2.com/page1/.

Niestety moi dostawcy hostingu nie zezwalają na stosowanie ProxyPassReverse w .htaccess (wymaga mod_proxy), który ja sądzę pozwalałby na realizację powyższego pomysłu.

Pomyślałem, że można by to zrobić też za pomocą php-proxy. Bez problemów jestem w stanie "proksować" całość domeny2 w domenie1.

.htaccess pisze:Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]


index.php pisze:<?php
/*
* Author - Rob Thomson <rob@marotori.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/

session_start();
ob_start();

/* config settings */
$base = "www.page1.domain1.com"; //set this to the url you want to scrape
$ckfile = '/tmp/simpleproxy-cookie-'.session_id(); //this can be set to anywhere you fancy! just make sure it is secure.



/* all system code happens below - you should not need to edit it! */

//work out cookie domain
$cookiedomain = str_replace("http://www.","",$base);
$cookiedomain = str_replace("https://www.","",$cookiedomain);
$cookiedomain = str_replace("www.","",$cookiedomain);

$url = $base . $_SERVER['REQUEST_URI'];

if($_SERVER['HTTPS'] == 'on'){
$mydomain = 'https://'.$_SERVER['HTTP_HOST'];
} else {
$mydomain = 'http://'.$_SERVER['HTTP_HOST'];
}

// Open the cURL session
$curlSession = curl_init();

curl_setopt ($curlSession, CURLOPT_URL, $url);
curl_setopt ($curlSession, CURLOPT_HEADER, 1);


if($_SERVER['REQUEST_METHOD'] == 'POST'){
curl_setopt ($curlSession, CURLOPT_POST, 1);
curl_setopt ($curlSession, CURLOPT_POSTFIELDS, $_POST);
}

curl_setopt($curlSession, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curlSession, CURLOPT_TIMEOUT,30);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt ($curlSession, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($curlSession, CURLOPT_COOKIEFILE, $ckfile);

//handle other cookies cookies
foreach($_COOKIE as $k=>$v){
if(is_array($v)){
$v = serialize($v);
}
curl_setopt($curlSession,CURLOPT_COOKIE,"$k=$v; domain=.$cookiedomain ; path=/");
}

//Send the request and store the result in an array
$response = curl_exec ($curlSession);

// Check that a connection was made
if (curl_error($curlSession)){
// If it wasn't...
print curl_error($curlSession);
} else {

//clean duplicate header that seems to appear on fastcgi with output buffer on some servers!!
$response = str_replace("HTTP/1.1 100 Continue\r\n\r\n","",$response);

$ar = explode("\r\n\r\n", $response, 2);


$header = $ar[0];
$body = $ar[1];

//handle headers - simply re-outputing them
$header_ar = split(chr(10),$header);
foreach($header_ar as $k=>$v){
if(!preg_match("/^Transfer-Encoding/",$v)){
$v = str_replace($base,$mydomain,$v); //header rewrite if needed
header(trim($v));
}
}

//rewrite all hard coded urls to ensure the links still work!
$body = str_replace($base,$mydomain,$body);

print $body;

}

curl_close ($curlSession);


?>


Chciałbym, aby php-proxy serwowało treści z http://www.page1.domain1.com/* nie pod adresem http://www.page2.domain2.com/*, tylko pod http://www.page2.domain2.com/page1/*.

Z PHP jestem noga, więc liczę na czyjąś pomoc :) Ma ktoś pomysł na rozwiązanie problemu?
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Odp: php-proxy na katalogu

Postautor: Mirek » 10 kwietnia 2014, 21:21

Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0

Czy pytanie nadal aktualne?
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37

Odp: php-proxy na katalogu

Postautor: Grzegorz » 18 maja 2014, 13:42

Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0

Niestety, ciągle aktualne. Nie posunąłem się w tym temacie ani o jotę.
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Odp: php-proxy na katalogu

Postautor: Mirek » 09 listopada 2014, 00:42

Przeglądarka: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0

@Grzegorz - Jakoś przeoczyłem Twoją odpowiedź - w wolnej chwili wygrzebię dane ze starego komputera lub z backupu, bo kiedyś miałem skrypt (b. podobny do tego php-proxy), który działał dokładnie tak jak opisujesz.
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37

Odp: php-proxy na katalogu

Postautor: Grzegorz » 09 listopada 2014, 17:57

Przeglądarka: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0

Świetnie - czekam, bo problem ciągle aktualny ;)
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33


Wróć do Tworzenie stron WWW

Kto jest online

Zarejestrowani użytkownicy: dexter, Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: