CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
13.07.2006, 21:48:52
|
Anfänger
|
|
Registriert seit: Jul 2006
Beiträge: 4
|
|
Fehler im Uploadscript
Moin
Sorry das schon wieder ein Thema mit nem Uploadscript kommt. :D
Ich hab hier ein kleines Script das ich mit ein wenig hilfe versucht hab etwas zu verbessern. Sieht auch alles sehr schön aus. Nur funktionierts nicht und ich find den oder die Fehler beim besten willen nicht. Vielleicht kann sich das mal jemand anschauen und ggf. testen.
Es kommen keine Fehlermeldungen, keine Bestätigung das was hochgeladen wurde und es wird nichts hochgeladen. Ich denke/hoffe das Script ist einigermasen übersichtlich.
PHP-Code:
<?php
ini_set ('error_reporting', E_ALL);
$pfad = 'upload/';
$dateiupload_erfolgreich = false;
function CheckFilename($dateiname,$pfad)
{
global $fehler; $fehler = array();
if (file_exists($pfad.$dateiname)) array_push($fehler, 'Es existiert bereits eine Datei mit dem Namen!');
if(!in_array(strtolower(substr($dateiname,-4)),array('.jpg','jpeg','.png','.gif'))) array_push($fehler, 'Bitte nur Bilder mit der Endung .jpg, .jpeg, .png oder .gif hochladen!');
return (sizeof($fehler)) ? $dateiname : false;
}
function CheckFile($dateiname_temp,$dateifehler,$dateigroesse)
{
global $fehler; $fehler = array();
switch ($dateifehler) {
case '1': $dateifehler_erklaerung ='Die hochgeladene Datei überschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Größe.'; break;
case '2': $dateifehler_erklaerung = 'Die hochgeladene Datei überschreitet die in dem HTML Formular mittels der Anweisung MAX_FILE_SIZE angegebene maximale Dateigröße.'; break;
case '3': $dateifehler_erklaerung = 'Die Datei wurde nur teilweise hochgeladen.'; break;
case '4': $dateifehler_erklaerung = 'Es wurde keine Datei hochgeladen.'; break;
}
if($dateifehler) array_push($fehler, $dateifehler_erklaerung);
if ($dateigroesse < 1) array_push($fehler, 'Sie haben versucht keine oder eine lehre Datei hochzuladen.');
return (sizeof($fehler)) ? $dateiname_temp : false;
}
if(!empty($_POST['Send']))
{
if ($dateiname = CheckFilename($_FILES['Datei']['name'],$pfad))
{
if ($dateiname_temp = CheckFile($_FILES['Datei']['tmp_name'],$_FILES['Datei']['error'],$_FILES['Datei']['size']))
{
move_uploaded_file($dateiname_temp, $pfad.$dateiname);
if (filesize($pfad.$dateiname)<1) die ('Sie haben versucht eine leerer Datei hochzuladen!');
$dateiupload_erfolgreich = true;
}
else $fehlermeldungen_ausgeben = true;
}
else $fehlermeldungen_ausgeben = true;
}
?>
<html>
<head>
<title>Datei-Upload</title>
</head>
<body>
<?php
if ($dateiupload_erfolgreich)
{
?>Ihre Datei ("<?php echo $dateiname; ?>") wurde hochgeladen. Sie können nun weitere Dateien hochladen.<?php
}
elseif (!empty($fehler))
{
?>
<br>Es sind folgende Fehler aufgetreten:<br>
<?php
foreach ($fehler as $fehlermeldung) {
echo $fehlermeldung.'<br>';
}
?>Beseitigen sie wenn möglich den Fehler und versuchen sie es erneut.<?php
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
<input name="Datei" type="file"><br>
<input name="Send" type="submit" value="Upload">
</form>
</body>
</html>
|
13.07.2006, 22:37:40
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Fehler im Uploadscript
Verwende erst einmal Testausgaben, um zu prüfen, welche der Zweige der einzelnen Bedingungen überhaupt durchlaufen werden. So lässt sich das Problem schon mal ein wenig eingrenzen.
|
13.07.2006, 23:09:10
|
Anfänger
|
|
Registriert seit: Jul 2006
Beiträge: 4
|
|
AW: Fehler im Uploadscript
Moin
Beide Funktionen werden durchlaufen aber die zweite Funktion gibt wohl false zurück denn die if-Abfrage
PHP-Code:
if ($dateiname_temp = CheckFile($_FILES['Datei']['tmp_name'],$_FILES['Datei']['error'],$_FILES['Datei']['size']))
wird nicht mehr durchlaufen.
Wenn ich aber vor dem return in Funktion CheckFile mal die Fehler ausgeben möchte mit
PHP-Code:
foreach ($fehler as $fehlermeldung) {
echo $fehlermeldung.'<br>'; }
wird nichts angezeigt.
Wie ist es eigentlich mit der globalen Variable $fehler. Die muß ich doch eigentlich nicht in beiden Funktionen difinieren?!
PHP-Code:
global $fehler; $fehler = array();
|
14.07.2006, 09:08:34
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Fehler im Uploadscript
Ermittel dazu am besten mit var_dump(), was CheckFilename() und CheckFile() zurückgeben.
|
14.07.2006, 14:07:33
|
Anfänger
|
|
Registriert seit: Jul 2006
Beiträge: 4
|
|
AW: Fehler im Uploadscript
Moin
Wenn ich versuch ein Bild hochzuladen, was ja erlaubt ist, gibt die Funktion CheckFilename schon false zurück.
Bei einer unerlaubten Datei (hier asnr_96_3.pdf) geben die Funktionen folgendes zurück:
Funktion CheckFilename: string(13) "asnr_96_3.pdf"
Funktion CheckFile: bool(false)
Aber diese Zeile ist doch richtig?:
PHP-Code:
if(!in_array(strtolower(substr($dateiname,-4)),array('.jpg','jpeg','.png','.gif'))) array_push($fehler, 'Bitte nur Bilder mit der Endung .jpg, .jpeg, .png oder .gif hochladen!');
Langsam kommt es mir so vor als hätte ich irgendwo eine Negation zuviel oder zuwenig. *grübel*
|
14.07.2006, 14:28:18
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Fehler im Uploadscript
Was mir gerade aufgefallen ist:
Zitat:
Zitat von diehappy
PHP-Code:
return (sizeof($fehler)) ? $dateiname : false;
|
Wenn das Array leer ist, also keine Fehler aufgetreten sind, liefert die Funktion false. Das sollte wohl eher anders herum sein.
|
14.07.2006, 16:06:49
|
Anfänger
|
|
Registriert seit: Jul 2006
Beiträge: 4
|
|
AW: Fehler im Uploadscript
Moin
Das scheints gewesen zu sein! Muß
PHP-Code:
return (sizeof($fehler)) ? false : $dateiname;
bzw
PHP-Code:
return (sizeof($fehler)) ? false : $dateiname_temp;
sein.
Ich muß noch testen ob auch wirklich alle Fehler als solche erkannt werden, aber auf den ersten Blick siehts sehr gut aus.
Danke! :)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 09:16:23 Uhr.
|