Thursday, July 29th 2010, 1:21pm UTC+2

You are not logged in.

  • Login
  • Register

[PHP & MySQL] Beispiel Scripte

undefined

Super Moderator

Posts: 4,248

Location: Germany

1

Saturday, June 10th 2006, 1:37pm

Beispiel Scripte

In diesem Bereich werde ich immer mal wieder ein Dokumentiertes Beispiel Script Posten um zu zeigen wie man bestimmte Programm Aktionen unter PHP erstellt.
Bitte nicht vergessen, es sind Beispiele und keine Referenzen. ;)
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy
  • Go to the top of the page

undefined

Super Moderator

Posts: 4,248

Location: Germany

2

Saturday, June 10th 2006, 1:40pm

Wie erstelle ich einen Bilder Upload

Dieses Beispiel soll Zeigen wie man ein Upload Formular verarbeitet.
Dabei sind die Sicherheits bedenklichen Punkte bei weitem noch nicht ausgereizt, aber man muß ja nicht alles zeigen :D

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_reportingE_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 );

?>
Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
PHP Katepart - Speichenrechner - .htpasswd - RPM XDG Tool - Kcmnvview - QTidy
  • Go to the top of the page