Dateigrösse: 7.22 kb
1<?php error_reporting(E_ALL ^E_NOTICE); /************* http://www.polycoder.de/scripte/php/sicherer-download/index.html ******************/ /**** Variablen anpassen ****/ // Datei mit den Arrays der Login-Namen $userdata = "loginNamen.php"; // url die immer vorgestellt werden soll $url = "./"; // Verzeichnis der Download-Dateien $path2files = "./pdf/"; // Pfad zur Logdatei, die aufzeigt, wer was wann downloaded $logfile = "./log/downloads.log"; // setzen der Cacheverwaltung auf 'private' @session_cache_limiter('private'); //echo "Die Cacheverwaltung ist jetzt auf " . @session_cache_limiter() . " gesetzt.<br><br>"; // setzen der Cache-Verfallszeit auf 30 Minuten @session_cache_expire(30); // Session starten @session_start(); // expire the session if user is inactive for X minutes * 60 or more $expireAfter=10*60; // check to see if our "last action" session variable has been set if(isset($_SESSION['last_action'])) { // figure out how many seconds have passed since the user was last active $secondsInactive = time()-$_SESSION['last_action']; // check to see if user has been inactive longer that if($secondsInactive > $expireAfter) { // unset that session + cookie session_unset(); session_destroy(); } } // assign the current timestamp as the user's latest activity /* echo $_SESSION["user"] . $_POST["user"]; echo '<br>'; echo $_SESSION["pass"] . $_POST["pass"]; */ if(isset($_GET['delsession'])) { // unset that session + cookie session_unset(); session_destroy(); unset($_SESSION["user"]); unset($_SESSION["pass"]); //echo "session_is_deleted"; } if (isset($_POST["submit"]) && !empty($_POST["user"]) && !empty($_POST["pass"])) { //include_once($userdata); $myuser = array('mike','user','einstieg'); $mypass = array('www','user','b1'); $userfound = false; $passfound = false; if (false !== $key = array_search($_POST["user"], $myuser)) { $userfound = true; if ($_POST["pass"] == $mypass[$key]) { $passfound = true; } } if ($passfound===true && $userfound===true) { // erstelle Sessionvariablen $_SESSION["user"] = $_POST["user"]; $_SESSION["pass"] = $_POST["pass"]; showFiles(); exit; } else { echo doForm($_REQUEST["f"],"incorrect"); exit; } } if (( isset($_SESSION["user"]) && !empty($_SESSION["user"])) && (isset($_SESSION["pass"]) && !empty($_SESSION["pass"])) && (isset($_REQUEST["f"]) && !empty($_REQUEST["f"]) )) { // Download-logfile als string erzeugen: $log = $_SESSION["user"]." | ". $_REQUEST["f"]." | ". date("Y-m-d H:i:s")." | ". $_SERVER["REMOTE_ADDR"]." | ". $_SERVER["HTTP_USER_AGENT"]."\n\r"; $fp = fopen($logfile,"a"); fputs($fp,$log); fclose($fp); // Fileposition suchen: $filename = $url . $path2files . $_REQUEST["f"]; // Passenden Datentyp erzeugen: header("Content-Type: application/octet-stream"); // Passenden Dateinamen im Download-Requester erzeugen, // z.B. den Original-Dateinamen: $basename = basename($_REQUEST["f"]); header("Content-Disposition: attachment; filename=\"$basename\""); // Datei ausgeben mit Download-Manager (headers muessen aktiviert sein) readfile($filename); // Datei in einem neuen Tab oeffnen (headers passiv setzen) //showFiles($filename); //(isset($_REQUEST["f"]) && !empty($_REQUEST["f"])) && } else if ( isset($_GET["delsession"]) || ( isset($_REQUEST["f"]) && !isset($_SESSION["user"]) || !isset($_SESSION["pass"]) ) ) { // Aufruf der Seite von nicht angemeldetem user -> Login-Formular zeigen echo doForm($_REQUEST["f"]); exit; } else { showFiles(); } function showFiles($filename='') { $meta = (strlen($filename) > 0) ? '<meta http-equiv="refresh" content="0,'. dirname($_SERVER["PHP_SELF"]) .'/'. $filename .'" />' : ''; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Download Verwaltung mit Session</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-style-type" content="text/css" /> <meta http-equiv="content-script-type" content="text/javascript" /> <?php echo $meta; ?> <link href="./css/styles.css" rel="stylesheet" type="text/css" /> <style type="text/css" media="screen"> <!-- @import url("./styles.css"); --> </style> <!--[if IE 7]> @import url("./styles_ie7.css"); <![endif]--> </head> <body> <!-- geben Sie hier die links so an: <a href="?f=[datei]">linkbeschreibung</a> --> <!-- <a href="?f=eb_zuerich_plakat.pdf">EB Zürich (A4)</a> <p></p> <a href="?f=humanae_vitae.pdf">Enzyklika <em>'humanae vitae'</em></a> <p></p> <a href="?f=Flyer_Lernfoyer.pdf">Flyer Lernfoyer</a> <p></p> <a href="?f=Linkliste_Stellensuche.pdf">Linkliste für die Jobsuche</a> <p></p> <a href="?f=schweizerdeutsch.pdf">Schweizerdeutsch</a> <p></p> <a href="?f=Lageplan_Lagerstrasse.pdf">Sitemap Lagerstrasse</a> <p></p> --> <?php $output = '<h2>Dokumente zum Downloaden</h2>'; $arrFiles = array(); $file_path = dirname($_SERVER['SCRIPT_FILENAME']) . '/pdf/'; $access_dir = dir($file_path); while( $file = $access_dir->read() ) { if(strtolower(end(@explode('.',$file)))=='pdf') { //echo $file; $arrFiles[] = $file; } } $access_dir->close(); @asort($arrFiles); foreach( $arrFiles as $k => $value ) { $output .= '<a href="?f=' . $value . '"><span style="font-size:125%;">»</span> ' . $value . '</a>'; $output .= '<p></p>'; } echo $output; echo '<a class="logoff" href="' .$_SERVER["PHP_SELF"]. '?delsession">Abmelden</a>'; ?> </body> </html> <?php } function doForm($path, $e='') { $error = (strlen($e)>0) ? '<h3 class="red">' . $e . '</h3>' : ''; $out = ' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Login</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <link href="./css/styles.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"></script> </head> <body onload="document.login.user.focus();"> <div id="formular"> <h2>Anmeldung</h2> <form method="post" action="' .$_SERVER["PHP_SELF"]. '?f=' .$path. '" name="login"> <div style="float:left;"> <input type="text" name="user" placeholder="Username" required="required" size="12" class="textfeld" /></div> <div style="float:left; margin:0 1.2em;"> <input type="password" name="pass" placeholder="Password" required="required" size="12" class="textfeld" /></div> <div style="float:left;"> <input type="submit" name="submit" value="Login" class="sub" /></div> <div style="float:left;">' . $error . '</div> <br> <br> <!-- <a href="#">register</a> --> </form> </div> </body> </html>'; return $out; } ?>