[PHP] Xupper! Dein (fast) eigener Filehoster :)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Murdoc, 6. Oktober 2007 .

  1. 6. Oktober 2007
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Xupper! Dein (fast) eigener Filehoster

    wieder mal was feines aus der rubrik "murdoc hat langeweile"
    diesmal ein script mit dem man sachen auf xup.raidrush.ws hochladen kann.

    aber das ganze schaut im endeffekt dann aber so aus als ob man auf die eigene seite geladen hätte.

    beispiel: http://85.17.162.42/murdoc/xupper/

    anwendung:
    jetzt in der überarbeiteten version ist die handhabung ein wenig anders, aber dennoch einfach geblieben.
    PHP:
    <? php
    require  'class_xupper.php' ;
    $xupper  = new  mc_Xupper //optional kann man hier auch ein true mitsenden für multiuploads und ein zweiters true für thumbnails

    //jetzt erscheinen 10 fieluploadfelder
    $xupper  = new  mc_Xupper ( true ); 

    //jetzt erscheinen 10 fieluploadfelder + es werden thumbnails gemacht
    $xupper  = new  mc_Xupper ( true true );

     
    //jetzt werden thumbnails gemacht, aber nur ein uploadfeld ausgegeben
    $xupper  = new  mc_Xupper ( false true );

    //zeigt das formular oder das ergebnis des uploads an
    $xupper -> display ();
    ?>
    bitte für eine methode der instanz entscheiden!

    einstellungen v1.1
    $xupper->input_size
    mit der var kann man die breite aller inputfelder ändern.
    mach ich also $xupper->input_size = 100; werden alle input felder (ausgenommen buttons) mit size="100" dargestellt

    $xupper->fieldset_width
    mit dieser variablen kann man die breite der fieldsets ändern.
    schreibt man $xupper->fieldset_width = 100; werden alle fieldsets mit 100px breite angezeigt (bei multiuploads)

    die darstellung kann man aber auch via css ändern

    stabile version 1.1: download

    einstellungen v1.1.1
    $xupper->group_multi
    damit kann man wählen ob man die files in einem multiupload gruppieren möchte.
    $xupper->group_multi = true; gruppiert die links, $xupper->group_multi = false; gruppier nicht

    $xupper->save_results
    hier kann man angeben ob die links geloggt werden sollen. is die variable auf true gesetzt wird jeden neuen tag ein logfile erstellt für alle fles die an diesem hochgeladen wurden (mit passwort falls angegeben).

    $xupper->save_dir
    hier kann man einen ordner angeben wo die logs gespeichert werden sollen, default ist der ordner in dem sich das script befindet.

    wie mache ich thumbnails?
    beim instanzieren! siehe (anwendung)
    oder via $xupper->make_thumbs();

    die klasse (php 5) vorsicht beta v1.1.1
    Spoiler
    PHP:
    <? php
        
    class  mc_Xupper  {
            private 
    $_multi  false ;
            private 
    $_thumb  false ;
            private 
    $_result  '' ;
            private 
    $_link //verbindungskennung
            
    private  $_maxsize  5000 //kb
            
    private  $_maxsize_multi  1000 //kb
            
            
    public  $save_results  false ;
            public 
    $save_dir  './' ;
            public 
    $timeout  0 ;
            public 
    $input_size  '50' //breite eines text input felder (nicht buttons!)
            
    public  $fieldset_width  '500' //breite von fieldsets
            
    public  $thumb_size  130 ;
            public 
    $group_multi  false ;
            
            protected 
    $version  '1.1.1' ;
            protected 
    $autor  'Murdoc' ;
            protected 
    $copyright  'Copyright 2007 Murdoc (murdocc3@web.de)' ;
            
            public function 
    __construct ( $multi  false $thumb  false ) {
                if(
    $multi  !==  false $this -> _multi  true ;
                if(
    $thumb  !==  false $this -> _thumb  true ;
            }
            
            public function 
    multi_upload ( $upload  true ) {
                if(
    $upload  ===  true $this -> _multi  true ;
            }
            
            public function 
    make_thumbs ( $th  true ) {
                if(
    $th  ===  true $this -> _thumb  true ;
            }
            
            public function 
    display ( $errmsg  '' ) {
                if(isset(
    $_FILES [ 'xup' ]) && ( $_FILES [ 'xup' ][ 'error' ] ==  '0'  ||  $_FILES [ 'xup' ][ 'error' ][ 0 ] ==  '0' )) {
                    
    $timeout  = (( $this -> timeout  ===  0 ) ?  30  intval ( $this -> timeout ));
                    if(!(@
    $this -> _link  fsockopen ( 'xup.raidrush.ws' 80 $errno $errstr $timeout )))  user_error ( 'Kann keine Verbindung zu xup.raidrush.ws herstellen!' E_USER_ERROR );
                    if(
    is_array ( $_FILES [ 'xup' ][ 'name' ])) {  //multi
                        
    if( $this -> _multi  ===  true $this -> _multi_upload ();
                        else 
    user_error ( 'Multible Uploads sind nicht erlaubt!' E_USER_ERROR );
                    }
                    else 
    $this -> _upload ();
                }
                else {
                    
    $form  = ((empty( $errmsg )) ?  ''  " { $errmsg } <br />\r\n" );
                    
    $form  .=  '<form action="' . $_SERVER [ 'PHP_SELF' ].((isset( $_GET [ 'multi' ])) ?  '?multi' '' ). '" method="post" enctype="multipart/form-data">' . "\r\n" ;
                    if(
    $this -> _multi  !==  true $form  .=  "\t" . '<b>File ausw&auml;hlen:</b> <input type="file" name="xup" size="' .( $this -> input_size - 10 ). '" />' . "\r\n" ;
                    else {
                        for(
    $i = 1 $i <= 10 $i ++) {
                            
    $form  .=  "\t<b>File  $i :</b>" .(( $i  10 ) ?  '&nbsp;&nbsp;&nbsp;'  '&nbsp;' ). '<input type="file" name="xup[' .( $i - 1 ). ']" size="' . $this -> input_size . '" /><br />' . "\r\n" ;
                        }
                        
    $form  .=  "\t" . '<b>Maximum Filesize per Upload:</b> 1 MB<br />' . "\r\n" ;
                    }
                    
    $form  .=  "\t<br />\r\n\t" . '<b>Passwort:</b>' . "\r\n" . '<input type="text" name="passw" size="' . $this -> input_size . '" /><br/>' . "\r\n" ;
                    
    $form  .=  "\t" . '<input type="submit" value="Upload auf Xup" />' . "\r\n" ;
                    
    $form  .=  "</form>\r\n" ;
                    
    $form  .=  '<p align="center"><b>Murdocs Xupper ' . $this -> version . '</b><br/>' . $this -> copyright . '</p>' . "\r\n" ;
                    print 
    $form ;
                }
            }
            
            private function 
    _upload () {
                if(!isset(
    $_FILES [ 'xup' ]))  $this -> display ( 'Kein File angegeben' );  //sicher ist sicher
                
    else {
                    
    //sollte normalerweiße garnicht hierher kommen, aber sicher is sicher
                    
    if( is_array ( $_FILES [ 'xup' ][ 'name' ]))  $this -> _multi_upload ();
                    else {
                        @
    $file  file_get_contents ( $_FILES [ 'xup' ][ 'tmp_name' ]);
                        if(!
    $file user_error ( 'Kann hochgeladenen File nicht auslesen, Uploadvorgang abgebrochen' E_USER_ERROR );
                        elseif(
    $this -> _maxsize  < ( round ( $_FILES [ 'xup' ][ 'size' ] /  1024 ))) {
                            print 
    'Dieser File ist zu groß! (Elaubt: ' . $this -> _maxsize . 'KB)<br />' ;
                            print 
    "\r\n" . '<p align="center"><b>Murdocs Xupper ' . $this -> version . '</b><br />' . $this -> copyright . '</p>' . "\r\n" ;
                        }
                        else {
                            
    $fileName  $_FILES [ 'xup' ][ 'name' ];
                            
    $fileType  $_FILES [ 'xup' ][ 'type' ];
                            unset(
    $_FILES );
                            
                            
    $data  '-----------------------------123456789' . "\r\n" ;
                            
    $data  .=  "Content-Disposition: form-data; name=\"F1\"; filename=\" { $fileName } \"\r\n" ;
                            
    $data  .=  "Content-Type:  { $fileType } \r\n" ;
                            
    $data  .=  "\r\n" ;
                            
    $data  .=  $file ;
                            
                            if(!empty(
    $_POST [ 'passw' ])) {
                                
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                                
    $data  .=  "Content-Disposition: form-data; name=\"passwort\";\r\n" ;
                                
    $data  .=  "\r\n" ;
                                
    $data  .=  $_POST [ 'passw' ];
                            }
                            
                            
    //thumbnails
                            
    if( $this -> _thumb  ===  true ) {
                                if(
    in_array ( 'image' explode ( '/' $fileType ))) {
                                    
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                                    
    $data  .=  "Content-Disposition: form-data; name=\"make_tn\";\r\n" ;
                                    
    $data  .=  "\r\n" ;
                                    
    $data  .=  'on' ;
                                    
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                                    
    $data  .=  "Content-Disposition: form-data; name=\"tn_size\";\r\n" ;
                                    
    $data  .=  "\r\n" ;
                                    
    $data  .=  $this -> thumb_size ;
                                }
                            }
                            
                            
    $header     'POST /transfer.php HTTP/1.1' . "\r\n" ;
                            
    $header  .=  'Connection: close' . "\r\n" ;
                            
    $header     .=  'Host: xup.raidrush.ws' . "\r\n" ;
                            
    $header  .=  'User-Agent: murdocs php xupper ' . $this -> version . "\r\n" ;
                            
    $header  .=  'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' . "\r\n" ;
                            
    $header  .=  'Accept-Language: de,en;q=0.5' . "\r\n" ;
                            
    $header  .=  'Accept-Encoding: gzip,deflate' . "\r\n" ;
                            
    $header  .=  'Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7' . "\r\n" ;
                            
    $header  .=  'Keep-Alive: 300' . "\r\n" ;
                            
    $header  .=  "Referer: http:// { $_SERVER [ 'HTTP_HOST' ]}{ $_SERVER [ 'PHP_SELF' ]} \r\n" ;
                            
    $header  .=  'Content-Type: multipart/form-data; boundary=---------------------------123456789' . "\r\n" ;
                            
    $header  .=  'Content-Length: ' . strlen ( $data ). "\r\n" ;
                            
    $header  .=  "\r\n" ;
                            
    $header  .=  $data ;
                            
                            @
    fwrite ( $this -> _link $header );
                            while(!
    feof ( $this -> _link )) {
                                
    $this -> _result  .=  fgets ( $this -> _link );
                            }
                            
                            
    $this -> _parse_result ( $fileName );    
                        }
                    }
                }
            }
            
            private function 
    _parse_result ( $filename ) {
                if(empty(
    $this -> _result ))  user_error ( 'Fehler beim Upload, xup.raidrush.ws lieferte kein Ergebnis zurück!' E_USER_WARNING );
                else {
                    
    preg_match_all ( '!<input type="text" onclick="highlight\(this\);" style="width:400px;" value="(.*)" />!sU' $this -> _result $tmp_e );
                    
    $link [ 'download' ] =  $tmp_e [ 1 ][ 0 ];
                    
    $link [ 'delete' ] =  $tmp_e [ 1 ][ 1 ];
                    if(
    $this -> _thumb  ===  true $tn  $tmp_e [ 1 ][ 2 ];
                    unset(
    $tmp_e );
                    
                    
    $r  '<h4>File "' . $filename . '" erfolgreich auf <a href="https://xup.raidrush.ws/">Xup</a> hochgeladen!</h4>' ;
                    
    $r  .=  "<br />\r\n" ;
                    
    $r  .=  '<b>Download:</b><br />' . "\r\n" ;
                    
    $r  .=  '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $link [ 'download' ]. '" /><br />' . "\r\n" ;
                    
    $r  .=  "<br />\r\n" ;
                    
    $r  .=  '<b>Löschen:</b><br />' . "\r\n" ;
                    
    $r  .=  '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $link [ 'delete' ]. '" /><br />' . "\r\n" ;
                    if(
    $this -> _thumb  ===  true  &&  $tn  !=  '' ) {
                        
    $r  .=  "<br />\r\n" ;
                        
    $r  .=  '<b>Thumbnail</b><br />' . "\r\n" ;
                        
    $r  .=  '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $tn . '" /><br />' . "\r\n" ;
                    }                
                    
    $r  .=  '<p align="center"><b>Murdocs Xupper ' . $this -> version . '</b><br/>' . $this -> copyright . '</p>' . "\r\n" ;
                    print 
    $r ;
                    if(
    $this -> save_results  ===  true $this -> _save_result ( $link [ 'download' ],  $link [ 'delete' ],  $filename $tn );
                }
            }
            
            private function 
    _multi_upload () {
                if(!isset(
    $_FILES [ 'xup' ]))  $this -> display ( 'Kein(e) File(s) angegeben!' );  //sicher is sicher
                
    $file  $_FILES [ 'xup' ];
                unset(
    $_FILES );
                
                
    //thumbs
                
    $o_image  false ;
                
    $mk_thumb  false ;
                if(
    $this -> _thumb  !==  true $o_image  true //damit nicht immer exploded wird
                
                /*
                * komischerweiße klappte es nicht anders
                * wenn jemand weiss warum bitte sagen!
                *
                * der fehler war nicht ersichlich, hatte ich den ersten file mit in die schleife geschrieben
                * und zu anfangs
                * $data .= (($i > 1) ? "\r\n" : '').'-----------------------------123456789'."\r\n";
                * angegeben, war der header dem anschein nach nicht mehr in ordnung und ich bekam kein ergebnis.
                */
                
    if( $this -> _maxsize_multi  < ( round ( $file [ 'size' ][ 0 ] /  1024 ))) {
                    print 
    'File: <b>' . $file [ 'name' ][ 0 ]. '</b> ist zu groß! (Elaubt: ' . $this -> _maxsize_multi . 'KB)<br />' . "\r\n" ;
                    
    $file [ 's_error' ][ 0 ] =  1 ;
                }
                else {
                    if(
    in_array ( 'image' explode ( '/' $file [ 'type' ][ 0 ])))  $o_image  true ;
                    
    $data  '-----------------------------123456789' . "\r\n" ;
                    
    $data  .=  "Content-Disposition: form-data; name=\"F1\"; filename=\" { $file [ 'name' ][ 0 ]} \"\r\n" ;
                    
    $data  .=  "Content-Type:  { $file [ 'type' ][ 0 ]} \r\n" ;
                    
    $data  .=  "\r\n" ;
                    
    $data  .= @ file_get_contents ( $file [ 'tmp_name' ][ 0 ]);
                }
                
                for(
    $i  1 $i < 10 $i ++) {
                    if(
    $this -> _maxsize_multi  < ( round ( $file [ 'size' ][ $i ] /  1024 ))) {
                        print 
    'File: <b>' . $file [ 'name' ][ $i ]. '</b> ist zu groß! (Elaubt: ' . $this -> _maxsize_multi . 'KB) <br />' . "\r\n" ;
                        
    $file [ 's_error' ][ $i ] =  1 ;
                    }
                    else {
                        if(
    $o_image  !==  true ) {
                            if(
    in_array ( 'image' explode ( '/' $file [ 'type' ][ $i ])))  $o_image  true ;
                        }
                        
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                        
    $data  .=  "Content-Disposition: form-data; name=\"F" .( $i + 1 ). "\"; filename=\" { $file [ 'name' ][ $i ]} \"\r\n" ;
                        
    $data  .=  "Content-Type:  { $file [ 'type' ][ $i ]} \r\n" ;
                        
    $data  .=  "\r\n" ;
                        
    $data  .= @ file_get_contents ( $file [ 'tmp_name' ][ $i ]);
                    }
                }
                
                
    //thumbnails
                
    if( $this -> _thumb  ===  true  &&  $o_image  ===  true ) {
                    
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                    
    $data  .=  "Content-Disposition: form-data; name=\"make_tn\";\r\n" ;
                    
    $data  .=  "\r\n" ;
                    
    $data  .=  'on' ;
                    
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                    
    $data  .=  "Content-Disposition: form-data; name=\"tn_size\";\r\n" ;
                    
    $data  .=  "\r\n" ;
                    
    $data  .=  $this -> thumb_size ;
                    
    $mk_thumb  true ;
                }
                
                if(!empty(
    $_POST [ 'passw' ])) {
                    
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                    
    $data  .=  "Content-Disposition: form-data; name=\"passwort\";\r\n" ;
                    
    $data  .=  "\r\n" ;
                    
    $data  .=  $_POST [ 'passw' ];
                }
                
                
    //gruppen
                
    if( $this -> group_multi  ===  true  &&  count ( $file [ 'name' ]) >  1 ) {
                    
    $data  .=  "\r\n" . '-----------------------------123456789' . "\r\n" ;
                    
    $data  .=  "Content-Disposition: form-data; name=\"make_group\";\r\n" ;
                    
    $data  .=  "\r\n" ;
                    
    $data  .=  'on' ;
                }
                
                
    $header     'POST /transfer.php HTTP/1.1' . "\r\n" ;
                
    $header  .=  'Connection: close' . "\r\n" ;
                
    $header     .=  'Host: xup.raidrush.ws' . "\r\n" ;
                
    $header  .=  'User-Agent: murdocs php xupper ' . $this -> version . "\r\n" ;
                
    $header  .=  'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' . "\r\n" ;
                
    $header  .=  'Accept-Language: de,en;q=0.5' . "\r\n" ;
                
    $header  .=  'Accept-Encoding: gzip,deflate' . "\r\n" ;
                
    $header  .=  'Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7' . "\r\n" ;
                
    $header  .=  'Keep-Alive: 300' . "\r\n" ;
                
    $header  .=  "Referer: http:// { $_SERVER [ 'HTTP_HOST' ]}{ $_SERVER [ 'PHP_SELF' ]} \r\n" ;
                
    $header  .=  'Content-Type: multipart/form-data; boundary=---------------------------123456789' . "\r\n" ;
                
    $header  .=  'Content-Length: ' . strlen ( $data ). "\r\n" ;
                
    $header  .=  "\r\n" ;
                
    $header  .=  $data ;
                
                @
    fwrite ( $this -> _link $header );
                while(!
    feof ( $this -> _link )) {
                    
    $this -> _result  .=  fgets ( $this -> _link );
                }

                
    $this -> _parse_multi_result ( $file $mk_thumb );
            }
            
            private function 
    _parse_multi_result ( $file $th ) {
                if(empty(
    $this -> _result ))  user_error ( 'Fehler beim Multiupload, xup.raidrush.ws lieferte kein Ergebnis zurück!' E_USER_WARNING );
                else {
                    
    preg_match_all ( '!<input type="text" onclick="highlight\(this\);" style="width:400px;" value="(.*)" />!sU' $this -> _result $tmp_e );
                    
    $files  0 ;
                    
    $o  = (( $th  ===  true ) ?  2 );
                    for(
    $i = 0 $i >- 1 $i += $o ) {
                        if((
    $n  current ( $file [ 'name' ])) !=  '' ) {
                            if(@
    current ( $file [ 's_error' ]) ==  '' ) {
                                
    $dl  $tmp_e [ 1 ][( $i + 1 )];
                                
    $ddl  $tmp_e [ 1 ][ $i ];
                                if(
    $th  ===  true $thn  $tmp_e [ 1 ][( $i + 2 )];
                                

                                
    if( ereg ( "\n" $dl ))  $dl  preg_replace ( '!(.*)http://(.*)/!sU' 'http://$2/' $dl );
                                if(
    $this -> save_results  ===  true ) {
                                    
    $down [ $n ] =  $ddl ;
                                    
    $dele [ $n ] =  $dl ;
                                    
    $thum [ $n ] =  $thn ;
                                }
                                
    $r  .=  '<fieldset style="width: ' . $this -> fieldset_width . 'px;">' . "\r\n" ;
                                
    $r  .=  "\t" . '<legend style="font-weight: bold; border: 1px solid #000000; padding: 2px 15px 2px 15px;">' . $n . '</legend>' . "\r\n" ;
                                
    $r  .=  "\t<b>Download:</b><br />\r\n" ;
                                
    $r  .=  "\t" . '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $ddl . '" /><br />' . "\r\n" ;
                                
    $r  .=  "\t<br />\r\n" ;
                                
    $r  .=  "\t<b>Löschen:</b><br />\r\n" ;
                                
    $r  .=  "\t" . '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $dl . '" /><br />' . "\r\n" ;
                                if(
    $th  ===  true ) {
                                    
    $r  .=  "\t<br />\r\n" ;
                                    
    $r  .=  "\t<b>Thumbnail:</b><br />\r\n" ;
                                    
    $r  .=  "\t" . '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $thn . '" /><br />' . "\r\n" ;
                                }
                                
    $r  .=  "</fieldset>\r\n<br />\r\n" ;
                                
    $files ++;
                            }
                        }
                        if(!@
    next ( $file [ 'name' ])) break;  //internen zeiger eines vorrücken, da ich nicht $i als key anwenden kann
                        
    @ next ( $file [ 's_error' ]);
                    }
                    
                    if(
    $this -> group_multi  ===  true ) {
                        
    preg_match_all ( '!<input type="text" style="width:500px;" value="(.*)" />!sU' $this -> _result $grp );
                        
    $grp_ddl  $grp [ 1 ][ 0 ];
                        
    $grp_del  $grp [ 1 ][ 1 ];
                        
    //wenn die beiden leer sind, wurde entweder nur ein file angegeben oder fehler?
                        
    if(!empty( $grp_ddl ) && !empty( $grp_del )) {
                            
    $r  .=  '<h4>Gruppendownload</h4>' . "\r\n" ;
                            
    $r  .=  '<b>Download:</b><br />' . "\r\n" ;
                            
    $r  .=  '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $grp_ddl . '" /><br />' . "\r\n" ;
                            
    $r  .=  '<b>Löschen:</b><br />' . "\r\n" ;
                            
    $r  .=  '<input type="text" size="' . $this -> input_size . '" onclick="this.select();" value="' . $grp_del . '" /><br />' . "\r\n" ;
                        }
                    }
                    
                    
    $r  '<h4>' . $files . ' Files erfolgreich hochgeladen!</h4>' . "\r\n" . $r ;
                    
    $r  .=  "\r\n<p align=\"center\"><b>Murdocs Xupper  { $this -> version } </b><br/> { $this -> copyright } </p>\r\n" ;
                    print 
    $r ;
                    if(
    $this -> save_results  ===  true $this -> _save_result ( $down $dele '' $thum , array( $grp_ddl $grp_del ));
                }
            }
            
            private function 
    _save_result ( $downloads $delete $filename  '' $thumbs  '' $grp  false $try  0 ) {
                
    $log  true ;
                if(!
    is_dir ( $this -> save_dir ))  $log  false ;
                else {
                    if(
    $this -> group_multi  !==  true ) @ $fp  fopen ( $this -> save_dir . 'uploads_' . date ( 'd.m.Y' ). '.log' 'a+' );
                    else @
    $fp  fopen ( $this -> save_dir . 'group_' . date ( 'd.m.Y' ). '_' . md5 ( microtime ( true )). '.log' 'a+' );
                }
                if(!
    $fp ) {
                    if(!@
    chmod ( $this -> save_dir 0777 )) {
                        print 
    'Bitte überprüfe ob der Ordner ' . $this -> save_dir . ' die nötigen rechte hat um Files zu öffen, erstellen und zu schreiben!<br />' ;
                        
    $log  false ;
                    }
                    else {
                        if(
    $try  0 ) exit( 'Schwerer Fehler, bitte überprüfe deine Einstellungen bezüglich loggen der Ergebnisse' );
                        else return 
    $this -> _save_result ( $downloads $delete $filename $thumbs $grp 1 );
                    }
                }
                
                if(
    $log  ===  true ) {
                    if(
    is_array ( $downloads )) {
                        
    $ddl_links  '' ;
                        if(
    is_array ( $grp ) &&  $grp [ 0 ] != ''  &&  $grp [ 1 ] != '' ) {
                            
    $ddl_links  .=  "Gruppenlinks" ;
                            
    $ddl_links  .=  "\r\n------------\r\n" ;
                            
    $ddl_links  .=  "Gruppe runterladen:  { $grp [ 0 ]} \r\n" ;
                            
    $ddl_links  .=  "Gruppe löschen:  { $grp [ 1 ]} \r\n" ;
                            
    $ddl_links  .=  "Passwort:  { $_POST [ 'passw' ]} \r\n\r\n" ;
                            
    $ddl_links  .=  "Files dieser Gruppe:" ;
                            
    $ddl_links  .=  "\r\n------------\r\n\r\n" ;
                        }
                        foreach(
    $downloads  AS  $name  =>  $link ) {
                            
    $ddl_links  .=  " $name " ;
                            
    $ddl_links  .=  "\r\n------------\r\n" ;
                            
    $ddl_links  .=  "Download:  $link \r\n" ;
                            if(
    $thumbs [ $name ] != '' ) {
                                
    $th  preg_replace ( '!\[URL=http://.+/]\[IMG\](.*)\[/IMG\]\[/URL\]!isU' '$1' $thumbs [ $name ]);
                                
    $ddl_links  .=  "Thumbnail:  $th \r\n" ;
                            }
                            
    $ddl_links  .=  "Passwort:  { $_POST [ 'passw' ]} \r\n" ;
                            
    $ddl_links  .=  "Löschen:  { $delete [ $name ]} \r\n\r\n" ;
                        }
                    }
                    else {
                        
    $ddl_links  $filename ;
                        
    $ddl_links  .=  "\r\n------------\r\n" ;
                        
    $ddl_links  .=  "Download:  $downloads \r\n" ;
                        if(
    $thumbs  != '' ) {    
                            
    $thumb  preg_replace ( '!\[URL=http://.+/]\[IMG\](.*)\[/IMG\]\[/URL\]!isU' '$1' $thumbs );
                            
    $ddl_links  .=  "Thumbnail:  $thumb \r\n" ;
                        }
                        
    $ddl_links  .=  "Passwort:  { $_POST [ 'passw' ]} \r\n" ;
                        
    $ddl_links  .=  "Löschen:  $delete \r\n\r\n" ;
                    }
                    @
    fwrite ( $fp $ddl_links );
                    @
    fclose ( $fp );
                }
                else print 
    'Speichern der Links fehlgeschlagen!' ;
            }
        }
    ?>

    viel spaß!

    log
    Code:
    v1.0.0:
    release
    
    v1.0.1:
    multiupload 
    
    v1.0.2:
    multiupload verbessert
    passwort angabe
    löschlinkbug behoben
    
    v1.1
    stabile version ohne thumbnails und abfrage der filesize
    
    v1.1.1
    thumbnails
    gruppen
    abfrage der filegröße und fehlerausgabe
    loggt die links gruppiert nach datum + macht eigene logfiles für gruppen
    
    todo
    • speichern der links
    • thumbnails
    • filesize abfragen und ggf fehler ausgeben
    • gruppen bilden

    bugs
    log: bei gruppen wird nicht alles gespeichert
    log: wenn gruppen gemacht werden sollen, speichert es auch normale uploads als gruppe ab
     
  2. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    fehlt nur noch was, womit man auch runterladen kann.
     
  3. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    Murdoc, du hast es einfach drauf Sehr schön.. Brauche das Script zwar nicht wirklich, aber sieht sche aus Vll könnt' ein GFXler noch 'n schönen Background & Header erstellen, und dann sieht es noch etwas mehr nach "Deinem (fast) eigenden Filehoster" aus *gg

    MfG
     
  4. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    ohh je

    jetzt haste raid ausgetrickst weil keine werbung mehr druff is, der wird sich freuen xD

    aber is nice
     
  5. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    Hehe Murdoc, da kann ich mich noch gewisse Fragen hier im Board erinnern, wie der Header gestaltet werden muss, damit sowas funktioniert ....

    Ich hoffe ich darf kritisch meine Meinung ausdrücken!?
    Also ich persönlich vermeide bei Strings die nichts interpretierbares enthalten die doppelten Anführungszeichen, damit würde man sich auch das escapen sparen ... naja es fällt einfach ein bißchen auf, dass du dir noch nicht einig bist, wann und wo du welche "Stringzeichen" machst ...

    und eine Redundanz ist mir noch aufgefallen und zwar in der upload methode, das manuelle löschen von temporären dateien ist nicht nötig. Den aufruf könntest du dir also sparen, aber ansonsten schöne Form. Keine doppelten Anführungszeichen bei arrays, einrückungen gut, header mit der "punktnotation" gut aufgeschrieben, unterstriche bei private methoden ... wobei ich bei manchen sachen noch drastischer wäre ( == "" wäre ich mit empty überprüfen, startwert fürs string '' statt null, beginnende unterstriche bei private variablen, java/php doc kommentare, keine deprecated tags, display block statt br, label tags).....so genug gemeckert
     
  6. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    MakenX hat schon fast alles gesagt, bis auf ein paar Sachen, die mir noch aufgefallen sind.

    1. Unnoetig viele HTTP-Header (braucht in diesem Falle kein Mensch) Accept-Charset, Accept-Language, Accept-Encoding, User-Agent und Referer
    2. Keep-Alive Request. Sinnvoller waere ein Connection: close, da damit das Socket direkt nach der Antwort vom Server geschlossen wird und nicht noch auf bleibt
    3. Wieso setzt du $header zuerst auf null und nicht direkt auf 'POST ...'?
     
  7. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    dude zeig mal wie du header angabe ändern würdest, das interessiert mich jetzt auch mal ...
     
  8. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    das feld fürs pw fehlt auch noch

    ansonste nschönes ding..und du hast was gegen deine langeweile getan
     
  9. 6. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    PHP:
                    $header  "POST /transfer.php HTTP/1.1\r\n" ;
                    
    $header  .=  "Host: xup.raidrush.ws\r\n" ;
                    
    $header  .=  "Keep-Alive: 300\r\n" ;
                    
    $header  .=  "Connection: close\r\n" ;
                    
    $header  .=  "Content-Type: multipart/form-data; boundary=---------------------------123456789\r\n" ;
                    
    $header  .=  "Content-Length: " . strlen ( $content ). "\r\n" ;
                    
    $header  .=  "\r\n" ;
                    
    $header  .=  "-----------------------------123456789\r\n" ;
                    
    $header  .=  "Content-Disposition: form-data; name=\"F1\"; filename=\" { $_FILES [ 'xup' ][ 'name' ]} \"\r\n" ;
                    
    $header  .=  "Content-Type:  { $_FILES [ 'xup' ][ 'type' ]} \r\n" ;
                    
    $header  .=  "\r\n" ;
                    
    $header  .=  " $content "
    Ungetestet, sollte trotzdem funktionieren.
     
  10. 8. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    @maken: ich hatte in den strings ein oder mehrere \r\n was doppelte anführungszeichen benötigt.
    jetzt aber gemischt, und ja ich hab ne kommentierte version, aber die is zulang für den thread^^

    @dude: ich hab ein wenig rumprobiert und irgendiwe wollte das nicht klappen.
    connection: close hab ich jetz mit drinnen aber ohne keep-alive klappts irgendwie nicht... komische sache

    update: passwort, gruppen, thumbnails, loggen von links und gruppen - alles in der v1.1.1
     
  11. 8. Oktober 2007
    AW: Xupper! Dein (fast) eigender Filehoster

    Jo das weiß ich, aber zwischendurch hatte ich auch noch irgendwas gesehen, aber jetzt haste es ja jetzt bis ins kleinste geändert
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.