Upload-Formular - Probleme mit Uploadgrafik

ChaosRacer

Grünschnabel
Hallo zusammen,

muß als allererstes dazu sagen, daß ich im Bereich PHP absoluter Neulinh bin. Kenne mich zwar einigermaßen mit HTML aus aber PHP da bin ich noch nicht ganz soweit. Habe ein Problem mit nem Upload-Formular, welches ich im Netz gefunden und etwas auf meine Bedürfnisse angepasst habe. Leider läuft es nicht ganz so wie ich es mir vorstelle und ich komme leider auch nicht ganz dahinter wo die Fehler liegen könnten.

Folgendes Problem: Ich möchte gerne eine Grafik während des Uploads einblenden lassen. In der gleichen Zeit soll auch das Feld "Upload" nicht mehr sichtbar und anklickbar sein. Wenn der Upload beendet ist, soll das Formular wieder ganz normal angezeigt werden ohne diese Grafik.

Hier der Quelltext:

PHP:
<?php
/*
    +--------------------------------------------------------+
    | Applikation  : phpBuddy.eu FileSend                    |
    | Version      : 1.0                                     |
    | Release Datum: 02. September 2007                      |
    +--------------------------------------------------------+
    | Copyright (C) 2007 by Andreas Skodzek                  |
    | Email: webmaster@phpbuddy.eu                           |
    | Web  : http://www.phpbuddy.eu                          |
    |                                                        |
    | Dieses Programm ist freie Software. Sie können es      |
    | unter den Bedingungen der GNU General Public License,  |
    | wie von der Free Software Foundation veröffentlicht,   |
    | weitergeben und/oder modifizieren, entweder gemäß      |
    | Version 3 der Lizenz oder (nach Ihrer Option) jeder    |
    | späteren Version.                                      |
    |                                                        |
    | Die Veröffentlichung dieses Programms erfolgt in der   |
    | Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE |
    | IRGENDEINE GARANTIE, sogar ohne die implizite Garantie |
    | der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN       |
    | BESTIMMTEN ZWECK.                                      |
    | Details finden Sie in der GNU General Public License.  |
    | Sie sollten ein Exemplar der GNU General Public License|
    | zusammen mit diesem Programm erhalten haben. Falls     |
    | nicht, siehe <http://www.gnu.org/licenses/>.           |
    | ------------------------------------------------------ |
    | Haftungsausschluss:                                    |
    | Die Benutzung dieses Programms geschieht auf eigene    |
    | Gefahr. Weder der Author, noch phpBuddy.eu, sind für   |
    | eventuell auftretende Schäden und/oder Datenverluste   |
    | verantwortlich noch haftbar zu machen.                 |
    | ------------------------------------------------------ |
    | Rechtlicher Hinweis:                                   |
    | Es ist nicht gestattet die Copyright-Hinweise des      |
    | Authors oder phpBuddy.eu ohne vorherige schriftliche   |
    | Erlaubnis zu entfernen. Dies betrifft alle sichtbaren  |
    | (im HTML Teil) wie auch unsichtbaren (Kopfteil Scripts)|
    | Copyright Hinweise.                                    |
    +--------------------------------------------------------+
*/

// Einstellungen für das Script
$AdminPasswort   = "passwort"; // Upload Passwort
$AdminEmail      = "emailadresse@mailprovider.de"; // Admin Email
$AdminNotify     = 1; // Admin per Email informieren wenn eine Datei heruntergeladen wurde (1 = Ja | 0 = Nein)
$PfadZumScript   = "scriptpfad"; // Komplette Webadresse zum Script
$Dateiendungen   = array( "zip", "rar", "7z", "pdf", "jpg", "jpeg", "mp3", "wav", "mid", "doc", "xls", "html", "htm", "ufo"); // erlaubte Dateiendungen
$StandardBetreff = "Eine neue Datei von User"; // Standardbetreff falls kein Betreff im Formular angegeben wurde


/* ******************************************************** */
/*        ******* Ab hier nichts mehr ändern *******        */
/* ******************************************************** */

// Email auf Format pruefen
function checkEmail( $email )
{
	$nonascii      = "\x80-\xff";	
	$nqtext        = "[^\\\\$nonascii\015\012\"]";
	$qchar         = "\\\\[^$nonascii]";
	$normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
	$quotedstring  = "\"(?:$nqtext|$qchar)+\"";
	$user_part     = "(?:$normuser|$quotedstring)";
	$dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
	$dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
	$dom_tldpart   = '[a-zA-Z]{2,5}';
	$domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
	$pattern       = "$user_part\@$domain_part";
	
	if (!preg_match( "/^$pattern$/", $email ))
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}
}

// DownloadLink fuer den Mailbody
function getDownloadLink( $DownloadHash )
{
	global $PfadZumScript;
	return <<<DOWNLOADLINK
	<br><hr><br>
	Der nachfolgende Abschnitt wurde automatisch generiert.<br>
	Die für Sie hinterlegte Datei kann unter der folgenden Adresse heruntergeladen werden:<br>
	<a href="{$PfadZumScript}index.php?aktion=download&datei={$DownloadHash}">{$_FILES['datei']['name']}</a><br>
	Sollten Sie keine HTML-eMails empfangen können, rufen Sie bitte folgende Adresse in Ihrem Browser auf:<br>
	{$PfadZumScript}index.php?aktion=download&datei={$DownloadHash}<br><br>
	Nach erfolgreichem Download können Sie die Datei mit dem folgenden Link löschen:<br>
	<a href="{$PfadZumScript}index.php?aktion=loeschen&datei={$DownloadHash}">{$_FILES['datei']['name']} l&ouml;schen</a><br>
	Falls Sie keine HTML-eMail empfangen können, hier die Adresse für den manuellen Aufruf:<br>
	{$PfadZumScript}index.php?aktion=loeschen&datei={$DownloadHash}<br>
DOWNLOADLINK;
}

/* ---------------------------------------- */
/* --- Maximale Uploadgroesse ermitteln --- */
/* ---------------------------------------- */
// Die Funktionen dieses Abschnitts stammen
// von http://www.webmaster-resource.de

function PHPINIWertUmwandeln( $Groesse )
{
	$Werte['MB'] = 1048576;
	$Werte['Mb'] = 1048576;
	$Werte['M']  = 1048576;
	$Werte['m']  = 1048576;
	$Werte['KB'] = 1024;
	$Werte['Kb'] = 1024;
	$Werte['K']  = 1024;
	$Werte['k']  = 1024;

	while (list( $Schluessel ) = each( $Werte ))
	{
		if ((strlen( $Groesse ) > strlen( $Schluessel )) && (substr( $Groesse, strlen( $Groesse ) - strlen( $Schluessel )) == $Schluessel ))
		{
			$Groesse = substr( $Groesse, 0, strlen( $Groesse ) - strlen( $Schluessel ) ) * $Werte[$Schluessel];
			break;
		}
	}
	return $Groesse;
}

function UploadmoeglichkeitPruefen()
{
	$Uploadmoeglichkeit = TRUE;
	if (strtolower( @ini_get( 'file_uploads' ) ) == 'off' || @ini_get( 'file_uploads' ) ==0)
	{
		$Uploadmoeglichkeit = FALSE;
	}
	return $Uploadmoeglichkeit;
}

function MaximaleDateiuploadGroesseErmitteln()
{
	$MaximaleDateiuploadGroesse = 0;
	if ($Dateigroesse = ini_get( 'upload_max_filesize' ))
	{
		$MaximaleDateiuploadGroesse = PHPINIWertUmwandeln( $Dateigroesse );
	}
	if ($Postgroesse = ini_get( 'post_max_size' ))
	{
		$Postgroesse = PHPINIWertUmwandeln( $Postgroesse );
		if ($Postgroesse < $MaximaleDateiuploadGroesse)
		{
			$MaximaleDateiuploadGroesse = $Postgroesse;
		}
	}
	return $MaximaleDateiuploadGroesse;
}

function UploadLimit()
{
	if (UploadmoeglichkeitPruefen())
	{
		$MaximaleDateiuploadGroesse = MaximaleDateiuploadGroesseErmitteln();
		echo "<span style=\"color: #FFFFFF; font-size: 0.8em; font-weight: normal;\">(max. Dateigr&ouml;&szlig;e: " .number_format( $MaximaleDateiuploadGroesse / 1024, 0, ",", "." ). " KB)</span>";
	}
}


// --------------------------------------------------------------
//           ------   HAUPTSCRIPT BEGINNT HIER   ------
// --------------------------------------------------------------

if (isset( $_GET['aktion'] ) )
{
	switch ($_GET['aktion'])
	{
		// ------------------------------
		// ---  Neue Datei hochladen  ---
		// ------------------------------
		case 'senden':
			if (isset( $_POST['send_file'] ) &&
				$_POST['admin_passwort'] == $AdminPasswort &&
				$_FILES['datei']['size'] > 0 &&
				checkEmail( $_POST['mail_empfaenger'] ) !== false)
			{
				// Maskierung entfernen
				if (get_magic_quotes_gpc())
				{
					$_POST = array_map( 'stripslashes', $_POST );
				}
				// Pruefen ob die Dateiendung erlaubt ist
				$UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) );
				if (!in_array( $UploadDateiEndung, $Dateiendungen ))
				{
					die( "Die angehängte Datei hat eine nicht erlaubte Dateiendung!" );
				}
				// Dateiendung ok
				$ersetzen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
				$DateiNameNeu = strtr( strtolower( $_FILES['datei']['name'] ), $ersetzen );
				$DownloadHash = md5( $DateiNameNeu );
				$umask_alt = umask( 0 );
				if (@move_uploaded_file( $_FILES['datei']['tmp_name'], $DateiNameNeu ))
				{
					// Mail Header
					$MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
					$MailHeader .= "MIME-Version: 1.0\r\n";
					$MailHeader .= "Content-Type: text/html\n";
					$MailHeader .= "Content-Transfer-Encoding: 8bit\n";
					$MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
					$MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
					// Mail Betreff
					$MailBetreff = strlen( $_POST['mail_betreff'] ) > 3 ? htmlspecialchars( $_POST['mail_betreff'] ) : $StandardBetreff;
					// Mail Body
					$MailBody  = nl2br( htmlspecialchars( $_POST['mail_text'] ) );
					$MailBody .= getDownloadLink( $DownloadHash );
					if (!@mail( htmlspecialchars( $_POST['mail_empfaenger'] ), $MailBetreff, $MailBody, $MailHeader ))
					{
						$MailSendFehler = true;
					}
					// CHMOD setzen
					@chmod( $DateiNameNeu, 0755 );
					umask( $umask_alt );
					header( 'location: ' .$_SERVER['PHP_SELF']. '?status=UploadOK' );
				}
				else // Upload-Fehler
				{
					umask( $umask_alt );
					header( 'location: ' .$_SERVER['PHP_SELF']. '?status=UploadERROR' );
				}
			}
			elseif ($_POST['admin_passwort'] != $AdminPasswort)
			{
				$PasswortERROR = true;
			}
			elseif (checkEmail( $_POST['mail_empfaenger'] ) === false)
			{
				$EmailERROR = true;
			}
		break;
		
		// -----------------------------
		// ---  Datei herunterladen  ---
		// -----------------------------
		case 'download':
			if (isset( $_GET['datei'] )&&
				strlen( $_GET['datei'] ) == 32)
			{
				// Falls ein Trottel die Index-Datei runterladen will
				if ($_GET['datei'] == md5( "index.php" ))
				{
					die( "Nice try ;-)" );
				}
				// angeforderte Datei ermitteln
				foreach (glob( "*.*" ) as $Dateiname)
				{
					if ($_GET['datei'] == md5( $Dateiname ))
					{
						$DateiDownload = $Dateiname;
					}
				}
				if ($DateiDownload)
				{
					// Datei senden und ggfs Admin benachrichtigen
					header( "Content-Type: application/octet-stream" );
					header( "Content-Disposition: attachment; filename=\"" .$DateiDownload. "\"" );
					header( "Content-Length: " .filesize( $DateiDownload ) );
					header( "Pragma: no-cache" );
					header( "Expires: 0" );
					readfile( $DateiDownload );
					
					// Benachrichtigung an Admin senden
					if ($AdminNotify)
					{
						// Mail Header
						$MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
						$MailHeader .= "MIME-Version: 1.0\r\n";
						$MailHeader .= "Content-Type: text/html\n";
						$MailHeader .= "Content-Transfer-Encoding: 8bit\n";
						$MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
						$MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
						// Mail Body
						$AdminMailBody  = "Soeben wurde die Datei <strong>{$DateiDownload}</strong> heruntergeladen.<br>";
						$AdminMailBody .= "Die Datei kann über folgenden Link gelöscht werden:<br>";
						$AdminMailBody .= "<a href=\"{$PfadZumScript}index.php?aktion=loeschen&datei={$_GET['datei']}\">{$DateiDownload} l&ouml;schen</a>";
						@mail( $AdminEmail, "FileSend Datei wurde heruntergeladen", $AdminMailBody, $MailHeader );
					}
				}
				else
				{
					$DownloadERROR = true;
				}
			}
		break;
		
		// -------------------------------
		// ---  Datei vom FTP loeschen ---
		// -------------------------------
		case 'loeschen':
			if (isset( $_GET['datei'] )&&
				strlen( $_GET['datei'] ) == 32)
			{
				// Falls ein Trottel die Index-Datei loeschen will
				if ($_GET['datei'] == md5( "index.php" ))
				{
					die( "Nice try ;-)" );
				}
				// Zu loeschende Datei ermitteln
				foreach (glob( "*.*" ) as $Dateiname)
				{
					$DateiIndex[] = md5( $Dateiname );
					if ($_GET['datei'] == md5( $Dateiname ))
					{
						if (@unlink( $Dateiname ))
						{
							$LoeschenOK = true;
						}
					}
				}
				if (is_array( $DateiIndex ))
				{
					if (!in_array( $_GET['datei'], $DateiIndex))
					{
						$LoeschenERROR = true;
					}
				}
			}		
		break;
	}
}
?>
<!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>
<BODY bgcolor="#000000">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload-Bereich von User</title>
<style type="text/css">
<!--
* { margin: 0; padding: 0; }
body { text-align: center; font: normal 62.5% Verdana, Arial, Helvetica, sans-serif;}
#rahmen { width: 500px; margin: 1.5em auto; text-align: left; }
fieldset { padding: 0px 15px; border: solid 1px #FF0000; }
legend { font: bold 1.8em "Courier New", Courier, monospace; color: #FF0000; }
label { display: block; font-size: 1.2em; font-weight: bold; margin-top: 1.0em; color: #FF0000; }
input { width: 250px; }
textarea { width: 400px; height: 160px; }
input.file { width: 400px; }
input.button { width: 150px; margin: 25px 0px 20px 128px; }
h1 { font: bold 2.2em Arial, Helvetica, sans-serif; margin-bottom: 1.2em; text-align: center; }
h3 { font: bold 1.2em Verdana, Arial, Helvetica, sans-serif; }
p { font-size: 1.2em; text-align: justify; }
.hinweis { color: #FF0000; }
-->
</style>

<script type="text/javascript">
<!-- 
function checkForm()
{
    var Fehlermeldung = "";
    if (document.FileSend.admin_passwort.value == "")
    {
        Fehlermeldung += "Bitte das Passwort für den Upload eingeben!\n";
    }
    if (document.FileSend.datei.value == "")
    {
        Fehlermeldung += "Bitte eine Datei für den Upload auswählen!\n";
    }
    if (Fehlermeldung)
    {
        alert(Fehlermeldung);
        return false;
    }
    else
    {
        return true;
    }
}
// -->
</script>

</head>

<body>
<div id="rahmen">
    <h1><font color="#FFFFFF">Herzlich Willkommen User</font></h1>
<?php
// Upload-Meldungen
if ($_GET['status'] == 'UploadOK') echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die Datei wurde erfolgreich übertragen!</font></h3><br>';
if ($_GET['status'] == 'UploadERROR') echo '<h3><span class="hinweis">F E H L E R:</span> <font color="#FFFFFF">Die Datei konnte nicht übertragen werden!<br>Bitte stellen Sie sicher daß das Verzeichnis die benötigten CHMOD 777 Rechte hat und das Uploadlimit nicht überschritten wurde!</font></h3><br>';
if ($EmailERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die angegebene eMail-Adresse hat kein gültiges Format!</font></h3><br>';
if ($PasswortERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Das angegebene Passwort ist nicht korrekt!</font></h3><br>';
if ($MailSendFehler) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Beim senden der eMail trat ein Fehler auf!</font></h3><br>';
// Loesch-Meldungen
if ($LoeschenOK) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Vielen Dank, die Datei wurde erfolgreich gelöscht!</font></h3><br>';
if ($LoeschenERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die Datei konnte nicht gelöscht werden, da sie vermutlich bereits vom FTP-Server entfernt wurde!</font></h3><br>';
// Download-Meldung
if ($DownloadERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die angeforderte Datei konnte nicht gefunden werden!</font></h3><br>';
?>
    <form name="FileSend" id="FileSend" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?aktion=senden" enctype="multipart/form-data">
    <fieldset>
    <legend>Datei Upload</legend>
        <p style="margin: 20px 0px; color: #FFFFFF;">Die mit * (Stern) gekennzeichneten Felder sind "Pflichtfelder" und sind für einen fehlerfreien Datei-Upload zwingend erforderlich.<br></p>
        <label for="admin_passwort">Passwort*:</label><input type="password" name="admin_passwort" id="admin_passwort" />
        <label for="mail_empfaenger">e-Mail Empfänger*:</label><input type="text" name="mail_empfaenger" id="mail_empfaenger" value="<?php echo $_POST['mail_empfaenger']; ?>" />
        <label for="mail_betreff">eMail Betreff:</label><input type="text" name="mail_betreff" id="mail_betreff" value="<?php echo $_POST['mail_betreff']; ?>" />
        <label for="mail_text">Nachricht:</label><textarea name="mail_text" id="mail_text"><?php echo $_POST['mail_text']; ?></textarea>
        <label for="datei">Datei für den Upload: <?php UploadLimit(); ?></label><input type="file" name="datei" id="datei" size="50" class="file" /><br /><font color="#FFFFFF">Erlaubte Dateitypen: <br>zip, rar, 7z, pdf, jpg, jpeg, mp3, wav, doc, xls, html, htm, ufo</font>
        <input type="submit" name="send_file" id="send_file" value="Upload & eMail senden" class="button" onClick="return checkForm();" />
    <p><font color="#FFFFFF">Bitte nicht mehrfach auf "Upload & eMail senden" klicken. Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit!
Auch wenn es den Anschein macht, das sich nichts mehr tut, bitte abwarten bis eine Rückmeldung im oberen Bereich des Upload-Formular's erscheint.<br><br></font></p></fieldset>
    </form>
</div>
</body>
</html>

Normalerweise sollte man nur einen Teil posten denke ich, aber da ich nicht weiss wo ich suchen muß, hoffe ich das mir hier jemand helfen kann. Sollte ich das alles in eine Datei schreiben oder vieleicht in mehrere php-Dateien aufteilen? Wie würde das dann gehen und wer kann mir sagen wie ich das oben genannte Problem in den Griff bekomme?

Sollte im IE und im Firefox funktionieren. Das wäre schon sehr wichtig. Danke im voraus.

Gruß

ChaosRacer
 
Hi,

das hat nichts mit PHP zu tun. Du willst doch nach Klick auf den Submit-Button bevor das Formular abgeschickt wird (und PHP zum Einsatz kommt) das Dokument im Browser (also dem Client) verändern.

Dazu kannst Du Dir z.B. ein Div mit Deiner Upload-Grafik schön mittig positionieren und per CSS auf display:none setzen. Beim Absenden des Formulars (onsubmit) kannst Du dann die display-Eigenschaft des Divs per Javascript auf "block" setzen. Genauso kannst Du auch gleichzeitig Dein Upload-Feld ausblenden, wobei das vielleicht eher seltsam aussieht. Du könntest auch alle Formularfelder über die disabled-Eigenschaft sperren (werden dann ausgegraut dargestellt).

LG
 
Hallo,

das mit diesen div habe ich schon mehrfach gelesen und auch ausprobiert. Leider hat es nie so funktioniert wie es sollte. Die Grafik wurde zwar angezeigt, aber der Button für das senden verschob sich nur nach unten. Außerdem wurde die Grafik nach dem upload nicht mehr weggeblendet. Hatte auch noch festgestellt, daß das im Firefox funktionierte aber im IE der Button "senden" komplett verschwunden war. Deswegen habe ich erst einmal den Ursprung wieder hergestellt. Wo muß ich das denn reinschreiben in die Datei? Bitte um ein Beispiel da ich mit den Codeschnipseln noch nicht so richtig zurecht komme.

Danke

Gruß

ChaosRacer
 
Hi,

poste lieber Deinen Versuch. Dann können wir Dir helfen. Sonst bekommst Du nur wieder einen Codeschnipsel, mit dem Du nicht zurechtkommst, mit etwas Pech sogar den gleichen an dem Du schon gescheitert bist... ;)

LG

Ich geh jetzt allerdings an der Matratze horchen...
 
Hallo,

ok hier ist mein Versuch. Wie gesagt funktioniert nicht so ganz weil im IE der Button "senden" nicht aus bzw. weggeblendet wird und die Grafik bleibt auch nach einem fertigen Upload da stehen. Würde auch noch gerne zusätzlich was geschriebenes z.B. Bitte warten mit einblenden.

Hier der Code aus meinem Versuch:

PHP:
<?php
/*
    +--------------------------------------------------------+
    | Applikation  : phpBuddy.eu FileSend                    |
    | Version      : 1.0                                     |
    | Release Datum: 02. September 2007                      |
    +--------------------------------------------------------+
    | Copyright (C) 2007 by Andreas Skodzek                  |
    | Email: webmaster@phpbuddy.eu                           |
    | Web  : http://www.phpbuddy.eu                          |
    |                                                        |
    | Dieses Programm ist freie Software. Sie können es      |
    | unter den Bedingungen der GNU General Public License,  |
    | wie von der Free Software Foundation veröffentlicht,   |
    | weitergeben und/oder modifizieren, entweder gemäß      |
    | Version 3 der Lizenz oder (nach Ihrer Option) jeder    |
    | späteren Version.                                      |
    |                                                        |
    | Die Veröffentlichung dieses Programms erfolgt in der   |
    | Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE |
    | IRGENDEINE GARANTIE, sogar ohne die implizite Garantie |
    | der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN       |
    | BESTIMMTEN ZWECK.                                      |
    | Details finden Sie in der GNU General Public License.  |
    | Sie sollten ein Exemplar der GNU General Public License|
    | zusammen mit diesem Programm erhalten haben. Falls     |
    | nicht, siehe <http://www.gnu.org/licenses/>.           |
    | ------------------------------------------------------ |
    | Haftungsausschluss:                                    |
    | Die Benutzung dieses Programms geschieht auf eigene    |
    | Gefahr. Weder der Author, noch phpBuddy.eu, sind für   |
    | eventuell auftretende Schäden und/oder Datenverluste   |
    | verantwortlich noch haftbar zu machen.                 |
    | ------------------------------------------------------ |
    | Rechtlicher Hinweis:                                   |
    | Es ist nicht gestattet die Copyright-Hinweise des      |
    | Authors oder phpBuddy.eu ohne vorherige schriftliche   |
    | Erlaubnis zu entfernen. Dies betrifft alle sichtbaren  |
    | (im HTML Teil) wie auch unsichtbaren (Kopfteil Scripts)|
    | Copyright Hinweise.                                    |
    +--------------------------------------------------------+
*/

// Einstellungen für das Script
$AdminPasswort   = "passwort"; // Upload Passwort
$AdminEmail      = "emailadresse@mailprovider.de"; // Admin Email
$AdminNotify     = 1; // Admin per Email informieren wenn eine Datei heruntergeladen wurde (1 = Ja | 0 = Nein)
$PfadZumScript   = "scriptpfad"; // Komplette Webadresse zum Script
$Dateiendungen   = array( "zip", "rar", "7z", "pdf", "jpg", "jpeg", "mp3", "wav", "mid", "doc", "xls", "html", "htm", "ufo"); // erlaubte Dateiendungen
$StandardBetreff = "Eine neue Datei von User"; // Standardbetreff falls kein Betreff im Formular angegeben wurde


/* ******************************************************** */
/*        ******* Ab hier nichts mehr ändern *******        */
/* ******************************************************** */

// Email auf Format pruefen
function checkEmail( $email )
{
	$nonascii      = "\x80-\xff";
	$nqtext        = "[^\\\\$nonascii\015\012\"]";
	$qchar         = "\\\\[^$nonascii]";
	$normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
	$quotedstring  = "\"(?:$nqtext|$qchar)+\"";
	$user_part     = "(?:$normuser|$quotedstring)";
	$dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
	$dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
	$dom_tldpart   = '[a-zA-Z]{2,5}';
	$domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
	$pattern       = "$user_part\@$domain_part";

	if (!preg_match( "/^$pattern$/", $email ))
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}
}

// DownloadLink fuer den Mailbody
function getDownloadLink( $DownloadHash )
{
	global $PfadZumScript;
	return <<<DOWNLOADLINK
	<br><hr><br>
	Der nachfolgende Abschnitt wurde automatisch generiert.<br>
	Die für Sie hinterlegte Datei kann unter der folgenden Adresse heruntergeladen werden:<br>
	<a href="{$PfadZumScript}index.php?aktion=download&datei={$DownloadHash}">{$_FILES['datei']['name']}</a><br>
	Sollten Sie keine HTML-eMails empfangen können, rufen Sie bitte folgende Adresse in Ihrem Browser auf:<br>
	{$PfadZumScript}index.php?aktion=download&datei={$DownloadHash}<br><br>
	Nach erfolgreichem Download können Sie die Datei mit dem folgenden Link löschen:<br>
	<a href="{$PfadZumScript}index.php?aktion=loeschen&datei={$DownloadHash}">{$_FILES['datei']['name']}</a><br>
	Falls Sie keine HTML-eMail empfangen können, hier die Adresse für den manuellen Aufruf:<br>
	{$PfadZumScript}index.php?aktion=loeschen&datei={$DownloadHash}<br>
DOWNLOADLINK;
}

/* ---------------------------------------- */
/* --- Maximale Uploadgroesse ermitteln --- */
/* ---------------------------------------- */
// Die Funktionen dieses Abschnitts stammen
// von http://www.webmaster-resource.de

function PHPINIWertUmwandeln( $Groesse )
{
	$Werte['MB'] = 1048576;
	$Werte['Mb'] = 1048576;
	$Werte['M']  = 1048576;
	$Werte['m']  = 1048576;
	$Werte['KB'] = 1024;
	$Werte['Kb'] = 1024;
	$Werte['K']  = 1024;
	$Werte['k']  = 1024;

	while (list( $Schluessel ) = each( $Werte ))
	{
		if ((strlen( $Groesse ) > strlen( $Schluessel )) && (substr( $Groesse, strlen( $Groesse ) - strlen( $Schluessel )) == $Schluessel ))
		{
			$Groesse = substr( $Groesse, 0, strlen( $Groesse ) - strlen( $Schluessel ) ) * $Werte[$Schluessel];
			break;
		}
	}
	return $Groesse;
}

function UploadmoeglichkeitPruefen()
{
	$Uploadmoeglichkeit = TRUE;
	if (strtolower( @ini_get( 'file_uploads' ) ) == 'off' || @ini_get( 'file_uploads' ) ==0)
	{
		$Uploadmoeglichkeit = FALSE;
	}
	return $Uploadmoeglichkeit;
}

function MaximaleDateiuploadGroesseErmitteln()
{
	$MaximaleDateiuploadGroesse = 0;
	if ($Dateigroesse = ini_get( 'upload_max_filesize' ))
	{
		$MaximaleDateiuploadGroesse = PHPINIWertUmwandeln( $Dateigroesse );
	}
	if ($Postgroesse = ini_get( 'post_max_size' ))
	{
		$Postgroesse = PHPINIWertUmwandeln( $Postgroesse );
		if ($Postgroesse < $MaximaleDateiuploadGroesse)
		{
			$MaximaleDateiuploadGroesse = $Postgroesse;
		}
	}
	return $MaximaleDateiuploadGroesse;
}

function UploadLimit()
{
	if (UploadmoeglichkeitPruefen())
	{
		$MaximaleDateiuploadGroesse = MaximaleDateiuploadGroesseErmitteln();
		echo "<span style=\"color: #FFFFFF; font-size: 0.8em; font-weight: normal;\">(max. Dateigr&ouml;&szlig;e: " .number_format( $MaximaleDateiuploadGroesse / 1024, 0, ",", "." ). " KB)</span>";
	}
}


// --------------------------------------------------------------
//           ------   HAUPTSCRIPT BEGINNT HIER   ------
// --------------------------------------------------------------

if (isset( $_GET['aktion'] ) )
{
	switch ($_GET['aktion'])
	{
		// ------------------------------
		// ---  Neue Datei hochladen  ---
		// ------------------------------
		case 'senden':
			if (isset( $_POST['send_file'] ) &&
				$_POST['admin_passwort'] == $AdminPasswort &&
				$_FILES['datei']['size'] > 0 !== false)
			{
				// Maskierung entfernen
				if (get_magic_quotes_gpc())
				{
					$_POST = array_map( 'stripslashes', $_POST );
				}
				// Pruefen ob die Dateiendung erlaubt ist
				$UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) );
				if (!in_array( $UploadDateiEndung, $Dateiendungen ))
				{
					die( "Die angehängte Datei hat eine nicht erlaubte Dateiendung!" );
				}
				// Dateiendung ok
				$ersetzen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
				$DateiNameNeu = strtr( strtolower( $_FILES['datei']['name'] ), $ersetzen );
				$DownloadHash = md5( $DateiNameNeu );
				$umask_alt = umask( 0 );
				if (@move_uploaded_file( $_FILES['datei']['tmp_name'], $DateiNameNeu ))
				{
					// Mail Header
					$MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
					$MailHeader .= "MIME-Version: 1.0\r\n";
					$MailHeader .= "Content-Type: text/html\n";
					$MailHeader .= "Content-Transfer-Encoding: 8bit\n";
                                         $MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
					$MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
					// Mail Betreff
					$MailBetreff = strlen( $_POST['mail_betreff'] ) > 3 ? htmlspecialchars( $_POST['mail_betreff'] ) : $StandardBetreff;
					// Mail Body
					$MailBody  = nl2br( htmlspecialchars( $_POST['mail_text'] ) );
					$MailBody .= getDownloadLink( $DownloadHash );
					if (!@mail ( $AdminEmail, $MailBetreff, $MailBody, $MailHeader ))
					{
						$MailSendFehler = true;
					}
					// CHMOD setzen
					@chmod( $DateiNameNeu, 0755 );
					umask( $umask_alt );
					header( 'location: ' .$_SERVER['PHP_SELF']. '?status=UploadOK' );
				}
				else // Upload-Fehler
				{
					umask( $umask_alt );
					header( 'location: ' .$_SERVER['PHP_SELF']. '?status=UploadERROR' );
				}
			}
			elseif ($_POST['admin_passwort'] != $AdminPasswort)
			{
				$PasswortERROR = true;
			}

		break;

		// -----------------------------
		// ---  Datei herunterladen  ---
		// -----------------------------
		case 'download':
			if (isset( $_GET['datei'] )&&
				strlen( $_GET['datei'] ) == 32)
			{
				// Falls ein Trottel die Index-Datei runterladen will
				if ($_GET['datei'] == md5( "index.php" ))
				{
					die( "Nice try ;-)" );
				}
				// angeforderte Datei ermitteln
				foreach (glob( "*.*" ) as $Dateiname)
				{
					if ($_GET['datei'] == md5( $Dateiname ))
					{
						$DateiDownload = $Dateiname;
					}
				}
				if ($DateiDownload)
				{
					// Datei senden und ggfs Admin benachrichtigen
					header( "Content-Type: application/octet-stream" );
					header( "Content-Disposition: attachment; filename=\"" .$DateiDownload. "\"" );
					header( "Content-Length: " .filesize( $DateiDownload ) );
					header( "Pragma: no-cache" );
					header( "Expires: 0" );
					readfile( $DateiDownload );

					// Benachrichtigung an Admin senden
					if ($AdminNotify)
					{
						// Mail Header
						$MailHeader  = "From:{$AdminEmail}<{$AdminEmail}>\n";
						$MailHeader .= "MIME-Version: 1.0\r\n";
						$MailHeader .= "Content-Type: text/html\n";
						$MailHeader .= "Content-Transfer-Encoding: 8bit\n";
						$MailHeader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
						$MailHeader .= "X-Mailer: PHP v" .phpversion(). "\r\n";
						// Mail Body
						$AdminMailBody  = "Soeben wurde die Datei <strong>{$DateiDownload}</strong> heruntergeladen.<br>";
						$AdminMailBody .= "Die Datei kann über folgenden Link gelöscht werden:<br>";
						$AdminMailBody .= "<a href=\"{$PfadZumScript}index.php?aktion=loeschen&datei={$_GET['datei']}\">{$DateiDownload} l&ouml;schen</a>";
						@mail( $AdminEmail, "FileSend Datei wurde heruntergeladen", $AdminMailBody, $MailHeader );
					}
				}
				else
				{
					$DownloadERROR = true;
				}
			}
		break;

		// -------------------------------
		// ---  Datei vom FTP loeschen ---
		// -------------------------------
		case 'loeschen':
			if (isset( $_GET['datei'] )&&
				strlen( $_GET['datei'] ) == 32)
			{
				// Falls ein Trottel die Index-Datei loeschen will
				if ($_GET['datei'] == md5( "index.php" ))
				{
					die( "Nice try ;-)" );
				}
				// Zu loeschende Datei ermitteln
				foreach (glob( "*.*" ) as $Dateiname)
				{
					$DateiIndex[] = md5( $Dateiname );
					if ($_GET['datei'] == md5( $Dateiname ))
					{
						if (@unlink( $Dateiname ))
						{
							$LoeschenOK = true;
						}
					}
				}
				if (is_array( $DateiIndex ))
				{
					if (!in_array( $_GET['datei'], $DateiIndex))
					{
						$LoeschenERROR = true;
					}
				}
			}
		break;
	}
}
?>
<!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>
<BODY bgcolor="#000000" style= alink="#000099" link="red" vlink="#999999">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload-Bereich von User</title>
<style type="text/css">
<!--
* { margin: 0; padding: 0; }
body { text-align: center; font: normal 62.5% Verdana, Arial, Helvetica, sans-serif;}
#rahmen { width: 500px; margin: 1.5em auto; text-align: left; }
fieldset { padding: 0px 15px; border: solid 1px #FF0000; }
legend { font: bold 1.8em "Courier New", Courier, monospace; color: #FF0000; }
label { display: block; font-size: 1.2em; font-weight: bold; margin-top: 1.0em; color: #FF0000; }
input { width: 250px; }
textarea { width: 400px; height: 160px; }
input.file { width: 400px; }
input.button { width: 150px; margin: 25px 0px 20px 128px; }
h1 { font: bold 2.2em Arial, Helvetica, sans-serif; margin-bottom: 1.2em; text-align: center; }
h3 { font: bold 1.2em Verdana, Arial, Helvetica, sans-serif; }
p { font-size: 1.2em; text-align: justify; }
.hinweis { color: #FF0000; }
-->
</style>

<script type="text/javascript">
<!--
function checkForm()
{
    var Fehlermeldung = "";
    if (document.FileSend.admin_passwort.value == "")
    {
        Fehlermeldung += "Bitte das Passwort für den Upload eingeben!\n";
    }
    if (document.FileSend.datei.value == "")
    {
        Fehlermeldung += "Bitte eine Datei für den Upload auswählen!\n";
    }
    if (Fehlermeldung)
    {
        alert(Fehlermeldung);
        return false;
    }
    else
    {
        return true;
    }
}
// -->
</script>

<script type="text/javascript">

	function showWaitMessage() {

        	document.getElementById("submitDiv").style.display = "none";
		document.getElementById("waitingDiv").style.display = "block";
		document.getElementById("progressBar").innerHTML = "<img alt='Bitte warten...' src='progressbar.gif' />";

	}//fu

</script>
<script language="JAVASCRIPT" type="TEXT/JAVASCRIPT">
<!--
var win=null;
function NewWindow(mypage,myname,w,h,pos,infocus){
if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;mytop=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)?(screen.height-h)/2:100;}
else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20}
settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + ",scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no";win=window.open(mypage,myname,settings);
win.focus();}
// -->
</script>
</head>
<body>
<div id="rahmen">
<h1><font color="#FFFFFF">Herzlich Willkommen User</font></h1>
    <fieldset>
    <legend>Upload Meldungen</legend>
    <br>
    <?php
// Upload-Meldungen
if ($_GET['status'] == 'UploadOK') echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die Datei wurde erfolgreich übertragen!</font></h3><br>';
if ($_GET['status'] == 'UploadERROR') echo '<h3><span class="hinweis">F E H L E R:</span> <font color="#FFFFFF">Die Datei konnte nicht übertragen werden!<br>Bitte stellen Sie sicher daß das Verzeichnis die benötigten CHMOD 777 Rechte hat und das Uploadlimit nicht überschritten wurde!</font></h3><br>';
if ($PasswortERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Das angegebene Passwort ist nicht korrekt!</font></h3><br>';
if ($MailSendFehler) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Beim senden der eMail trat ein Fehler auf!</font></h3><br>';
// Loesch-Meldungen
if ($LoeschenOK) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Vielen Dank, die Datei wurde erfolgreich gelöscht!</font></h3><br>';
if ($LoeschenERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die Datei konnte nicht gelöscht werden, da sie vermutlich bereits vom FTP-Server entfernt wurde!</font></h3><br>';
// Download-Meldung
if ($DownloadERROR) echo '<h3><span class="hinweis">Hinweis:</span> <font color="#FFFFFF">Die angeforderte Datei konnte nicht gefunden werden!</font></h3><br>';
?></fieldset>
    </form>
</div><br>
<div id="rahmen">
    <fieldset>
    <legend>Fertige Uploads</legend>
        <p style="margin: 20px 0px; color: #FFFFFF;">Alle fertigen Uploads bleiben max. 30 Tage auf dem Server erhalten. Danach werden diese in der Regel automatisch gelöscht. Bei weiteren Fragen wenden Sie sich an den Administrator!<br>

<?php
  // tabelle
  echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";

  echo "<tr style=\"font-weight:bold;\">\n";
  echo "  <td style=\"width:200px;color:#ffffff;font-size:10pt;\">Dateiname</td>\n";
  echo "  <td style=\"width:200px;color:#ffffff;font-size:10pt;\">Größe in KB</td>\n";
  echo "  <td style=\"width:200px;color:#ffffff;font-size:10pt;\">Upload am</td>\n";
  echo "</tr>\n";


  // fuer alle .jpg bilder zB sowas:
  // foreach(glob(".jpg") as $datei) {
  foreach(glob("{*.zip,*.rar,*.7z,*.pdf,*.jpg,*.jpeg,*.mp3,*.wav,*.doc,*.xls,*.html,*.htm}", GLOB_BRACE) as $datei) {

  // groesse
 $groesse = filesize($datei)/1024;

    // letzte aenderung
    $aenderung = date("d.m.y, H:i:s", filemtime($datei));

    if($i%2 == 0) {
      echo "<tr>\n";
    } else {
      echo "<tr style=\"background-color:#000000; color:#000000\">\n";
    }
      echo "  <td style=\"width:200px;font-size:8pt;\"><a href=\" " .$datei . "\">" . $datei . "</a></td>\n";
      echo "  <td style=\"width:200px;font-size:8pt;color:#ffffff;\">".round($groesse, 2)."</td>\n";
      echo "  <td style=\"width:200px;font-size:8pt;color:#ffffff;\">" . $aenderung . "</td>\n";
      echo "</tr>\n";

    $i++;
  }

  echo "</table>\n";
?>
<br><br>
        </p>

    </fieldset>
    </form>
</div><br>


<div id="rahmen">
    <fieldset>
    <legend>Up- & Downloadrechner</legend>
<p style="margin: 20px 0px; color: #FFFFFF;">Hier findet ihr einen kleinen "Up- &  Downloadrechner". Mit diesem Rechner könnt ihr vor dem Upload die ungefähre Ladezeit einer Datei ermitteln.</p><center><input name="B1" value="Up- &amp; Downloadrechner" onclick=
                    "NewWindow('http://pfadzumrechner.html','mypopup','700','500','center','front');" type=
                    "button"><br><br></center>
  </fieldset>
    </form>
</div><br>
<div id="rahmen">
    <form name="FileSend" id="FileSend" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?aktion=senden" enctype="multipart/form-data" onsubmit="showWaitMessage();">
    <fieldset>
    <legend>Neuer Upload</legend>
        <p style="margin: 20px 0px; color: #FFFFFF;">Die mit * (Stern) gekennzeichneten Felder sind "Pflichtfelder" und sind für einen fehlerfreien Datei-Upload zwingend erforderlich. Der Upload kann je nach Verbindungsgeschwindigkeit mehrere Minuten in Anspruch nehmen. Bitte das Fenster in dieser Zeit NICHT schließen, da sonst der Upload unterbrochen wird!<br><br></p>
        <label for="admin_passwort">Passwort*:</label><input type="password" name="admin_passwort" id="admin_passwort" />
        <label for="mail_text">Nachricht:</label><textarea name="mail_text" id="mail_text"><?php echo $_POST['mail_text']; ?></textarea>
        <label for="datei">Datei für den Upload: <?php UploadLimit(); ?></label><input type="file" name="datei" id="datei" size="50" class="file" /><br /><font color="#FFFFFF">Erlaubte Dateitypen: <br>zip, rar, 7z, pdf, jpg, jpeg, mp3, wav, doc, xls, html, htm, ufo</font><br><br>

		<div id="submitDiv"></div>
<div id="waitingDiv" style="display:none">
			<center><div id="progressBar"><img alt="Bitte warten..." src="progressbar.gif"></center></div>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="send_file" id="send_file" value="Upload & eMail senden" class="button" onClick="return checkForm();" />

    <p><font color="#FFFFFF">Bitte nicht mehrfach auf "Upload & eMail senden" klicken. Die Upload-Geschwindigkeit ist abhängig von der Internetverbindung. Dateien mit mehreren MB (50, 100 oder mehr) dauern selbst mit DSL seine Zeit!
Auch wenn es den Anschein macht, das sich nichts mehr tut, bitte abwarten bis eine Rückmeldung im oberen Bereich unter "Upload Meldungen" erscheint.<br><br></font></p></fieldset>
    </form>
</div>
</body>
</html>

Ich hoffe ihr findet den Fehler. Danke.

Gruß

ChaosRacer
 
Hi,

Du hast die DIVs falsch eingebaut. Das DIV mit der id "submitDiv" muss natürlich das Formular enthalten, das wird doch dann komplett ausgeblendet.
Das DIV mit der id "waitingDiv" muss dann natürlich ausserhalb des Formular-DIVs notiert werden.
Übrigens müssen Element-IDs dokumentweit eindeutig sein, Du hast da mehrere DIVs mit der id "rahmen". Wenn Du mehrere Elemente gleich formatieren möchtest, dann vergib Klassen.

Lass das nächste Mal den ganzen PHP-Sermon weg, das hat ja, wie gesagt, nichts mit PHP zu tun.

LG
 
Nabend zusammen,

danke an kuddeldaddeldu. Habe das Script jetzt umgebaut und siehe da es funktioniert nun doch so wie ich es haben wollte. Im nach hinein klingt das mit den DIV's auch logisch. Aber ich muß mich halt noch ein wenig damit beschäftigen damit ich das ganze richtig verstehe.

Nun habe ich aber noch ein anderes Problem bzw. Frage: Wie und vor allem wo baue ich noch eine Abfrage ein wenn eine Datei mit dem gleichen Namen raufgeladen wird? Es sollte dann entweder eine Fehlermeldung kommen mit der Möglichkeit die Datei umzubenennen oder wahlweise den Upload abzubrechen.

Ist es auch möglich einen Ordner anzugeben, wo die Dateien reingeladen werden? Hab schon einiges im Netz gefunden an Codeschnipseln, weiß aber nicht wo und wie ich diese in mein Script einbauen muß?

Was ich noch zusätzlich bräuchte, wäre ein "Abbrechen"- Button welcher während des Uploads bei der Uploadgrafik erscheint.

Würde mich freuen wenn mir da nochmal jemand (kuddeldaddeldu vieleicht?) unter die Arme greifen könnte.

Gruß

ChaosRacer
 
Zurück