Zum Inhalt springen

Link verschlüsseln

Erstellt am 17. Mai 2006 · 8 Antworten · letzte Antwort am 22. Mai 2006

Tags: Frage

cyberworks ·

Hallo liebes Forum,

ich benötige bei einer Website Link-Verschlüsselung.
Die links sollen sozusagen nur einmal gültig und verschlüsselt sein.
Wenn möglich, sollen diese auch nach einer vorgegebenen Zeit ablaufen.

kann mir da jemand einen Tipp geben wie das funktioniert?!

Vielen Dank
Alex

cyberworks ·

Hi Ford,

naja - wenn man zB jumpurl.Secure=1 setzt, dann wird ja auch ein link erzeugt, der etwas "komisch" aussieht!

Verschlüsseln meine ich so:
Der link soll die eigentliche Adresse nicht zeigen, soll an eine Session gekoppelt sein und soll nach einem "Ablaufdatum" wieder gelöscht werden.

Hast da vielleicht eine Idee? Wäre Obersuperst 😉

LG Alex

FordPrefect ·

Hi,

willst du diesen im RTE verwenden oder kann das aus einer Extension heraus passieren. wenn 2. dann eine extension proggen.

Gruss

Ford

cyberworks ·

kann ruhig aus einer Extension raus passieren.
Aber wie soll ich das angehen - ich meine, wie verschlüsselt man solche links? Kannst mir da noch nen Tipp geben?

Danke

LG Alex

FordPrefect ·

Hi,

folgende Annahmen:

Du hast eine Extension angelegt die eine Datenbank umfasst in welcher die Downloads als Datensätze abgelegt sind, wie z.B. News.

So, du legst im Kickstarter die Tabelle an und kannst da Dateien aus dem Fileadmin angeben, einen Linktitel sowie eine kurze Beschreibung und das Datum wenn der Link abgelaufen sein soll.

So, dann erstellst du über den Kickstarter in der selben Extension ein Plugin. Die funktionalität musst du nun im Plugin programmieren.

du liest die Datenbank aus und erstellst anhand der ID einen link. Anhand der übergebenen id liest du aus der datenbank den Dateinamen aus und gibst die Datei per PHP aus. Musst header und so setzten. Und prüfst natürlich ob der Link noch gültig ist.

Sorry das das ein wenig kauderwelsh geschreiben ist, hope you understand.

Gruss

Ford

cyberworks ·

perfect - indeed, it helps! :p

Super, jetzt hab ich mal eine Grundlegende Idee wie ich's angehen kann.
Hast du zufällig schon mal sowas in der Richtung umgesetzt?

cheers
-alex

FordPrefect ·

Hi,

jup, hab ich, als Hilfestellung post ich mal den Code für den Download, der Rest ist EasyPHP.

// Dateityp, der immer abgespeichert wird
		if(isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])) {
			// IE Bug in download name workaround
			@ini_set( 'zlib.output_compression','Off' );
		} 
		
		$file_extension = strtolower(substr(strrchr($fileName[(count($fileName)-1)],"."),1));
		
		$ctype="application/force-download";
		
		@ob_end_clean();		
		//Begin writing headers
   		header("Pragma: public");
   		header("Expires: 0");
   		header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
		header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 
  		header("Cache-Control: public");
   		header("Content-Description: File Transfer");
		header("Content-Type: ".$ctype."");
		
		// change, added quotes to allow spaces in filenames, by Rajkumar Singh
		
		if(!strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 5."))
			header("Content-Disposition: attachment; filename=\"".$fileName[(count($fileName)-1)]."\";" );
		else
			header("Content-Disposition: inline; filename=\"".$fileName[(count($fileName)-1)]."\";" );
				
		header("Content-Transfer-Encoding: binary");
   		header("Content-Length: ".filesize($file));
				
		#readfile($file);
		
		if ($fp = fopen($file, 'rb')) {
		 while(!feof($fp) and (connection_status()==0)) {
		 	print(fread($fp, 1024*8-));
		 	flush();		        
		 }
		 fclose($fp);
		}
		exit;

Muß man an machen stellen anpassen

Gruss

Ford