Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

[php]paar nub fragen :f

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
oNyx
Sorlag
Sorlag
Beiträge: 3855
Registriert: Mai 2001

[php]paar nub fragen :f

Beitrag von oNyx »

also das hier is das... äh... script. wozu's konkret gut sein soll spielt nicht so wirklich ne rolle. naja... wer will kann sich das durchlesen.

ok. ich hab da drei fragen...

[#1]
[fp]preg_match("/^[0-9A-Za-z_-]+\\.jar$/", $_GET['file'], $matches)[/fp]

is das sicher? also es soll nur "*.jar" files erlauben (0-9, A-Z, a-z, '_', '-' und am ende ".jar").

[#2]
gegen ende hab ich da ne schleife, die den inhalt von na file zurückbounced. is das ok so mit der schleife oder sollte man fpassthu benutzen? ich hab die doku+kommentare von beiden sachen gelesen und bin nicht wirklich schlauer geworden (n paar meinten halt fpassthu frisst viel ram bei grossen files) :>

[#3]
irgendwo stand das man drauf achten sollte, das das lesen wirklich übers filesystem geht und nicht über http... wie stellt man das sicher?

Code: Alles auswählen

<?[br]if(!isset($_GET['file'[b][/b]][b][/b])[b][/b])[br]{[br]	not_found([b][/b]);[br]}[br][br]if (preg_match("/^[0-9A-Za-z_-[b][/b]]+\\.jar$/", $_GET['file'[b][/b]], $matches[b][/b])[b][/b])[br]{[br]	$gzip_accepted=FALSE;[br]	$pack_accepted=FALSE;[br][br]	if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'[b][/b]], "pack200-gzip"[b][/b])!==FALSE[b][/b])[br]		$pack_accepted=TRUE;[br]	if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'[b][/b]], "gzip"[b][/b])!==FALSE[b][/b])[br]		$gzip_accepted=TRUE;[br][br]	if(is_file($matches[0[b][/b]].".pack.gz"[b][/b]) AND $pack_accepted[b][/b])[br]	{[br]		send_and_die($matches[0[b][/b]].".pack.gz","pack200-gzip"[b][/b]);[br]	}[br]	elseif(is_file($matches[0[b][/b]].".gz"[b][/b]) AND $gzip_accepted[b][/b])[br]	{[br]		send_and_die($matches[0[b][/b]].".gz","gzip"[b][/b]);[br]	}[br]	elseif(is_file($matches[0[b][/b]][b][/b])[b][/b])[br]	{[br]		send_and_die($matches[0[b][/b]],NULL[b][/b]);[br]	}[br]	else[br]	{[br]		not_found([b][/b]);[br]	}[br]}[br]else[br]{[br]	not_found([b][/b]);[br]}[br][br]function send_and_die($filename,$enc[b][/b])[br]{[br]	$status = FALSE;[br]	$etag = filectime($filename[b][/b]).filesize($filename[b][/b]);[br]	$headers = getallheaders([b][/b]);[br]	if (ereg($etag, $headers['If-None-Match'[b][/b]][b][/b])[b][/b])[br]	{[br]		header('HTTP/1.1 304 Not Modified'[b][/b]);[br]	}[br]	else[br]	{[br]		if(($fp = fopen($filename, 'rb'[b][/b])[b][/b])==FALSE[b][/b])[br]			not_found([b][/b]);[br]		header("Content-Type: application/x-java-archive"[b][/b]); //this content type can be used for all versions[br]		if($enc!=NULL[b][/b])[br]			header("Content-Encoding: ".$enc[b][/b]);[br]		header("Content-Length: " . filesize($filename[b][/b])[b][/b]);[br]		header("ETag: \"{$etag}\""[b][/b]);[br]		header('Last-Modified: '.gmdate('D, d M Y H:i:s \G\M\T', filemtime($filename[b][/b])[b][/b])[b][/b]);[br]		header("Connection: close"[b][/b]);[br][br]		while(!feof($fp[b][/b]) AND (connection_status([b][/b])==0[b][/b])[b][/b])[br]		{[br]			print fread($fp, 8192[b][/b]);[br]			flush([b][/b]);[br]		}[br]		$status = (connection_status([b][/b])==0[b][/b]);[br]		fclose($fp[b][/b]);[br]	}[br]	//save the status here if you like[br]	die([b][/b]);[br]}[br][br]function not_found([b][/b])[br]{[br]	//you could do something else here, like logging and/or bouncing it back to your usual 404 page[br]	header("Status: 404 Not Found"[b][/b]);[br]	die([b][/b]);[br]}[br]?>
弾幕 to the full extent of the jam!
BildBildBildBild
ze blog [rss] ☆ java game tutorialseee games
Antworten