Thursday, July 29th 2010, 1:25pm UTC+2
You are not logged in.

|
|
PHP Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
<?php
error_reporting( E_ALL );
/**
* @short Beipsiel Script Bilder auf dem Server ablegen
* @ref http://www.php.net/manual/de/features.file-upload.php
* @param [VOID] \b $_FILES
* @param [String] \b $td Ziel Verzeichnis
* @param [String] \b $n Zeiger der Variable
* @param [String] \b $t Bild Type
* @code
$_FILES["???"]=> array(5) {
["name"]=> String
["type"]=> String Beispiel "image/jpeg"
["tmp_name"]=> String
["error"]=> int
["size"]=> int
}
}
* @endcode
* @return Boolean [VOID] echo Error Nachricht
*/
function UploadMyImage( $td, $i = 'FILE_UPLOAD', $t = 'image/jpeg' )
{
/* Upload Status */
$Status = false;
/* Fehler Benachrichtigung */
$Mess = null;
/* Ist Überhaupt die Variable Existent? */
if ( isset( $_FILE[$i] ) ) {
/* Wenn die Datei im Temporären Verzeichnis noch nicht berührt wurde
dann ist es es auch ein Upload File wenn nicht false und Austeigen! */
if ( ! is_uploaded_file( $_FILES[$i]['tmp_name'] ) )
return false;
/* Auch der Richtige Type wenn nicht false und Aussteigen. */
if ( $_FILES[$i]['type'] != $t )
return false;
/* PHP bietet einige Konstanten zur Fehler-Verarbeitung */
switch( $_FILES[$i]['error'] ) {
case( UPLOAD_ERR_OK ):
$Status = true;
break;
case( UPLOAD_ERR_INI_SIZE ):
$Mess = "Die hochgeladene Datei überschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Größe.";
$Status = false;
break;
case( UPLOAD_ERR_FORM_SIZE ):
$Mess = "Die hochgeladene Datei überschreitet die in dem HTML Formular mittels der Anweisung MAX_FILE_SIZE angegebene maximale Dateigröße.";
$Status = false;
break;
case( UPLOAD_ERR_PARTIAL ):
$Mess = "Verbindungsabbruch: Die Datei wurde nur teilweise hochgeladen.";
$Status = false;
break;
case( UPLOAD_ERR_NO_FILE ):
$Mess = "Es wurde keine Datei hochgeladen.";
$Status = false;
break;
default:
$Status = true;
break;
}
/* Das war wohl nichts :-/ */
if ( ! $Status ) {
print( $Mess );
return false;
}
/* Existriert das Ziel Verzeichnis und ist es auch Beschreibbar ? */
if ( is_readable( $_FILES[$i]['tmp_name'] ) && is_dir( $td ) && is_writeable( $td ) )
{
/*
!! Achtung !!
Wenn wir im Savemod sind dann heist es Verzeichnis wechseln.
Wenn du im Savemod bist dann geht kein chmod und das Ziel Verzeichnis
Muss in der Enviroment Variabe open_basedir stehen !
getcwd() Nehme den derzeitigen Standpunkt wo ich mich befinde!
*/
$old = getcwd();
/* Jetzt wechsle zum Ziel Verzeichnis */
chdir( $td );
/*
Bereite den Namen auf und entferne alle was nicht erlaubt ist!
Dazu gehören Leerezeichen und Umlaute sowie Sonderzeichen!
Regexp Erklärung: [^\w\d\.]
Entferne alles was nicht aus Buchstaben/Zahlen oder einem Punkt besteht!
*/
$Name = preg_replace( "/[^\w\d\.]/", "_", $_FILES[$i]['name'] );
/* Jetzt kannst du Verschieben! */
if ( move_uploaded_file( $_FILES[$i]['tmp_name'], $name ) ) {
/*
Wenn das Verschieben Erfolgreich verlaufen ist dann kannst
du noch ein chmod setzen (WWW Server,FTP dürfen Schreiben andere dürfen Lesen)!
*/
if ( is_writeable( $Name ) )
@chmod( $Name, (float)0664 );
/* Ok gehe zurück zum Alten Verzeichnis! */
chdir( $old );
/* Alles in Ordnung Status true zurück geben. */
return true;
} else
return false;
}
}
return false;
}
$Status = false;
if ( isset( $_FILES['MY_IMAGE_UPLOAD'] ) )
$Status = UploadMyImage( '/home/user/my-domain/my-upload-dir', 'MY_IMAGE_UPLOAD', 'image/jpeg' );
// Debuggen
var_dump( $Status );
?>
|