Quelltext der Datei: http://www.michaelster.ch/jsTestFolder/downloadVerwaltung.php

Dateigrösse: 7.22 kb

[Anzeige ohne Zeilennummern]


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&uuml;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%;">&raquo;</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;
}

?>