[PHP] fehler + forech()

Dieses Thema im Forum "Webentwicklung" wurde erstellt von tobigiger, 17. Dezember 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. Dezember 2007
    fehler + forech()

    hi all

    ich hab ein kleines problem mit nem kleinen aber feinen script. wenn ich es ausführe kommt immer:

    Verbunden zu XXX mit Username XXX

    Collecting Files

    Warning: Invalid argument supplied for foreach() in M:\xampp\htdocs\xxx\ftp.php on line 82
    finished! packed to XXX.rar

    PHP:
    <? php
    // THIS SCRIPT ONLY WORKS ON WINDOWS BOXES!!!
    // STATE: 0.1 beta
    // TODOS: save rapidshare urls to database
    //                make form for input

    $ftp_server  "91.121.255.255" ;
    $port  21 ;
    $ftp_user_name  "test" ;
    $ftp_user_pass  "tset" ;
    $path  "/test" ;
    $dir  "/test/directory" ;
    $prefix  "RAR_PREFIX_" ;
    $size  "100000" ;
    $format  "k" ;



    define ( 'LB' "\r\n" );
    set_time_limit ( 0 );

    // Verbindungsaufbau
    //$conn_id = @ftp_connect($ftp_server,$port);
    $conn_id  ftp_ssl_connect ( $ftp_server , $port ) or die( "Could not connect" );

    // Login mit Username und Passwort
    $login_result  = @ ftp_login ( $conn_id $ftp_user_name $ftp_user_pass );
    @
    ftp_pasv ( $conn_id TRUE );

    // Verbindung überprüfen
    if ((! $conn_id ) || (! $login_result )) {
           echo 
    "FTP Verbindung ist fehlgeschlagen!" ;
           echo 
    "Verbindungasufbau zu  $ftp_server  mit Username  $ftp_user_name  versucht." ;
           exit;
       } else {
           echo 
    "Verbunden zu  $ftp_server  mit Username  $ftp_user_name " ;
       }

    // HIER KOMMT DER CODE FÜR DEN FILE DOWNLOAD
    //Get them file!
    echo  "<br><br>Collecting Files<br>" ;
    //Set defaults just in case. PHP complains anyway if we don't.

    $filelist  filecollect ( $dir , $filelist );

    $all_files  sizeof ( $filelist );
    $archivename  $prefix . ".rar" ;
    $execute  "rar.exe a -v" . $size . $format . " " . $path . "/" . $archivename . " " . $path ;
    $resultrar  exec ( $execute );
    if (
    $resultrar )
    {
        print 
    "finished! packed to  $archivename <br>" ;
    }
    else
    {
        print 
    "failure while packing<br>" ;    
    }
    if (
    $handle  opendir ( $path )) 
    {

       while (
    false  !== ( $file  readdir ( $handle ))) 
       {
                
    $start  strlen ( $file )- 3 ;
                
    $end  strlen ( $file );
                
    $fileending  substr ( $file $start $end );
           
    $pos  substr_count  ( $file $prefix  );
                 if (
    $pos  !=  false ) { 
                         
    $uploaded_url  upload_rapidshare ( $path . "/" . $file '' '' 'ul48l3.rapidshare.com' );
                 } 
       }
    }
    $new_path  str_replace ( "/" "\\" $path );
    exec ( "rmdir " . $new_path . " /s /q" );
    exec ( "mkdir " . $new_path );


    function 
    filecollect ( $dir , $filelist ) {
        global 
    $conn_id //Get our ftp
        
    global  $path ;
        
        
    $files  ftp_nlist ( $conn_id , $dir );  //get files in directory
        
    foreach ( $file  as  $file
        {
            
    $isfile  ftp_size ( $conn_id $file );
            if(
    $isfile  ==  "-1"
            { 
                
    //Is a file or directory?
                
    echo  "<pre>" ;
                echo 
    "ignore directory!  $file " ;
                echo 
    "</pre>" ;
            }
            else 
            {
                
    $replacetags  = array( "\\" "//" );
                
    $downloadfile  substr ( $file strlen ( $dir ) +  1 strlen ( $file ));
                
    $result  ftp_get ( $conn_id $path . "/" . $downloadfile $file FTP_BINARY );
                if ( !
    $result  )
                {
                    echo 
    "<pre>There was a problem while downloading file:  $file </pre>" ;
                }
                else
                {
                echo 
    "<pre>File  $file  downloaded successful!</pre><br>" ;
                }
                
    $filelist [( count ( $filelist )+ 1 )] =  $file //If not, add it as a file to the file list
            
    }
        }
        return 
    $filelist ;
    }
        function 
    upload_rapidshare ( $file $login $pass $host ) {
            
    // uploads the given file to a server using the specified login and pass
            
    if(! file_exists ( $file )) {
                return 
    'File \'' . $file . '\' does not exist.' ;
            }
            
    $boundary  '--------' . time ();
       
            
    $body_start  '--' . $boundary . LB ;
            
    $body_start  .=  'Content-Disposition: form-data; name="filecontent"' . LB . LB ;
            
    $body_start  .=  LB ;
            
    $body_start  .=  '--' . $boundary . LB ;
            
    $body_start  .=  'Content-Disposition: form-data; name="toolmode"' . LB . LB ;
            
    $body_start  .=  '1' . LB ;
            
    $body_start  .=  '--' . $boundary . LB ;
            
    $body_start  .=  'Content-Disposition: form-data; name="login"' . LB . LB ;
            
    $body_start  .=  $login . LB ;
            
    $body_start  .=  '--' . $boundary . LB ;
            
    $body_start  .=  'Content-Disposition: form-data; name="password"' . LB . LB ;
            
    $body_start  .=  $pass . LB ;
            
    $body_start  .=  '--' . $boundary . LB ;
            
    $body_start  .=  'Content-Disposition: form-data; name="filecontent"; filename="' . basename ( $file ). '"' . LB ;
            
    $body_start  .=  'Content-Type: multipart/form-data' . LB ;
            
    $body_start  .=  'Content-Transfer-Encoding: binary' . LB . LB ;
           
            
    $body_end  LB . '--' . $boundary . '--' . LB ;
           
            
    $head  'POST /cgi-bin/upload.cgi HTTP/1.0' . LB ;
            
    $head  .=  'Connection: Keep-Alive' . LB ;
            
    $head  .=  'Content-Type: multipart/form-data; boundary=' . $boundary . LB ;
            
    $head  .=  'Content-Length: ' .( strlen ( $body_start ) +  filesize ( $file ) +  strlen ( $body_end )). LB ;
            
    $head  .=  'Host: ' . $host . LB ;
            
    $head  .=  'Accept: text/xml, */*' . LB ;
            
    $head  .=  'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' . LB ;
            
    $head  .=  'Accept-Encoding: identity' . LB ;
            
    $head  .=  'Accept-Language: de-de;q=0.5,en;q=0.3' . LB ;
            
    $head  .=  'User-Agent: RapidGet/1.2' . LB . LB ;
           
            
    $buffer  '' ;
           
            
    $sock  fsockopen ( $host 80 );
            
    $data  fopen ( $file 'r' );
            if(!
    $sock  || ! $data ) {
                return 
    'Unable to connect to \'' . $host . '\'.' ;
            }
           
            
    fwrite ( $sock $head . $body_start );
            while(!@
    feof ( $data )) {
                
    fwrite ( $sock fread ( $data 8192 ));
            }
            
    fwrite ( $sock $body_end );
            while(!@
    feof ( $sock )) {
                
    $buffer  .=  fgets ( $sock 8192 );
            }
           
                 
    $file  strstr ( $buffer 'http://' );
                 
                 
    $file_end  substr ( $file 0 strpos ( $file , '.html' ) +  5 );
                    print 
    "FILE :: " . $file_end . "<br>" ;
               
               
    $filekill  substr ( strstr ( $file '.html' ),  5 strlen ( strstr ( $file '.html' )));
               print 
    "KILLFILE :: " . $filekill ;
               
            
    fclose ( $sock );
            
    fclose ( $data );

            
    $buffer  substr ( $buffer strpos ( $buffer LB . LB ) +  4 );
            return 
    substr ( $buffer 0 strpos ( $buffer "\n" ));
        }

    // FTP Verbidung schließen
    ftp_close ( $conn_id );
    ?> 
    hoffe irgendwer sieht den fehler und kann mir behilflich sein.

    Vielen dank
     
  2. 17. Dezember 2007
    AW: fehler + forech()

    Code:
    foreach ($file as $file)
    Da? xD
     
  3. 17. Dezember 2007
    AW: fehler + forech()

    ja aber das problem ist..
    ich weiss die lösung für dieses problem nicht ^^
     
  4. 17. Dezember 2007
    AW: fehler + forech()

    Wie wärs denn mal mit
    PHP:
    <? php
    foreach( $files  as  $file ) {  // ..... ? 
    ?>
    Die Var heißt doch $files und nich $file, also das Array... oder?
     
  5. 17. Dezember 2007
    AW: fehler + forech()

    hm.. ich werds grad nacher mal testen..

    vielen dank.. bewertungen gehen raus.
     
  6. 19. Dezember 2007
    AW: fehler + forech()

    [X] erledigt ?
    [X] close
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.