# PHP-Code -> Java



## Guest (11. Mai 2006)

Hallo, kann mir bitte jemand dieses PHP-Script in Java (kein javascript) umschreiben? 

Vielen Dank schon mal 


```
$cont = "";
$arrext = array("gif"=>"image/gif","jpg"=>"image/jpeg","png"=>"image/png");
$url = strtolower($_GET['url']);
$exit = strrpos($url,".");
$accext = substr($url,$exit+1);
if($accext!="" && $arrext[$accext]>"")
{
	$fp = @fopen ($_GET['url'], "r");
	if($fp)
	{
		while(!feof($fp))
	   {
	       $cont.= fread($fp,1024);
	   }
	   fclose($fp);
	  header("Content-type: ".$arrext[$accext]);
	  header("Content-length: ".strlen($cont));
		echo $cont;
	}
}
```


----------



## SebiB90 (11. Mai 2006)

was willste haben? ein applet oder ne jsp seite?


----------



## Gast (11. Mai 2006)

weder noch ^^

ganz normale java applikation, die mittels "java Filename" gestartet wird und mit "main()" als startfunktion arbeitet.


----------



## Leroy42 (11. Mai 2006)

:shock: 
Wenn ich mir diesen Code so ansehe, weiß ich wieder,
warum ich das nicht können will.


----------



## SamHotte (11. Mai 2006)

Ich weiß nicht mehr, wer das mal gesagt hat, aber es ist ein schöner Spruch: "A poor programmer can write bad code in any language" ;-)


----------



## SebiB90 (11. Mai 2006)

irgendwie sehe ich den nutzen nicht, es wird einfach eine datei besser gesagt bild angezeigt bei diesem php code
machste einfach ne klasse die ein frame erstellt dann per imageio das entsprechende bild ließt, dieses als imageicon auf nen label klascht und dieses label einfach zentriert auf dem frame platzieren


----------



## Illuvatar (11. Mai 2006)

Mal wörtliches übersetzen probieren...


```
String cont = ""; 
Map<String,String> arrext = new Hashmap();
arrext.put ("gif", "image/gif");
arrext.put ("jpg", "image/jpeg");
arrext.put ("png", "image/png"); 
String url = something.getStringFromSomewhere().toLowerCase();
int exit = url.indexOf("."); 
String accext = url.substring(exit+1); 
if(exit >= 0 && !accext.equals("") && arrext.get(accext) != null) 
{ 
   InputStream fp = null;
   try{
      fp = new URL (url).openStream();
   }catch (Exception e){e.printStackTrace())}
   if(fp != null) 
   {
      String cont = "";
      int len;
      byte[] buf = new byte[1024]; 
      while((len = fp.read(buf)) >= 0) 
      { 
          cont += new String (buf, 0, len); 
      } 
     fp.close(); 
     //Headerzeugs fällt ja wohl weg?
     something.echo (cont);
   }
}
```


----------



## SebiB90 (11. Mai 2006)

die direkte übersetzung bringts ja nicht wirklich, laufen tut sie jedenfalls nicht mit deinem something
aber ich frag mich was der thread ersteller vor hat ???:L 
selbst das php script ist eigentlich unsinnig wieso das bild auslesen und dann in der php datei wieder als normales bild ausgeben? wie wärs mit direktem zugriff auf das bild.
und wie soll die darstellung mit dem java programm sein, inner konsole gehts ja wohl schlecht da kann man kein header senden und dann bild anzeigen lassen.


----------



## Guest (12. Mai 2006)

nunja, dsa script soll den referer eines bildes "blockieren", das heißt wenn das bild z.b. in einem chat gepostet wird, der über eine sessionid läuft, dann würde der referer (mit der sessionid natürlich) an den server übergeben werden. und somit könne man anhand der sessionid (die man nun in den serverlogs stehen hat) schaden anrichten.


----------



## Illuvatar (12. Mai 2006)

Ich sehe den Zusammenhang mit Java leider immer noch nicht, außer du willst - aber das hasst du oben verneint - eine JSP Seite machen.


----------



## Guest (12. Mai 2006)

also der chatserver ist in java geschrieben, und ich will nicht immer dazu noch extra ein php script laufen lassen, deswegen möchte ich gerne das in den chatserver integrieren  kein JSP und kein Servlet und ersrecht kein Aplett


----------



## Leroy42 (12. Mai 2006)

Also der Chatserver ist eine _Java-Applikation_ auf dem Server, der die Clients bedient.
Geschnallt   
Aber unter was laufen die Clients? In einem Browser? Dann frage ich mich, wer wie wo wann
die bisherige PHP-Seite aufruft und wo dieses Bild angezeigt wird  ???:L 
Das müssten wir zur Umsetzung schon wissen.


----------



## Guest (13. Mai 2006)

das bild wurde im chat aufgerufen (die ausgabe ist html). es sah bisher so aus: 
	

	
	
		
		

		
			





 Einen Client gibt es nicht, da es sich um einen WebChat handelt.


----------



## Illuvatar (13. Mai 2006)

Aha... ich glaube ganz langsam dämmerts mir, was du uns hier mitteilen willst 
Nochmal zusammenfassend:
_Du hast einen Chatserver, der ist eine Java-Applikation. Die Clients dazu laufen im Browser, ich vermute mal per Ajax, DHTML etc.
In dem Chat können die Clients jetzt Bilder (Smilies oder so?) verwenden. Du willst verhindern, dass jemand direkt auf diese zugreifen kann und loggen, wer den ansonsten darauf zugreift. Bisher machst du das per PHP-Script. Du willst das aber mit in den Chatserver integrieren._
Also:
1. Das was du bisher machst, ist ja so wie ich es verstehe, etwas sinnlos... Was hindert den pösen Bilderdirektverlinker daran, statt der PHP-Seite auf den Teil hinter dem ?url= zu verlinken?
2. Die einzige sinnvolle Lösung, das in den Chatserver zu integrieren, sehe ich darin, bei diesem einen weiteren Port zu öffnen, z.B. 83, hinter dem ein eigener kleiner Webserver steht, der dann das Bild zurückgibt oder auch nicht. Das was diesem Server übergeben wird, sollte aber (siehe 1.) vllt besser nicht die URL sein, sondern etwas, woraus der die URL zusammensetzen kann. Dre Link wäre dann vllt. irgendwie so: <img src="http://www.bla.de:83/BILD1>
3. Ich hätte gedacht, das kann man vielleicht auch im eigentlichen Server (auf dem die Bilder liegen), per htaccess oder so regeln? Oder hast du über den gar keine Kontrolle?


----------



## Gast (13. Mai 2006)

mh, du hast mich immer noch nicht richtig verstanden 

also es geht darum, es gibt einen befehl namens /p url mit dem die user ein bild in den chat posten können, und das was die als url eingeben, wird im chat dann als bild ausgegeben, das heißt, die müssen ja nicht den ganzen html code angeben sondern eben nur /p http://.../bild.jpg also wäre es nicht machbar vom user, dort das php script, also url= zu entfernen. Und das script soll nich dazu dienen, um bilder zu klauen zu verhindern, sondern nur, dass der referer nicht an den server übermittelt wird, von dem das bild geholt wird. denn sonst könnte man die sessionid des users (die übrigens in der url von chat ausgabe drinne ist (http://...../CHAT?user=bla&sessionid=234234234)) wenn jemand an diese sessionid rankommt, kann er ja diesen user "steuern"... ich hoffe ich konnte mich jetzt klarer ausdrücken


----------



## Illuvatar (13. Mai 2006)

Aha, ich glaube, ja... aber Punkt 2 von meinem Post oben stimmt ja eigentlich immer noch


----------

