webForumDet fria alternativet

Göra en "proxy"

PHP

10 svar · 470 visningar · startad av HDJHSKGDKJHSD

Medlem sedan sep. 2001147 inlägg
Frågan#1

hej!

Jag undrar om man i php, kan göra en sorts proxy-site?

Så om person X surfar in på min site finns det ett fint forumlär där han kan skriva i en adress (url).

När person X sen trycker på submit kommer URL:n upp på skärmen precis som vid vanlig surfning, FAST all information skickas genom servern.

Alltså, person X har aldrig kontakt med URL:n som skrivs in, utan bara servern...

ursäkta om jag är otydlig, hoppas ni förstår :)

Medlem sedan apr. 20007 588 inlägg
#2

Jodå, det går. Jag skulle nog helst skrivit en slags fristående proxy i Java men visst går det i PHP också.

Vill du ha mer utförlig beskrivning så får du hojta till! :)

Medlem sedan sep. 2001147 inlägg
#3

hojt hojt! :-)

Jag skulle gärna vilja veta mer, kanske du kan pusha mig in på rätt spår? ;)

eller det kanske rentav finns en färdig lösning någonstans??

Medlem sedan juni 20008 205 inlägg
#4

Med tanke på att man med fopen kan öppna webbadresser så är det hemskt enkelt. Vill man göra om alla relativa länkar så att de stämmer blir det lite mer jobb, men det är inget oövervinnerligt.

Medlem sedan sep. 2000438 inlägg
#5

jag tycker frågan borde vara

"hur kommer du ihåg ditt användarnamn?" :D

Medlem sedan maj 20002 993 inlägg
#6

Det verkade kul och göra en "proxy" så jag försökte själv! :) men varför fungerar det inte???

<?

$fp = fopen($_POST['url'],"r") or die("Kunde inte öppna filen!");
$html="";
while (!feof($fp))
	$html .= fgets($fp,filesize($_POST['url'])) or die("Kunde inte läsa filen!");

function parse_html($html) {
  $html = preg_replace ( "/http:\/\/(.*?)/is", "proxy.php?url=" . urlencode ( "\\1" ), $html );

  return $html;
}

echo parse_html($html);

?>
Medlem sedan mars 20007 896 inlägg
#7

Vad händer då? Vad får du för fel?

Medlem sedan sep. 20011 086 inlägg
#8

$html .= fgets($fp,filesize($_POST['url'])) or die("Kunde inte läsa filen!");

Från php manualen om filesize: "This function will not work on remote files; the file to be examined must be accessible via the server's filesystem"
byt ut filesize(...) mot t.ex. 1024, det borde funka bättre

Medlem sedan maj 20002 993 inlägg
#9

Ska jag använda fgets eller fread? fread läser väl hela filen medans fgets läser en rad?

Medlem sedan maj 20002 993 inlägg
#10

Ja! nu fungerar det... nästan iaf... det här med sökvägar och länkar funkar inte alls... hur gör jag så att alla bilder funkar? så att alla som är skrivna:

<img src="img/bild1.gif">

ska synnas och att alla länkar och formulär osv ska gå igenom min php sida...

Min kod:

<?

$fp = fopen($_POST['url'],"r") or die("Kunde inte öppna filen!");
$html="";
while (!feof($fp))
	$html .= fgets($fp, 1024);

fclose($fp);

function parse_html($html) {
  $html = preg_replace ( "/http:\/\/(.*?)/is", "proxy.php?url=" . urlencode ( "\\1" ), $html );

  return $html;
}

echo parse_html($html);

?>
Medlem sedan maj 20002 993 inlägg
#11

Har fortfarande inte löst det! *hjälp*

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)