• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

pdf anzeige, kein direkt aufruf über url möglich

LLHELBIG

New member
Hallo,

vllt könnt ihr mir hier weiter helfen. Und zwar, habe ich ein dynamic js tree, dieser enthält links zu pdf dokumenten diese werden in der Multibox (Lightbox) angezeigt. Wie kann ich unterbinden, dass jemand den Link zu dieser PDF kopiert und an jemanden verschickt und dieser dann diese pdf über den link öffnen kann??

hier mal der code:
Code:
function files($sifaba) {
$kndnr = $_SESSION["kndnr"];

$i = 1;



//echo $kndnr;
echo '<script type="text/javascript">';
echo "	d = new dTree('d');";		
switch($sifaba) {

case "Sifa":
	echo "d.add(0,-1,'  Arbeitssicherheit');\n";
	break;
case "BA":
	echo "d.add(0,-1,'  Arbeitsmedizin');\n";
	break;

}



$query = "Select * from public.files_zuordnung";
$result = pg_query($query);
while ($row = pg_fetch_row($result)) {

	echo "d.add(".$i.",0,'".$row[1]."','','','','img/gruen.gif','img/rot.gif');\n";
	$i++;

}

		

	
	$query = "Select * from public.files where kundennr = $kndnr and sifaba = '$sifaba'";
	$result = pg_query($query);	
	while ($row = pg_fetch_row($result)) {
	$src = $row[3];
	
	/*
	
	####### $src umwandeln bzw, string splitten für Anzeigenamen #########
	
	*/
	
	
	
	$name = $src;
	$name = split("/", $name);
	
		
	$data_name = substr($name[4],0,-4);
	$data_endung = substr($name[4], -4);
	
	if($data_endung == ".___")
	{
	
		$name[4] = $data_name;
		$src = "";
		
		$icon = 'img/meeting.gif';
	
	}
	
	
	
	
	
	//###################################################################
	
	
	$j = 4;
		for($j; $j <= 22; $j++)
		{
		
			if($row[$j] == true)
			{
				$j_temp = $j-3;
				if(!empty($icon))
				{
					echo "d.add(".$i.",". $j_temp .",'".$name[4]."','".$src."','','','".$icon."');\n";
				}
				else
				{
					echo "d.add(".$i.",". $j_temp .",'".$name[4]."','".$src."');\n";
				}	
			}
				
		
		}
	
		if(!empty($icon))
		{
			echo "d.add(".$i.",1,'".$name[4]."','".$src."','','','".$icon."');\n";
		}
		else
		{
			echo "d.add(".$i.",1,'".$name[4]."','".$src."');\n";
		}
		$icon = "";
		$i++;
		
	}



	/*	echo "
		d.add(2,0,'2 Erstbegehung','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(3,0,'3 Folgebegehung','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(4,0,'4 Abarbeitung von Revisionsberichten','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(5,0,'5 Gefährdungs- und Belastungsbeurteilung','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(6,0,'6 Bildschirmarbeitsplatz - Analyse','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(7,0,'7 Gefahrstoffmanagement','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(8,0,'8 Unterweisungsorganisation / notwendige Betriebsanweisungen','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(9,0,'9 Aufbau der Erste-Hilfe-Organisation','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(10,0,'10 Aufbau der internen Brandschutzorganisation','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(11,0,'11 Erstellen einer Arbeitsmittelprüfübersicht','','','','img/gruen.gif','img/gruen.gif');\n
		d.add(12,0,'12 Arbeitsschutzausschusssitzung','','','','img/gruen.gif','img/gruen.gif');\n
*/
	echo "document.write(d);\n";

		//-->
	echo '</script>';




}

so sieht dann der quelltext aus:
Code:
              <script type="text/javascript">	d = new dTree('d');d.add(0,-1,'  Arbeitssicherheit');
d.add(1,0,'Besprechung und Begehung','','','','img/gruen.gif','img/rot.gif');
d.add(2,0,'Abarbeitung von Revisionsberichten','','','','img/gruen.gif','img/rot.gif');
d.add(3,0,'Gefährdungs und Belastungsbeurteilung','','','','img/gruen.gif','img/rot.gif');
d.add(4,0,'Bildschirmarbeitsplatz- Analyse','','','','img/gruen.gif','img/rot.gif');
d.add(5,0,'Unterweisungsorganisation / Betriebsanweisungen','','','','img/gruen.gif','img/rot.gif');
d.add(6,0,'Aufbau der Erste-Hilfe-Organisation','','','','img/gruen.gif','img/rot.gif');
d.add(7,0,'Aufbau der internen Brandschutzorganisation','','','','img/gruen.gif','img/rot.gif');
d.add(8,0,'Erstellen einer Arbeitsmittelprüfübersicht','','','','img/gruen.gif','img/rot.gif');
d.add(9,0,'Arbeitsschutzausschussitzung','','','','img/gruen.gif','img/rot.gif');
d.add(10,0,'Unfallanalysen / Unfallstatistiken','','','','img/gruen.gif','img/rot.gif');
d.add(11,0,'Ergnomische Gestaltung von Arbeitsplätzen','','','','img/gruen.gif','img/rot.gif');
d.add(12,0,'System. Umsetzung der Regeln der Technik z.B. BetriebSichV','','','','img/gruen.gif','img/rot.gif');
d.add(13,0,'Organisation der Pflichtenübertragung','','','','img/gruen.gif','img/rot.gif');
d.add(14,0,'Sicherheitsbeauftragte / Bestellung und Weiterbildung','','','','img/gruen.gif','img/rot.gif');
d.add(15,0,'Organisation / Persönliche Schutzausrüstung','','','','img/gruen.gif','img/rot.gif');
d.add(16,0,'Organisation / Weiterbildung im Bereich Arbeitssicherheit','','','','img/gruen.gif','img/rot.gif');
d.add(17,0,'Pflege sämtlicher Arbeitsschutzunterlagen','','','','img/gruen.gif','img/rot.gif');
d.add(18,0,'Jahresbericht über abgeschlossene und geplante Tätigkeiten','','','','img/gruen.gif','img/rot.gif');
d.add(19,0,'Gefahrstoffmanagement','','','','img/gruen.gif','img/rot.gif');
d.add(20,1,'02.02.2007_Protokoll 02.02.07.pdf','Files/1004428/Sifa/2007/02.02.2007_Protokoll 02.02.07.pdf');
d.add(21,1,'02.02.2007_GB allgemein_Zentrale.pdf','Files/1004428/Sifa/2007/02.02.2007_GB allgemein_Zentrale.pdf');
d.add(22,1,'02.02.2007_MaßnahmenkatalogGB allgemein_Zentrale.pdf','Files/1004428/Sifa/2007/02.02.2007_MaßnahmenkatalogGB allgemein_Zentrale.pdf');
d.add(23,1,'07.02.2007_Protokoll 07.02.07.pdf','Files/1004428/Sifa/2007/07.02.2007_Protokoll 07.02.07.pdf');
d.add(24,1,'15.02.2007_Besuch vor Ort','','','','img/meeting.gif');
d.add(25,1,'19.02.2007_Protokoll 19.02.07.pdf','Files/1004428/Sifa/2007/19.02.2007_Protokoll 19.02.07.pdf');
d.add(26,1,'26.02.2007_Besuch vor Ort','','','','img/meeting.gif');
d.add(27,1,'02.04.2007_Protokoll 02.04.07.pdf','Files/1004428/Sifa/2007/02.04.2007_Protokoll 02.04.07.pdf');
d.add(28,1,'11.05.2007_Besuch vor Ort','','','','img/meeting.gif');
d.add(29,17,'10.04.2007_Protokoll 10.04.07.pdf','Files/1004428/Sifa/2007/10.04.2007_Protokoll 10.04.07.pdf');
d.add(29,1,'10.04.2007_Protokoll 10.04.07.pdf','Files/1004428/Sifa/2007/10.04.2007_Protokoll 10.04.07.pdf');
document.write(d);
</script>
 
pack die PDFs in nen Ordner der mit htaccess geschützt ist, damit können die PDFs schon nicht mehr über nen direkten Link angesprochen werden.
Und dann benutzte php um das pdf ausgeben zu lassen
PHP:
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
readfile('original.pdf');
 
Du könntest eine Wrapper-funktion für deine PDFs schreiben, die den wert in $_SERVER['HTTP_REFERER'] ausliest und mit der URL zu der Startseite vergleicht.
Wenn positiv schleift sie einfach das gewünschte PDF durch.
Wenn negativ gibt es eine Fehlermeldung.

Dann musst du natürlich deine PDFs vor Direktzugriff schützen (z.B. mit .htaccess).

Das Problem ist nur, dass 'HTTP_REFERER' nicht wirklich verlässlich ist (browserabhängig) und es so sein kann, dass mancher von deiner Startseite nicht zu den PDFs kommt.

PS: Warum willst du das eigentlich unterbinden?
PPS: Links mit JS einzufügen ist nicht so ideal - was ist, wenn jemand JS deaktiviert hat. Dann fehlt ihm die ganze Navigation. Da du das ganze eh schon mit PHP zusammensetzt kannst du da auch gleich die Links erstellen.
 
was ich etwa noch anmerken sollte, dass das pdf direkt in der lightbox angezeigt wird. also mit dem object-tag.

ist das dann überhaupt noch möglich?
 
Evt über Ajax, aber ich weiß nicht ob damit ganze Files returned werden können.
Sobald du die PDFs auf der Seite plazierst kannst du sie nicht mehr über htaccess schützen lassen.
 
Du kannst den Inhalt schon über AJAX versenden, nur dass du dann mit BASE64-encoding arbeiten musst.
Wäre natürlich auch eine Art deine PDFs zu schützen.
Aber jemand mit etwas Sachverstand könnte sie dann trotzdem noch lesen.
 
Zurück
Oben