WinFuture-Forum.de: Andere Seite Anzeigen Bevor Ein Pdf(andere Datei) Geladen Wird - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Andere Seite Anzeigen Bevor Ein Pdf(andere Datei) Geladen Wird


#1 Mitglied ist offline   _Fire_Dragon_ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 76
  • Beigetreten: 27. Januar 05
  • Reputation: 0

  geschrieben 23. Juni 2008 - 09:13

Hallo,
hab folgendes Problem,
verwende eine Intranet-Seite
Auf einer Seite werden verschiedene PDF-Dokumente (oder andere Dateien) als Link angeboten.
http://Mein.Intranet/Startseite.php -> (Der Benutzer wählt ein Link (PDF-Datei)

nun soll nicht sofort die PDF-Datei angezeigt werden,
sondern zuvor ein Warnhinweis mit bestätigung das der Benutzer die Hinweise akzeptiert und gelesen hat.

> Dieses Dokument darf nicht an Dritte weitergegeben werden
> [_] Akzeptiere diesen Hinweis
> ( Weiter -> )

Erst wenn der Benutzer den [x] und auf weiter klickt, darf der Benutzer die PDF-Datei sehen.

Wichtig ist dabei das der Benutzer nicht per
http://Mein.Intranet...en/Datei001.pdf
direkt zugriff bekommmt, dann sollte erst der Hinweis erfolgen.

Dies ganze wird wohl mit .htaccess Funktionieren,
aber wie sage ich .htaccess das vor dem Laden der Datei der Warnhinweis gezeigt werden soll (dazwischen schalten) und erst bei bestätigung das PDF-Dokument angezeigt weden soll.

Sprich ich müsste irgendwie
> redirectPermanent ^/PDF-Dateien/(.*) http://Mein.Intranet...weis.php?url=$1 [R,L]
bin mir nicht sicher ob das so i.O. ist und was bedeutet [R] oder [R,L] ?

Ich nehme mal an dieses redirect... stimmt, jetzt werden zwar alle Dokumente von
http://Mein.Intranet/PDF-Dateien/*.pdf ersteinmal auf die php
http://Mein.Intranet/WarnHinweis.php umgeleitet und irgendwie muss ich nun ein php-Code schreiben
was nun den Warnhinweis anzeigt, wartet bis der Benutzer [x] und (Weiter) anklickt, dann
die Variable url ausliest und die gewünschte PDF-Datei nun anzeigt.

soweit so gut,
aber was passiert wenn der Benutzer so schlau ist und direkt
http://Mein.Intranet...rl=Datei001.pdf aufruft,
wie kann ich in der php-Datei WarnHinweis.php dies überprüfen?
> REQUEST_URI
oder so andere Variablen gibt ja,
aber was ist wenn der Benutzer so schlau ist und erst auf die Hauptseite
http://Mein.Intranet/Startseite.php geht
und dann direkt im Browser
http://Mein.Intranet...rl=Datei001.pdf einträgt,
dann dürfte wohl der php-Code dies nicht erkennen oder? und den Warnhinweis auch nicht anzeigen?!
Ok zur Not könnte ,man mit diesem Problem leben.

Aber wie genau muss die .htaccees und WarnHinweis.php?url=
aussehen? hab leider zuwenig erfahrung damit.

Oder gibts etwas besseres?

Gruß und Dank
Tim

Dieser Beitrag wurde von _Fire_Dragon_ bearbeitet: 23. Juni 2008 - 09:16

0

Anzeige



#2 Mitglied ist offline   asko 

  • Gruppe: aktive Mitglieder
  • Beiträge: 144
  • Beigetreten: 17. November 02
  • Reputation: 0

geschrieben 23. Juni 2008 - 16:03

Hallo Tim,

hier ist mal eine quick & dirty Lösung, wie das im Ansatz realisiert werden könnte.
Du erstellst einen Ordner in dem die PDF Dateien liegen. In diesen Ordner machst Du eine .htaccess Datei mit dem Inhalt
deny from all

Dadurch wird erst mal jeder Zugriff über den Browser gesperrt.

Ein Script, das die PDFs anzeigt, könnte vom Prinzip her so aufgebaut sein:
<?php

// Pfad zum geschützten Ordner in dem die PDFs liegen
$pdf_ordner = 'dokumente/';

// Falls das Formular abgeschickt wurde und die Nutzungsbedingungen akzeptiert wurden
if (isset( $_POST['anzeigen'] ) &&
	$_POST['akzeptiert'] == 'ja')
{
	// PDF Header senden
	header( 'Content-type: application/pdf' );
	// PDF Datei an den Browser schicken
	@readfile( $pdf_ordner.$_POST['dateiname'] );
}
// Falls das Formular abgeschickt wurde und die Nutzungsbedingungen nicht akzeptiert wurden
else if (isset( $_POST['anzeigen'] ) &&
		$_POST['akzeptiert'] != 'ja')
{
	// UTF-8 Header senden für die Fehlermeldung
	header( 'Content-Type: text/html; charset=utf-8' );
	// Meldung und zurück-Link ausgeben
	echo "<p>Sie müssen erst die Nutzungsbedingungen akzeptieren!</p>";
	echo '<p><a href="' .$_SERVER['PHP_SELF']. '">Zurück</a></p>';
}
// Formular anzeigen
else {

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PDF anzeigen</title>
</head>

<body>

<form id="pdfform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="checkbox" name="akzeptiert" id="akzeptiert" value="ja" /> Ich akzeptiere die Nutzungsbedingungen<br />
<input type="hidden" name="dateiname" id="dateiname" value="meine_pdf_datei.pdf" />
<input type="submit" name="anzeigen" id="anziegen" value="PDF anzeigen" />
</form>

</body>
</html>
<?php
}
?>


Kurz zur Funktionsweise:
Als erstes wird ein Mini-Formular angezeigt, in dem man eine Checkbox anklicken und dann den Absendeknopf drücken muß. Ist beides korrekt erfüllt, wird der erste Block der IF-Anweisung abgearbeitet. Es wird ein Header an den Browser gesendet das jetzt ein PDF kommt, anschließend wird mit readfile() die Datei an den Browser geschickt.
Wurde nur der Absendeknopf gedrückt, ohne die Checkbox zu bestätigen, wird der else if() Block abgearbeitet. Hier wird nur eine Meldung ausgegeben und per Link kommt man wieder zum Formular.
In der ersten Zeile wird noch der Pfad zum PDF ordner gesetzt, damit das Script auch weiß woher es die Datei holen muß. Den PDF Dateiname selbst übergibt man z.B. durch ein Hidden-Feld im Formular.

Es gibt diverse Wege wie man das Vorhaben realisieren kann, das hier ist nur einer davon.
Wichtig: das Script nicht 1:1 übernehmen, denn es fehlen die wichtigen Prüfungen der Benutzereingaben. So wie das Script oben steht, ist es ein gigantisches Sicherheitsloch! Es soll nur mal das Prinzip verdeutlichen, wie man das Problem angehen kann.

Gruß Andreas
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0