PHP [php] File Upload script - hochgeladener Link verschlüsseln und automatisch löschen

Um eine Funktion aufzurufen reicht folgendes :


PHP:
//Unter der Funktion 

tuewas();

Damit ruft er die Funktion automatisch auf.

Wenn Du willst, dass die Datei auf dem Server gelöscht wird, musst Du andere Funktionen einbauen. Die erste Funktion muss eigentlich auch noch erweitert werden.

Und zwar so:

User läd ein File hoch ->
Es landet in der Datenbank ( name / file / link etc )
Du überprüfst wenn der Link aufgerufen wird ob es noch in der DB liegt ->

PHP:
    //Prüfe ob Datenvorhanden
$link = mysql_real_eascape_string($_GET["file"]);
$a = (mysql_fetch_row(mysql_query("select count(*) from links where link='$link'"))) or die(mysql_error());
if ($a[0] == 0) {
echo 'Leider ist die Datei nicht mehr vorhanden.';
} else {

//hier dann die Ausgabe wenn Vorhanden und Datei dem User Anzeigen oder senden. 
.....
}

Also verstehst was ich mein?

Dies sind nur Ansätze, diese Code-Ausschnitte sind auch nicht getestet.

*tante edit sagt*

Fast vergessen, wenn Du Datei vom Server gelöscht haben willst, würde ich den Namen auch gleich in die DB speichern und dann später mit der Funktion:

unlink() löschen lassen!

Erklärung:
http://php.net/manual/de/function.unlink.php

Also an sich wirkt das ganze jetzt zwar viel, ist aber wenn es alles Sauber geschrieben wurde paar Zeilen Code und auch easy zu verstehen.

*edit2*
Also.. man sollte auch schon lesen, die unlink Funktion ist bereits im Script!
Also brauchst Du da nichts mehr machen, wegen löschen vom Server ....
 
Zuletzt bearbeitet: (Fehler beseitigt -.-)
ok verstehe.
Als erstes muss ich überprüfen warum er nach Upload einer Datei, diese noch nicht in die Datenbank einfügt.

Also momentan sollte der folgende Code die Auswahl der gewählten Zeit bis zum löschen in die Datenbank schreiben:

PHP:
<!-- Abfrage Löschen des Links -->
    <p>Der Link wird gelöscht nach:</p>
    <form action="links" method="POST or GET" name="name">
	<select name="time">
        <option>1 Min</option><option>1 Tag</option><option>2 Tage</option></select>
    </form>
    
    <?php
     if($_POST["time"] =="1 Min") {
	$sec = "60";
	}
	if($_POST["time"] =="1 Tag") {
	$sec = "86400";
	}
	if($_POST["time"] =="2 Tage") {
	$sec = "172800";
	}
//etc pp
//Speichere alles in die DB -> 

mysql_query("
INSERT INTO
    links(zeit, link)
VALUES
    ($sec,
     $link)
     ");
?>

Ich habe testweise zwei Uploads gemacht, schreiben tut er aber noch nichts in die Datenbank.

Und der Code sollte in der Datenbank abfragen ob die Zeit erreicht ist und nach erreichen der Zeit den Link automatisch löschen sollte:
PHP:
<?php
	function get_date_time($timestamp = 0)
	{
	if ($timestamp)
	return date("Y-m-d H:i:s", $timestamp);
	}

//Funktion zum automatisch löschen ->
	function tuewas() {
	$res = mysql_query("SELECT zeit FROM links");
	while($row = mysql_fetch_array($res)) {
	$secs = $row["zeit"];
	$dt = get_date_time(time() - $secs);
	$sql =("DELETE FROM links WHERE zeit <= $dt"); 
	mysql_query($sql) or die('Error[DELETE|LINK]: <br><pre>' . $sql . '</pre><br>MySQL-Error: ' . mysql_error());
	}
	}  
?>

Warum schreibt er noch nichts in die Datenbank?

Anbei die komplett index.php
 

Anhänge

Hmm, ich habe den Anschein als würdest Du noch ganz am Anfang stehen.

Sowas hier schon mal nicht:

HTML:
<form action="links" method="POST or GET" name="name">

Also als erstes musst Du das attribute <select> in die vorhandene <form> einbauen und nicht eine zweite form erstellen die zu links führt ;-).

Und zwar in Zeile 119 steht:

HTML:
 <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">

Und diese form endet in Zeile 140. Daran musste dich halten.


Ich habe das mal umgebaut, ist leider ungetestet da mein Server derzeit im Wartungsmodus und mein Home Server wird gerade gereinigt...

Musste mal testen pls, hoffentlich hab ich nichts übersehen:

PHP:
<?php
/* 
  ============================================
  ========= Filesharing Script V 1.42 ========
  ============================================
  
   Script by Sebastian-Fuss
   www.sebastian-fuss.de.vu
   Support: SFuss@gmx.net
  

==========================================================
====== An dieser Datei am besten nichts verändern!! ======
==========================================================
== Einstellungen können Sie in der config.php vornehmen ==
==========================================================

 */
 require_once("config.php");
 include_once("online.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="author" content="Coded by Sebastian Fuss (www.sebastian-fuss.de.vu)">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php if ($title!=""){echo $title;}else{echo "File Sharing";}?></title>
  <style type="text/css">
  /* <![CDATA[ */
  
a{
color:#3C86D1;
text-decoration:none;
}
a:hover{
color:#0067CE;
text-decoration:underline;
}

  /* ]]> */
  </style>
 
<?php
	function get_date_time($timestamp = 0)
	{
	if ($timestamp)
	return date("Y-m-d H:i:s", $timestamp);
	}

//Funktion zum automatisch löschen ->
	function tuewas() {
	$res = mysql_query("SELECT zeit FROM links");
	while($row = mysql_fetch_array($res)) {
	$secs = $row["zeit"];
	$dt = get_date_time(time() - $secs);
	$sql =("DELETE FROM links WHERE zeit <= $dt"); 
	mysql_query($sql) or die('Error[DELETE|LINK]: <br><pre>' . $sql . '</pre><br>MySQL-Error: ' . mysql_error());
	}
	}  
?> 
 

<script type="text/javascript">
function go(){

document.getElementById("load").style.display="inline";
}
</script>
</head>
<body>
<table border=0 align=center>
 <tr>
  <td>
  <?php if($title!=""){echo "<h1>$title</h1>";}?>
  <?php
#Hier gehts raus, falls eine Datei gelöscht werden soll.
if (isset($_GET['action'])){
if ($_GET['action']=="unlink"){

if (is_dir("$ordner/".$_GET['file'])){
if ($indexfile){
 $datei = "$ordner/".$_GET['file']."/index.php"; // Name der Datei
 }else{
  $datei = "$ordner/".$_GET['file']."/safety.php"; // Name der Datei
 }
 require_once($datei); //Datei wird eingelesen
 if ($code==$_GET['code']){

$verzeichnis = openDir("$ordner/".$_GET['file']); 
while ($file = readDir($verzeichnis)) {
 if ($file != "." && $file != "..") { 
 #Jede Datei im Verzeichniss wird gelöscht
  unlink("$ordner/".$_GET['file']."/$file");
 }
}
closeDir($verzeichnis); // Verzeichnis schließen
#Dann wird das Verzeichnis gelöscht (geht nur, wenn es leer ist)
rmdir("$ordner/".$_GET['file']);
#Überprüfung ob das Verzeichnis noch da ist
if (!is_dir("$ordner/".$_GET['file'])){
#Falls nicht, konnte es gelöscht werden und alle Dateien darin auch
#Ausgabe des Textes
echo "<h3><font color=red>Datei erfolgreich gel&ouml;scht.</font></h3>";}

}else{
echo "<h3><font color=red>Der Sicherheits-Code ist falsch!</font></h3>";
}
}else{
echo "<h3><font color=red>Die Datei ist nicht (mehr) vorhanden.</font></h3>";
}
}
}
tuewas();
?>
   <h3>Datei-Upload</h3>
  </td>
 </tr>
 <tr>
  <td>
   <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
    Datei: <input name="datei" type="file"> <input type="submit" name="loadup" value="Upload" <?php if(!$load_icon==""){ echo 'onclick="go();"';}?>><br />
    <!-- Abfrage Löschen des Links -->
    <p>Der Link wird gelöscht nach:</p>
    <select name="time">
        <option>1 Min</option><option>1 Tag</option><option>2 Tage</option></select>
        <br />
    <?php if ($show_max_size){ echo "<small style=\"float:right;\">Max. $max_size MB</small>";}
   echo "<small>";
   if ($show_allowed_ext){ 
    if ($only_some_filetypes==0){ echo "Alle Dateitypen erlaubt";}
    if ($only_some_filetypes==1){ echo "Folgende Dateitypen sind erlaubt: $extensions";}
    if ($only_some_filetypes==2){ echo "Folgende Dateitypen sind <b>nicht</b> erlaubt: $extensions";}
    }
    if($show_ip_log){
    echo "<br />Ihre IP-Adresse wird bei einem Upload gespeichert!";
    }
    echo "</small>";
     ?>
    </form>
    <?php 
     if(!$load_icon==""){ ?>
    <center><img src="<?php echo $load_icon;?>" id="load" style="display: none;" alt="Upload läuft..." ></center>
  <?php } ?>
  </td>
 </tr>

</table>
<table border=0 align=center>
  <colgroup>
    <col width="50%">
    <col width="50%">
  </colgroup>

 <tr>
  <td>
<?php
 # Original Script © Homepage-Total.de
 # Moded by Sebastian-Fuss.de.vu
if (isset($_POST['loadup'])){
if($_FILES["datei"]["name"] == "") {
    echo "<font color=red><h3>Keine Datei &uuml;bertragen.</h3></font>"; 
 
}else{

if($_FILES["datei"]["tmp_name"] == "") {
    echo "<font color=red><h3>Fehler bei der &Uuml;bertragung, ist die Datei zu groß?</h3></font>"; 
 
}else{

if($_FILES["datei"]["size"] == 0) {
  echo "<font color=red><h3>Leere Datei!</h3></font>";

}else{
// Überprüfen der Dateiendung
if ($only_some_filetypes!=0){
// Dateiendung herausfinden, falls nicht es alles erlaubt ist
$ext=explode(".",$_FILES["datei"]["name"]);
$endung=$ext[count($ext)-1];
}
if ($only_some_filetypes==1 && strpos($extensions,$endung)!==FALSE || $only_some_filetypes==2 && strpos($extensions,$endung)===FALSE || $only_some_filetypes==0){

if ($_FILES["datei"]["size"]<($max_size*1048576)){

#Generieren des Ordnernames
if ($folder_type==1){
$folder=time(); 
}else{
$folder= substr(md5 (uniqid (rand())),0,8);
}
#Erstellen des Ordners "uploads", falls er nicht vorhanden ist
if(!is_dir("$ordner/")){
mkdir("$ordner/",0777);
}
//Falls der Ordner mit dem selben Namen bereits vorhanden ist, wird ein zufälliger Wert angehängt
if(is_dir("$ordner/$folder")){
$folder=$folder.mt_rand(0,10);
}
#erstellen des Ordners, in den der Upload hinein soll
if(mkdir("$ordner/".$folder,0777)){
#Hier gehts weiter, falls der Ordner erstellt wurde
#Upload
move_uploaded_file($_FILES["datei"]["tmp_name"],
                   "$ordner/$folder/".$_FILES["datei"]["name"]);
#Upload Datei Rechte setzen
@chmod("$ordner/$folder/".$_FILES["datei"]["name"], 0777);
#Ausgabe der "Upload erfolgreich"-Meldung
echo "<font color=red><h3>Datei <i>".$_FILES["datei"]["name"]."</i> erfolgreich &uuml;bertragen.</h3></font>";
# Anti-List-Folder-Index Datei kopieren
if ($indexfile){
$dateiname = "$ordner/$folder/index.php"; // Name der Datei
}else{
$dateiname = "$ordner/$folder/safety.php"; // Name der Datei
}
$code=substr(md5 (uniqid (rand())),0,12);
$text = '<?php'; // Dateiinhalt
$text .= "\n"; // Dateiinhalt
$text .= ' $code="'.$code.'";'; // Dateiinhalt
if ($log_ip){
$text .= "\n"; // Dateiinhalt
$text .= ' $ip="'.$_SERVER['REMOTE_ADDR'].'";'; // Dateiinhalt
}
$text .= "\n ?"; // Dateiinhalt
$text .= '>'; // Dateiinhalt
$handler = fOpen($dateiname , "w+"); // Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
fWrite($handler , $text); // Dateiinhalt in die Datei schreiben
fClose($handler); // Datei schließen


 if($_POST["time"] =="1 Min") {
	$sec = "60";
	}
	if($_POST["time"] =="1 Tag") {
	$sec = "86400";
	}
	if($_POST["time"] =="2 Tage") {
	$sec = "172800";
	}
//Speichere alles in die DB -> 
$link = dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];
mysql_query("INSERT INTO links(zeit, link) VALUES ($sec, $link)") or mysql_error();

#Ausgabe der Zwei Links
?>
  </td>
 </tr>
<tr>
<td align="center"><a href="<?php echo dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];?>" />Download <?php echo $_FILES["datei"]["name"];?></a></td>
<?php if ($show_delete){ ?>
<td align="center"><a href="<?php echo $_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code;?>" >L&ouml;schen</A></td>
<?php } ?></tr>
<?php if (!$show_only_links){ ?>
<tr>
<td><textarea style="width:100%;" rows="3" readonly >http://<?php echo $_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];?></Textarea></td>
<?php if ($show_delete){ ?>
<td><textarea style="width:100%;" rows="3" readonly >http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code; ?></Textarea></td>
<?php } ?>
</tr>

<?php
}

}else{
#Ausgabe der Fehlermeldung, falls der Ordner nicht erstellt werden konnte
echo "<h3><font color=red>Fehler beim erstellen des Ordners!</font></h3>";

}
}else{
echo "<h3><font color=red>Diese Datei (".round(($_FILES["datei"]["size"]/1048576),2)." MB) ist zu groß!</font></h3>";
}
}else{
echo "<h3><font color=red>Dieser Dateityp ($endung) ist nicht erlaubt!</font></h3>";
}
}
}
}
}
?>
</table>
 <?php if ($show_adm_link){ ?>
<p  style="text-align:center;"><small><a href="<?php echo $adminphp;?>" >Admin Login</a></small></p>
<?php
}
?>
</body>
</html>

Einfach kopieren und ne Backup Datei von der alten index anlegen .

Ist jetzt auch erstmal nur wegen dem Speichern der Daten in die DB, dass aufrufen auch wenn der link in der Db nicht steht geht trotzdem.

Ich plane gerade meine neue Küche und bin ein wenig abgelenkt...

*edit*

Um die Datei dann auch zu löschen wenn die Zeit verstrichen ist musst Du eigentlich noch zwei andere werte in die DB hauen:

<?php echo $_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code;?>

{file und code }

Um Dir dann eine Funktion zu schreiben die die Dateien dann auch löscht wenn die Sachen aus der DB gelöscht werden!

So verschwinden ja nur die Daten aus der Datenbank! Im Ordner verbleiben diese noch.
 
Zuletzt bearbeitet:
Ich habe es erneut hochgeladen und nochmal was upgeloadet. Hab dann eine Abfrage in SQL gemacht ob Daten reingeschrieben wurden. Er sagt mir dann aber nur "MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). "

Um die Datei dann auch zu löschen wenn die Zeit verstrichen ist musst Du eigentlich noch zwei andere werte in die DB hauen:

<?php echo $_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code;?>

{file und code }

Um Dir dann eine Funktion zu schreiben die die Dateien dann auch löscht wenn die Sachen aus der DB gelöscht werden!

So verschwinden ja nur die Daten aus der Datenbank! Im Ordner verbleiben diese noch.

Wo muss ich den Befehl dann in dem Script festlegen und wie sieht das dann aus?

Sry das ich teils noch nicht auf anhieb durchblicke, bin relativ neu in Sachen php und sql und versuche die Basics nebenbei einzustudieren, wäre aber schön wenn ich anhand dem Script mich weiterbilden kann, dank dir schonmal sehr!!
 
Guck Dir mal bitte die werte an :

var_dumb($link);
var_dumb($_POST["time"]);

Füge die unter "#Ausgabe der Zwei Links" ein. ( irgend wo Zeile 242 )

Poste die Ausgabe mal bitte hier.
 
....natürlich mein ich var_dump nicht dumb :(

*edit*
Dies soll nur zeigen welche Daten geliefert werden.
Problem besteht ja darin das Du sagtest dass die Datenbank nicht gefüllt wird!

Poste mal bitte die Daten die Ausgegeben werden.
 
Zuletzt bearbeitet:
Nun gibt er das aus:

PHP:
string(40) "/filesharing/uploads/1300580120/test.jpg" string(5) "1 Min"

edit:
nicht das was bei der Datenbank falsch ist, ich habe mal ein screen von myphpadmin gemacht:

http://www.abload.de/img/datenbank1drv.jpg
 
Zuletzt bearbeitet:
Also werden die Daten ordnungsgemäß geliefert.
Jetzt musst Du schauen ob der mysql_query ordnungsgemäß Funktioniert!

Schreibe dazu die Zeile :

PHP:
mysql_query("INSERT INTO links(zeit, link) VALUES ($sec, $link)") or mysql_error();

in :

PHP:
$sql = "INSERT INTO links (zeit, link) VALUES ('".$sec."', '".$link."')";
mysql_query($sql) or mysql_error();

var_dump($sql);

um. Zeige dann mal bitte den Eintrag!

*edit*
Setze mal id auf auto_increment ( Extras ) und PRIMARY
 
Hab ich, gibt folgendes aus:

string(88) "INSERT INTO links (zeit, link) VALUES ('60', '/filesharing/uploads/1300580692/test.jpg')" string(40) "/filesharing/uploads/1300580692/test.jpg" string(5) "1 Min"

edit:
Wollte grad die id auf auto.. ändern, jetzt sehe ich das er daten bekommen hat!

http://www.abload.de/img/datenbank2r7uy.jpg

edit2:

Allerdings hat das Script nun ein Problem:
Error[DELETE|LINK]:

DELETE FROM links WHERE zeit <= 2011-03-20 01:28:38


MySQL-Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '01:28:38' at line 1
 
Zuletzt bearbeitet:
Supi, jetzt bist Du einen kleinen Schritt weiter.

Als nächstes würde ich Dir Raten eine Todo Liste zu schreiben:

PHP:
/*
Daten in die DB speichern [X]
Überprüfe ob Zeit bereits abgelaufen und gebe einen Fehler aus [ ] 
Wenn Zeit abgelaufen ist, lösche Datei(en) auf dem Server [ ] 
Erstelle ein neues Design [ ]
etc pp

*/

Dies Arbeitest Du dann nach und nach ab.

Brauchst Du noch irgend wo bei Hilfe?

*edit*
Auf Auto musst Du die Tabelle trotzdem setzen, sonst bekommst Du immer einen Fehler.

Hmm, liegt wohl an der Schleife.
 
Zuletzt bearbeitet:
super danke dir tausendmal :)

Werds mir morgen nochmal alles anschauen und verinnerlichen. Wenn ich Fragen habe, wäre ich sehr froh wenn ich hier nachfragen kann, danke dir schonmal!

Gute Nacht
 
Kein Ding, ist zwar alles bisschen durcheinander geraten, weil alles zwischen drin was angefangen aber wenn Du nun strickt nach einer Liste Arbeitest geht es A. schneller und man kommt nicht so schnell durcheinander :-)

Ja mach dass.
Wobei ich mir denke das die while schleife so nicht richtig Funktioniert, aber guck erstmal!

*edit*
Dadurch das keine Zeit in der Db steht kann er auch nichts vergleichen. Musste mal schauen.
Deswegen der Fehler s.o!

Hab den Fehler mal behoben, dass einzige was Du noch machen musst ist :
Füge added zu links hinzu ( varchar 100).

Code:
ALTER TABLE  `links` ADD  `added` VARCHAR( 100 ) NOT NULL AFTER  `link` ;
Das bei links (SQL| oben in der phpmyadmin Leiste ) eingeben!

PHP:
<?php
/* 
  ============================================
  ========= Filesharing Script V 1.42 ========
  ============================================
  
   Script by Sebastian-Fuss
   www.sebastian-fuss.de.vu
   Support: SFuss@gmx.net
  

==========================================================
====== An dieser Datei am besten nichts verändern!! ======
==========================================================
== Einstellungen können Sie in der config.php vornehmen ==
==========================================================

 */
 require_once("config.php");
 include_once("online.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="author" content="Coded by Sebastian Fuss (www.sebastian-fuss.de.vu)">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php if ($title!=""){echo $title;}else{echo "File Sharing";}?></title>
  <style type="text/css">
  /* <![CDATA[ */
  
a{
color:#3C86D1;
text-decoration:none;
}
a:hover{
color:#0067CE;
text-decoration:underline;
}

  /* ]]> */
  </style>
 
<?php
	function get_date_time($timestamp = 0)
	{
	if ($timestamp)
	return date("Y-m-d H:i:s", $timestamp);
	}

//Funktion zum automatisch löschen ->
	function tuewas() {
	$res = mysql_query("SELECT zeit FROM links");
while($row = mysql_fetch_array($res)) {
	$secs = $row["zeit"];
	$dt = get_date_time(time() - $secs);
	$sql =("DELETE FROM links WHERE added <= '$dt'"); 
	mysql_query($sql) or die('Error[DELETE|LINK]: <br><pre>' . $sql . '</pre><br>MySQL-Error: ' . mysql_error());
	}
	}  
?> 
 

<script type="text/javascript">
function go(){

document.getElementById("load").style.display="inline";
}
</script>
</head>
<body>
<table border=0 align=center>
 <tr>
  <td>
  <?php if($title!=""){echo "<h1>$title</h1>";}?>
  <?php
#Hier gehts raus, falls eine Datei gelöscht werden soll.
if (isset($_GET['action'])){
if ($_GET['action']=="unlink"){

if (is_dir("$ordner/".$_GET['file'])){
if ($indexfile){
 $datei = "$ordner/".$_GET['file']."/index.php"; // Name der Datei
 }else{
  $datei = "$ordner/".$_GET['file']."/safety.php"; // Name der Datei
 }
 require_once($datei); //Datei wird eingelesen
 if ($code==$_GET['code']){

$verzeichnis = openDir("$ordner/".$_GET['file']); 
while ($file = readDir($verzeichnis)) {
 if ($file != "." && $file != "..") { 
 #Jede Datei im Verzeichniss wird gelöscht
  unlink("$ordner/".$_GET['file']."/$file");
 }
}
closeDir($verzeichnis); // Verzeichnis schließen
#Dann wird das Verzeichnis gelöscht (geht nur, wenn es leer ist)
rmdir("$ordner/".$_GET['file']);
#Überprüfung ob das Verzeichnis noch da ist
if (!is_dir("$ordner/".$_GET['file'])){
#Falls nicht, konnte es gelöscht werden und alle Dateien darin auch
#Ausgabe des Textes
echo "<h3><font color=red>Datei erfolgreich gel&ouml;scht.</font></h3>";}

}else{
echo "<h3><font color=red>Der Sicherheits-Code ist falsch!</font></h3>";
}
}else{
echo "<h3><font color=red>Die Datei ist nicht (mehr) vorhanden.</font></h3>";
}
}
}
tuewas();
?>
   <h3>Datei-Upload</h3>
  </td>
 </tr>
 <tr>
  <td>
   <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
    Datei: <input name="datei" type="file"> <input type="submit" name="loadup" value="Upload" <?php if(!$load_icon==""){ echo 'onclick="go();"';}?>><br />
    <!-- Abfrage Löschen des Links -->
    <p>Der Link wird gelöscht nach:</p>
    <select name="time">
        <option>1 Min</option><option>1 Tag</option><option>2 Tage</option></select>
        <br />
    <?php if ($show_max_size){ echo "<small style=\"float:right;\">Max. $max_size MB</small>";}
   echo "<small>";
   if ($show_allowed_ext){ 
    if ($only_some_filetypes==0){ echo "Alle Dateitypen erlaubt";}
    if ($only_some_filetypes==1){ echo "Folgende Dateitypen sind erlaubt: $extensions";}
    if ($only_some_filetypes==2){ echo "Folgende Dateitypen sind <b>nicht</b> erlaubt: $extensions";}
    }
    if($show_ip_log){
    echo "<br />Ihre IP-Adresse wird bei einem Upload gespeichert!";
    }
    echo "</small>";
     ?>
    </form>
    <?php 
     if(!$load_icon==""){ ?>
    <center><img src="<?php echo $load_icon;?>" id="load" style="display: none;" alt="Upload läuft..." ></center>
  <?php } ?>
  </td>
 </tr>

</table>
<table border=0 align=center>
  <colgroup>
    <col width="50%">
    <col width="50%">
  </colgroup>

 <tr>
  <td>
<?php
 # Original Script © Homepage-Total.de
 # Moded by Sebastian-Fuss.de.vu
if (isset($_POST['loadup'])){
if($_FILES["datei"]["name"] == "") {
    echo "<font color=red><h3>Keine Datei &uuml;bertragen.</h3></font>"; 
 
}else{

if($_FILES["datei"]["tmp_name"] == "") {
    echo "<font color=red><h3>Fehler bei der &Uuml;bertragung, ist die Datei zu groß?</h3></font>"; 
 
}else{

if($_FILES["datei"]["size"] == 0) {
  echo "<font color=red><h3>Leere Datei!</h3></font>";

}else{
// Überprüfen der Dateiendung
if ($only_some_filetypes!=0){
// Dateiendung herausfinden, falls nicht es alles erlaubt ist
$ext=explode(".",$_FILES["datei"]["name"]);
$endung=$ext[count($ext)-1];
}
if ($only_some_filetypes==1 && strpos($extensions,$endung)!==FALSE || $only_some_filetypes==2 && strpos($extensions,$endung)===FALSE || $only_some_filetypes==0){

if ($_FILES["datei"]["size"]<($max_size*1048576)){

#Generieren des Ordnernames
if ($folder_type==1){
$folder=time(); 
}else{
$folder= substr(md5 (uniqid (rand())),0,8);
}
#Erstellen des Ordners "uploads", falls er nicht vorhanden ist
if(!is_dir("$ordner/")){
mkdir("$ordner/",0777);
}
//Falls der Ordner mit dem selben Namen bereits vorhanden ist, wird ein zufälliger Wert angehängt
if(is_dir("$ordner/$folder")){
$folder=$folder.mt_rand(0,10);
}
#erstellen des Ordners, in den der Upload hinein soll
if(mkdir("$ordner/".$folder,0777)){
#Hier gehts weiter, falls der Ordner erstellt wurde
#Upload
move_uploaded_file($_FILES["datei"]["tmp_name"],
                   "$ordner/$folder/".$_FILES["datei"]["name"]);
#Upload Datei Rechte setzen
@chmod("$ordner/$folder/".$_FILES["datei"]["name"], 0777);
#Ausgabe der "Upload erfolgreich"-Meldung
echo "<font color=red><h3>Datei <i>".$_FILES["datei"]["name"]."</i> erfolgreich &uuml;bertragen.</h3></font>";
# Anti-List-Folder-Index Datei kopieren
if ($indexfile){
$dateiname = "$ordner/$folder/index.php"; // Name der Datei
}else{
$dateiname = "$ordner/$folder/safety.php"; // Name der Datei
}
$code=substr(md5 (uniqid (rand())),0,12);
$text = '<?php'; // Dateiinhalt
$text .= "\n"; // Dateiinhalt
$text .= ' $code="'.$code.'";'; // Dateiinhalt
if ($log_ip){
$text .= "\n"; // Dateiinhalt
$text .= ' $ip="'.$_SERVER['REMOTE_ADDR'].'";'; // Dateiinhalt
}
$text .= "\n ?"; // Dateiinhalt
$text .= '>'; // Dateiinhalt
$handler = fOpen($dateiname , "w+"); // Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
fWrite($handler , $text); // Dateiinhalt in die Datei schreiben
fClose($handler); // Datei schließen


 if($_POST["time"] =="1 Min") {
	$sec = "60";
	}
	if($_POST["time"] =="1 Tag") {
	$sec = "86400";
	}
	if($_POST["time"] =="2 Tage") {
	$sec = "172800";
	}
//Speichere alles in die DB -> 
$link = dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];
$added =  get_date_time(time());
$sql = "INSERT INTO links(zeit, link, added) VALUES ('".$sec."', '".$link."', '".$added."')";
mysql_query($sql) or mysql_error();

#Ausgabe der Zwei Links
?>
                                  </td>
 </tr>
<tr>
<td align="center"><a href="<?php echo dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];?>" />Download <?php echo $_FILES["datei"]["name"];?></a></td>
<?php if ($show_delete){ ?>
<td align="center"><a href="<?php echo $_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code;?>" >L&ouml;schen</A></td>
<?php } ?></tr>
<?php if (!$show_only_links){ ?>
<tr>
<td><textarea style="width:100%;" rows="3" readonly >http://<?php echo $_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];?></Textarea></td>
<?php if ($show_delete){ ?>
<td><textarea style="width:100%;" rows="3" readonly >http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code; ?></Textarea></td>
<?php } ?>
</tr>

<?php
}

}else{
#Ausgabe der Fehlermeldung, falls der Ordner nicht erstellt werden konnte
echo "<h3><font color=red>Fehler beim erstellen des Ordners!</font></h3>";

}
}else{
echo "<h3><font color=red>Diese Datei (".round(($_FILES["datei"]["size"]/1048576),2)." MB) ist zu groß!</font></h3>";
}
}else{
echo "<h3><font color=red>Dieser Dateityp ($endung) ist nicht erlaubt!</font></h3>";
}
}
}
}
}
?>
</table>
 <?php if ($show_adm_link){ ?>
<p  style="text-align:center;"><small><a href="<?php echo $adminphp;?>" >Admin Login</a></small></p>
<?php
}
?>
</body>
</html>
Ergänzung ()

Sry für Doppel-post.. Aber wäre echt unübersichtlich sonst.


Erstelle noch zusätzlich file varchar ( 50 ) ist die Ordnerstruktur für später!

Die Funktion habe ich auch noch geändert, es werden nun auch die Ordner und die Datei darin gelöscht!

PHP:
<?php
/* 
  ============================================
  ========= Filesharing Script V 1.42 ========
  ============================================
  
   Script by Sebastian-Fuss
   www.sebastian-fuss.de.vu
   Support: SFuss@gmx.net
  

==========================================================
====== An dieser Datei am besten nichts verändern!! ======
==========================================================
== Einstellungen können Sie in der config.php vornehmen ==
==========================================================

 */
 require_once("config.php");
 include_once("online.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="author" content="Coded by Sebastian Fuss (www.sebastian-fuss.de.vu)">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php if ($title!=""){echo $title;}else{echo "File Sharing";}?></title>
  <style type="text/css">
  /* <![CDATA[ */
  
a{
color:#3C86D1;
text-decoration:none;
}
a:hover{
color:#0067CE;
text-decoration:underline;
}
  /* ]]> */
  </style>
 
<?php
	function get_date_time($timestamp = 0)
	{
	if ($timestamp)
	return date("Y-m-d H:i:s", $timestamp);
	}

//Funktion zum automatisch löschen ->
	function tuewas() {
	require_once("config.php");
	$res = mysql_query("SELECT id, zeit, link, file, added FROM links");
$rows = mysql_fetch_array($res);
while($row = mysql_fetch_array($res)) {
	$secs = $row["zeit"];
	$files = $row["file"];
	$added = $row["added"];
	$id = $row["id"];
	//Prüfe ob Zeit vergangen ! 
	$dt = get_date_time(time() - $secs);
	if($added <=$dt ) {
	
	echo "Aktuelle löschzeit:" . $secs .  "+ id = $id <br />";
	
	$sql =("DELETE FROM links WHERE id = '$id'");

$link=$row["link"]; 
//lösche erst Dateien dann Ordner
unlink("$link");
unlink("uploads/$files/index.php");
//Lösche Ordner 
rmdir("uploads/$files");

mysql_query($sql) or die('Error[DELETE|LINK]: <br><pre>' . $sql . '</pre><br>MySQL-Error: ' . mysql_error());

}

	//else{ echo "<h3><font color=red>Die Datei ist nicht (mehr) vorhanden.</font></h3>";}
	}
	} 
	 
?> 
 

<script type="text/javascript">
function go(){

document.getElementById("load").style.display="inline";
}
</script>
</head>
<body>
<table border=0 align=center>
 <tr>
  <td>

  <?php
#Hier gehts raus, falls eine Datei gelöscht werden soll.
if (isset($_GET['action'])){
if ($_GET['action']=="unlink"){

if (is_dir("$ordner/".$_GET['file'])){
if ($indexfile){
 $datei = "$ordner/".$_GET['file']."/index.php"; // Name der Datei
 }else{
  $datei = "$ordner/".$_GET['file']."/safety.php"; // Name der Datei
 }
 require_once($datei); //Datei wird eingelesen
 if ($code==$_GET['code']){

$verzeichnis = openDir("$ordner/".$_GET['file']); 
while ($file = readDir($verzeichnis)) {
 if ($file != "." && $file != "..") { 
 #Jede Datei im Verzeichniss wird gelöscht
  unlink("$ordner/".$_GET['file']."/$file");
 }
}
closeDir($verzeichnis); // Verzeichnis schließen
#Dann wird das Verzeichnis gelöscht (geht nur, wenn es leer ist)
rmdir("$ordner/".$_GET['file']);
#Überprüfung ob das Verzeichnis noch da ist
if (!is_dir("$ordner/".$_GET['file'])){
#Falls nicht, konnte es gelöscht werden und alle Dateien darin auch
#Ausgabe des Textes
echo "<h3><font color=red>Datei erfolgreich gel&ouml;scht.</font></h3>";}

}else{
echo "<h3><font color=red>Der Sicherheits-Code ist falsch!</font></h3>";
}
}else{
echo "<h3><font color=red>Die Datei ist nicht (mehr) vorhanden.</font></h3>";
}
}
}
tuewas();
?>
   <h3>Datei-Upload</h3>
  </td>
 </tr>
 <tr>
  <td>
   <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
    Datei: <input name="datei" type="file"> <br /><br /><input type="submit" name="loadup" value="Upload" <?php if(!$load_icon==""){ echo 'onclick="go();"';}?>><br />
    <!-- Abfrage Löschen des Links -->
    <p>Der Link wird gelöscht nach:</p>
    <select name="time">
        <option>1 Min</option><option>1 Tag</option><option>2 Tage</option></select>
        <br />
    <?php if ($show_max_size){ echo "<small style=\"float:right;\">Max. $max_size MB</small>";}
   echo "<small>";
   if ($show_allowed_ext){ 
    if ($only_some_filetypes==0){ echo "<br />Alle Dateitypen erlaubt";}
    if ($only_some_filetypes==1){ echo "<br />Folgende Dateitypen sind erlaubt: $extensions";}
    if ($only_some_filetypes==2){ echo "<br />Folgende Dateitypen sind <b>nicht</b> erlaubt: $extensions";}
    }
    if($show_ip_log){
    echo "<br />Ihre IP-Adresse wird bei einem Upload gespeichert!";
    }
    echo "</small>";
     ?>
    </form>
    <?php 
     if(!$load_icon==""){ ?>
    <center><img src="<?php echo $load_icon;?>" id="load" style="display: none;" alt="Upload läuft..." ></center>
  <?php } ?>
  </td>
 </tr>

</table>
<table border=0 align=center>
  <colgroup>
    <col width="50%">
    <col width="50%">
  </colgroup>

 <tr>
  <td>
<?php
 # Original Script © Homepage-Total.de
 # Moded by Sebastian-Fuss.de.vu
if (isset($_POST['loadup'])){
if($_FILES["datei"]["name"] == "") {
    echo "<font color=red><h3>Keine Datei &uuml;bertragen.</h3></font>"; 
 
}else{

if($_FILES["datei"]["tmp_name"] == "") {
    echo "<font color=red><h3>Fehler bei der &Uuml;bertragung, ist die Datei zu groß?</h3></font>"; 
 
}else{

if($_FILES["datei"]["size"] == 0) {
  echo "<font color=red><h3>Leere Datei!</h3></font>";

}else{
// Überprüfen der Dateiendung
if ($only_some_filetypes!=0){
// Dateiendung herausfinden, falls nicht es alles erlaubt ist
$ext=explode(".",$_FILES["datei"]["name"]);
$endung=$ext[count($ext)-1];
}
if ($only_some_filetypes==1 && strpos($extensions,$endung)!==FALSE || $only_some_filetypes==2 && strpos($extensions,$endung)===FALSE || $only_some_filetypes==0){

if ($_FILES["datei"]["size"]<($max_size*1048576)){

#Generieren des Ordnernames
if ($folder_type==1){
$folder=time(); 
}else{
$folder= substr(md5 (uniqid (rand())),0,8);
}
#Erstellen des Ordners "uploads", falls er nicht vorhanden ist
if(!is_dir("$ordner/")){
mkdir("$ordner/",0777);
}
//Falls der Ordner mit dem selben Namen bereits vorhanden ist, wird ein zufälliger Wert angehängt
if(is_dir("$ordner/$folder")){
$folder=$folder.mt_rand(0,10);
}
#erstellen des Ordners, in den der Upload hinein soll
if(mkdir("$ordner/".$folder,0777)){
#Hier gehts weiter, falls der Ordner erstellt wurde
#Upload
move_uploaded_file($_FILES["datei"]["tmp_name"],
                   "$ordner/$folder/".$_FILES["datei"]["name"]);
#Upload Datei Rechte setzen
@chmod("$ordner/$folder/".$_FILES["datei"]["name"], 0777);
#Ausgabe der "Upload erfolgreich"-Meldung
echo "<font color=red><h3>Datei <i>".$_FILES["datei"]["name"]."</i> erfolgreich &uuml;bertragen.</h3></font>";
# Anti-List-Folder-Index Datei kopieren
if ($indexfile){
$dateiname = "$ordner/$folder/index.php"; // Name der Datei
}else{
$dateiname = "$ordner/$folder/safety.php"; // Name der Datei
}
$code=substr(md5 (uniqid (rand())),0,12);
$text = '<?php'; // Dateiinhalt
$text .= "\n"; // Dateiinhalt
$text .= ' $code="'.$code.'";'; // Dateiinhalt
if ($log_ip){
$text .= "\n"; // Dateiinhalt
$text .= ' $ip="'.$_SERVER['REMOTE_ADDR'].'";'; // Dateiinhalt
}
$text .= "\n ?"; // Dateiinhalt
$text .= '>'; // Dateiinhalt
$handler = fOpen($dateiname , "w+"); // Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
fWrite($handler , $text); // Dateiinhalt in die Datei schreiben
fClose($handler); // Datei schließen


 if($_POST["time"] =="1 Min") {
	$sec = "60";
	}
	if($_POST["time"] =="1 Tag") {
	$sec = "86400";
	}
	if($_POST["time"] =="2 Tage") {
	$sec = "172800";
	}
//Speichere alles in die DB -> 
$link = "$ordner/$folder/" . $_FILES["datei"]["name"];
$added =  get_date_time(time());
$sql = "INSERT INTO links(zeit, link, file) VALUES ('".$sec."', '".$link."', '".$folder."')";
mysql_query($sql) or mysql_error();

#Ausgabe der Zwei Links
?>
                                  </td>
 </tr>
<tr>
<td align="center"><a href="<?php echo dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];?>" />Download <?php echo $_FILES["datei"]["name"];?></a></td>
<?php if ($show_delete){ ?>
<td align="center"><a href="<?php echo $_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code;?>" >L&ouml;schen</A></td>
<?php } ?></tr>
<?php if (!$show_only_links){ ?>
<tr>
<td><textarea style="width:100%;" rows="3" readonly >http://<?php echo $_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF'])."/$ordner/$folder/".$_FILES["datei"]["name"];?></Textarea></td>
<?php if ($show_delete){ ?>
<td><textarea style="width:100%;" rows="3" readonly >http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=unlink&amp;file=$folder&amp;code=".$code; ?></Textarea></td>
<?php } ?>
</tr>

<?php
}

}else{
#Ausgabe der Fehlermeldung, falls der Ordner nicht erstellt werden konnte
echo "<h3><font color=red>Fehler beim erstellen des Ordners!</font></h3>";

}
}else{
echo "<h3><font color=red>Diese Datei (".round(($_FILES["datei"]["size"]/1048576),2)." MB) ist zu groß!</font></h3>";
}
}else{
echo "<h3><font color=red>Dieser Dateityp ($endung) ist nicht erlaubt!</font></h3>";
}
}
}
}
}
?>
</table>
 <?php if ($show_adm_link){ ?>
<p  style="text-align:center;"><small><a href="<?php echo $adminphp;?>" >Admin Login</a></small></p>
<?php
}
?>
</body>
</html>

Musste mal testen.
 
Zuletzt bearbeitet:
Habe die Spalte 'added' in der SQL Tabelle hinzugefügt und er speichert auch das Datum und die Uhrzeit von einem Upload ab:

http://www.abload.de/img/datenbank3ibso.jpg

Ich habe eine File hochgeladen und nach ein paar Minuten das Script manuell über den Browser nochmal geladen. Er löscht den Link aus der SQL Datenbank raus! Also funktioniert das :)
Nun bin ich dran zu verstehen wie er den Link vom Server gelöscht werden kann, nachdem die Zeit abgelofen ist.

PHP:
<?php
    function get_date_time($timestamp = 0)
    {
    if ($timestamp)
    return date("Y-m-d H:i:s", $timestamp);
    }

//Funktion zum automatisch löschen ->
    function tuewas() {
    $res = mysql_query("SELECT zeit FROM links");
while($row = mysql_fetch_array($res)) {
    $secs = $row["zeit"];
    $dt = get_date_time(time() - $secs);
    $sql =("DELETE FROM links WHERE added <= '$dt'"); 
    mysql_query($sql) or die('Error[DELETE|LINK]: <br><pre>' . $sql . '</pre><br>MySQL-Error: ' . mysql_error());
    }
    }  
?>

In dieser Funktion frägt er ja die Zeit ab und speichert diese in die Variable timestamp.

Die function tuewas() ist dafür zuständig das der link aus der Datenbank gelöscht wird. Und diese agiert ja nur wenn ich das Script nochmal starte.

Also werde ich noch ein cronjob erstellen der nur diese Funktion sagen wir jede Minute auf dem Server ausführt oder?

Was benötige ich nun um die Dateien auch vom Server löschen zu können?
 
Siehe meinen letzten Eintrag, da ist die Funktion erweitert worden.


PHP:
<?php 
    function get_date_time($timestamp = 0) 
    { 
    if ($timestamp) 
    return date("Y-m-d H:i:s", $timestamp); 
    } 

//Funktion zum automatisch löschen -> 
    function tuewas() { 
    require_once("config.php"); 
    $res = mysql_query("SELECT id, zeit, link, file, added FROM links"); 
$rows = mysql_fetch_array($res); 
while($row = mysql_fetch_array($res)) { 
    $secs = $row["zeit"]; 
    $files = $row["file"]; 
    $added = $row["added"]; 
    $id = $row["id"]; 
    //Prüfe ob Zeit vergangen !  
    $dt = get_date_time(time() - $secs); 
    if($added <=$dt ) { 
     //test Ausgabe, um es zu verdeutlichen welche Daten gelöscht werden!
    echo "Aktuelle löschzeit:" . $secs .  "+ id = $id <br />"; 
     
    $sql =("DELETE FROM links WHERE id = '$id'"); 

$link=$row["link"];  
//lösche erst Dateien dann Ordner 
unlink("$link"); 
unlink("uploads/$files/index.php"); 
//Lösche Ordner  
rmdir("uploads/$files"); 

mysql_query($sql) or die('Error[DELETE|LINK]: <br><pre>' . $sql . '</pre><br>MySQL-Error: ' . mysql_error()); 

} 

    //else{ echo "<h3><font color=red>Die Datei ist nicht (mehr) vorhanden.</font></h3>";} 
    } 
    }
 
Ich habe die Spalte file mit
Code:
ALTER TABLE  `links` ADD  `file` VARCHAR( 50 ) NOT NULL AFTER  `link` ;

angelegt und das Script neu hochgeladen.

Nachdem ich eine File hochgeladen hat, speichert er nun in der Spalte 'file' den Ordnernamen ab. Aber in added speichert er nun keine Uhrzeit mehr:

http://www.abload.de/img/datenbank42szy.jpg

Somit bleibt der Link in der SQL Datenbank gespeichert und auch das File mit dem Ordner bleibt auf dem Server bestehen.

edit:
Liegt es daran das der folgende Befehl nicht richtig greift?:

PHP:
    echo "Aktuelle löschzeit:" . $secs .  "+ id = $id <br />";
    
    $sql =("DELETE FROM links WHERE id = '$id'");

Davor war ja folgender Befehl eingebaut:
PHP:
$sql =("DELETE FROM links WHERE added <= '$dt'");
 
Zuletzt bearbeitet:
Guck mal in phpmyadmin bei added und stelle diese mal auf Timestamp.

Dann CURRENT_TIMESTAMP bei DEFAULT und on update CURRENT_TIMESTAMP.

Sollte Dein Problem beheben.

*edit*

Und stelle mal die ID auf "auto_increment" unter extras ( in der Tabelle bei edit )
 
Funktioniert :)
Also es werden Daten von der Datenbank und dem Fileserver gelöscht.
Somit ist diese Funktion nun komplett oder?

Jetzt fehlt eigentlich nur noch die Umwandlung des entstandenen Links in einen Hash-Wert.
Ich werde mich dazu mal umsehen wie das funktioniert.

Hat vielleicht jemand grad ein Beispiel parat?

@volcem: Tausendank für die tolle Unterstützung! :)
 
Base64 dient(e) zu Übertragung von binären Daten per Text und hat mit Hashing, Verschlüsselung oder allgemein Kryptografie überhaupt nichts zu tun.

@ TE: nimm md5() oder jegliche sha-Funktion zum Hashen von Links.
 

Ähnliche Themen

Antworten
10
Aufrufe
2.023
Zurück
Oben