php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.05.2005, 17:41  
Gast
 
Beiträge: n/a
Standard FTP funktioniert nicht.

Hallo,

ich wollt mir ein WebFTP machen, und ich habe dieses aus meinem PHP Buch abgetippselt (keine tippfehler!!)

Hier erstmal die Dateien (sorry für den vielen code, ich glaube der wird wichtig sein!)

ftp.php:
PHP-Code:
<?php
  
class ftp {
    var 
$ftp_host     '127.0.0.1';
    var 
$ftp_username 'web1';
    var 
$ftp_password 'server';
    var 
$conn         false;
    var 
$pasv         1;
    var 
$temp         '/tmp/ftpclass';
  }
  
  function 
ftp () {
    
$this->conn ftp_connect$this->ftp_host );
    
ftp_login(
      
$this->conn,
      
$this->ftp_username,
      
$this->ftp_password );
    
$this->path ftp_pwd$this->conn );
    
ftp_pasv$this->conn$this->pasv );
  }
  
  function 
ls$dir ) {
   
$list ftp_rawlist $this->conn$dir );
   
$p    '/';
   
// mod
   
$p   .= '([ldps-]{1})([rwx-]{9})\s+';
   
// int
   
$p   .= '([\d]+)\s+';
   
// user
   
$p   .= '([\da-z-_]+)\s+';
   
// group
   
$p   .= '([\da-z-_]+)\s+';
   
// size
   
$p   .= '([\d]+)\s+';
   
// date
   
$p   .= '(\S+\s+\S+\s+\S+)\s+';
   
// filename
   
$p   .= '(.+)';
   
// end
   
$p   .= '$/si';
   foreach ( 
$list AS $entry ) {
     
$i++;
     
preg_match$p$entry$match );
     
$r[$i]['all']   = $match[0];
     
$r[$i]['type']  = $match[1];
     
$r[$i]['mod']   = $match[2];
     
$r[$i]['bit']   = $match[3];
     
$r[$i]['user']  = $match[4];
     
$r[$i]['group'] = $match[5];
     
$r[$i]['size']  = $match[6];
     
$r[$i]['date']  = $match[7];
     
$r[$i]['file']  = $match[8];
   }
   return 
$r;
  }
  
  function 
cd ($dir) {
    return 
ftp_chdir($this->conn$dir);
  }

  function 
makedir($dir) {
    return 
ftp_mkdir($this->conn$dir);
  }
  
  function 
removedir $dir ) {
    return 
ftp_rmdir$this->conn$dir );
  }
  
  function 
rm $file ) {
    return 
ftp_delete$this->conn$file );
  }
  
  function 
get$file ) {
    
$tmpfile md5microtime( ) );
    
$tmpfile $this->temp.$tmpfile;
    
ftp_get$this->conn$tmpfile$fileFTP_BINARY );
    
$fp      fopen $tmpfile'r');
    
$data    fread$fpfilesize$tmpfile ) );
    
fclose $fp );
    
unlink $tmpfile );
    return 
$data;
  }
  
  function 
put $file$sourcefile ) {
    return 
ftp_put(
      
$this->conn,
      
$file,
      
$sourcefile,
      
FTP_BINARY
    
);
  }
  
  function 
quit () {
   return 
ftp_quit$this->conn );
  }
?>
index.php:
PHP-Code:
<?php
  
function compatible $g) {
     foreach( 
$_GET AS $k => $v ) {
            
$g[$k] = $v;
     }
     foreach( 
$_POST AS $k => $v ) {
            
$g[$k] = $v;
     }
  }
  if( isset( 
$_GET ) ) {
     
compatible( &$GLOBALS );
     
$_upload = &$HTTP_POST_FILES;
  } else {
     
$_upload = &$FILES;
  }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML>
  <HEAD>
   <TITLE>FTP</TITLE>
  </HEAD>
  <STYLE>
   td.lineone {
     background-color: #dddddd;
   }
   td.linetwo {
     background-color: #eeeeee;
   }
   body, table, td, tr {
     font-family: Verdana, Tahoma, Helvetica;
     font-size: 10pt;
   }
   a:link, a:active, a:visited {
     color: black;
     text-decoration: none;
   }
   a:hover {
     color: black;
     text-decoration: underline;
   }
  </STYLE>
  <BODY>
   <TABLE>
     <TR>
       <TD>
         <?php
           
include( 'ftp.php' );
           
$ftp = new ftp;

           function 
bg$key ) {
             return (
$key%2)?'lineone':'linetwo';
           }
           
           function 
slash$loc ) {
             
$r preg_match'/\/$/'$loc );
             return (
$r)?'':$loc.'/';
           }
           
           function 
linkstr$loc ) {
             GLOBAL 
$PHPSELF$dir;
             switch( 
$type ) {
               case 
'd':
                 return 
$PHP_SELF.'?dir='.urlencodeslash$file ) );
               break;
               case 
'-':
                 return 
'wrapper.php?file='.urlencode$file );
               break;
             }
           }
           
           function 
backlink$dir ) {
             return 
substr(
               
$dir,
               
0strrpossubstr$dir,0,-1), '/' )
             );
           }
           
           if( !isset(
$dir) OR $dir == '') {
             
$dir '/';
           }
           
           switch ( 
$action ) {
             case 
'upload':
               
$r $ftp->put($dir.$_upload['uploadfile']['name'],$_upload['uploadfile']['tmp_name']);
               if( 
$r ) {
                 echo 
'Fileupload erfolgreich';
               } else {
                 echo 
'Fileupload fehlgeschlagen';
               }
             break;
             case 
'del':
               if( 
$type == 'dir' )
                 
$r $ftp->removedir$dir.$file );
               else
                 
$r $ftp->rm$dir.$file );
               if (
$r) {
                 echo 
'Erfolgreich gelöscht';
               } else {
                 echo 
'Löschen fehlgeschlagen';
               }
             break;
             case 
'makedir':
               
$r $ftp->makedir$dir.$makedir );
               if (
$r) {
                 echo 
'Verzeichniss erfolgreich angelegt';
               } else {
                 echo 
'Verzeichniss konnte nicht angelegt werden.';
               }
             break;
           }

           
$files $ftp->ls $dir );
           echo 
'<TABLE>';
           
$tdlinktpl '<td class="%s">[url="%s"]%s[/url]</td>';
           
$tdtpl     '<td class="%s">%s</td>';
           
$str       '<tr><td colspan="6">Browsing ftp://%s@%s%s</tr>';
           
printf$str$ftp->ftp_username$ftp->ftp_host$dir );
           
$back      '<tr><td>[img]back.gif[/img]</td><td colspan="5">[url="%s"]Zurück[/url]</td></tr>';
           
printf$backlinkstr'd'backlink$dir ) ) );

           if ( 
count$files ) == ) {
             echo 
'<tr><td colspan="6">Verzeichniss leer.</td></tr>';
           } else {
             foreach( 
$files AS $key => $value ) {
               echo 
'<tr>';
               
               
// Typen
               
switch( $value['type'] ) {
                 case 
'd':
                   
$img '[img]folder.gif[/img]';
                 break;
                 default:
                   
$img '[img]text.gif[/img]';
                 break;
               }
               
printf$tdtplbg$key ), $img);
             }
           }
           
printf(
             
$tdlinktpl,
             
bg$key ),
             
linkstr$value['type'],
             
$dir.$value['file']),
             
$value['file']
           );
           
$size sprintf ('%01.4f MB',$value['size']/1024/1024);
           
printf$tdtplbg$key ), $size);
           
printf$tdtplbg$key ), $value['date']);
           
$url $PHP_SELF.'?dir='.$dir.'&file='.
            
urlencodeslash$value['file'] ) ).'&action=del';
           if( 
$value['type'] == 'd' $url .= '&type=dir';
           
printf$tdlinktplbg$key ), $url'del');
           
           
$url $PHP_SELF.'?dir='.$dir.'&file='.
            
urlencodeslash$value['file'] ) ).'&action=ren';
           if( 
$value['type'] == 'd' $url .= '&type=dir';
           
printf$tdlinktplbg$key ), $url'ren');
           
           echo 
'</tr>';
           
          
//}
          
echo '</table>';
          
        
//}
        
?>
       </TD>
     </TR>
   </TABLE>
   <HR>
   <h3>Datei hochladen</h3>
     <FORM ENCTYPE="multipart/form-data" ACTION="<?php echo $PHP_SELF ?>" METHOD=POST>
       <INPUT TYPE="hidden" NAME="action" VALUE="upload">
       <INPUT TYPE="hidden" NAME="dir" VALUE="<?php echo $dir ?>">
       <INPUT NAME="uploadfile" TYPE="file">
       <INPUT TYPE="submit" VALUE="Send File">
     </FORM>
   <HR>
   <h3>Verzeichniss erstellen</h3>
     <FORM ACTION="<?php echo $PHP_SELF ?>" METHOD=POST>
       <INPUT TYPE="hidden" NAME="action" VALUE="makedir">
       <INPUT TYPE="hidden" NAME="dir" VALUE="<?php echo $dir ?>">
       <INPUT NAME="makedir" TYPE="input">
       <INPUT TYPE="submit" VALUE="Create Dir">
     </FORM>
     <?php
       $ftp
->quit( );
     
?>
  </BODY>
 </HTML>
wrapper.php:
PHP-Code:
<?php
  
include( 'ftp.php' );
  
$ftp = new ftp;
  
$name explode'/'$file );
  
$name $name[count($name)-1];
  
header("Content-disposition: filename=$name");
  
header("Content-Type: application/octet-stream");
  
  echo 
$ftp->get$file );
?>
Als Fehlermeldung kommt immer:

Fatal error: Call to undefined method ftp::ls() in F:\blub\bla\index.php on line 112
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.05.2005, 17:48  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

1) register_globals auf OFF stellen!
2) POST, GET, ... verwenden, nicht $PHP_SELF sondern $_SERVER['PHP_SELF']
3) was ist denn das für ein Buch?
4) ein neues - anderes PHP-Buch kaufen!

Der Beitrag wurde verschoben, wegen...
verschiedener Gründe.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
Aufstrebend, kompetent und werbefrei.
www.developers-guide.net
supertramp ist offline  
Alt 18.05.2005, 18:00  
Gast
 
Beiträge: n/a
Standard

class ftp {
var $ftp_host = '127.0.0.1';
var $ftp_username = 'web1';
var $ftp_password = 'server';
var $conn = false;
var $pasv = 1;
var $temp = '/tmp/ftpclass';
}

Du machst die klammer der Klasse zu früh zu... die ganzen funktionen darunter sollen da höchstwahrscheinlich noch mit rein !
 
Alt 18.05.2005, 18:05  
Gast
 
Beiträge: n/a
Standard Re: FTP funktioniert nicht.

Zitat:
Zitat von Evanescence
ich wollt mir ein WebFTP machen, und ich habe dieses aus meinem PHP Buch abgetippselt (keine tippfehler!!)
Wenn es kein Abtippfehler ist, dann isses ein Druckfehler.

ftp.php:
PHP-Code:
<?php
  
class ftp {
    var 
$ftp_host     '127.0.0.1';
    var 
$ftp_username 'web1';
    var 
$ftp_password 'server';
    var 
$conn         false;
    var 
$pasv         1;
    var 
$temp         '/tmp/ftpclass';
  }
# <------------------------

?>
Ab der markierten Stelle ist durch die } die Klassendeklaration zu Ende. Deshalb gelten die Methoden nicht als Methoden sondern als Funktionen. Deshalb dann diese Fehlermeldungen:
Zitat:
Fatal error: Call to undefined method ftp::ls() in F:\blub\bla\index.php on line 112
Verstanden?

EDIT:
kaum bin ich fertig mit tippern, war schon wieder einer schneller. Ich werd alt...
 
Alt 18.05.2005, 18:07  
Gast
 
Beiträge: n/a
Standard

cooool dann gehts - dankeeee

*freu*
 
Alt 18.05.2005, 18:09  
Gast
 
Beiträge: n/a
Standard

@meikel schon ok aber dein war dafür ausführlicher
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[JS] onClick funktioniert erst beim 2. Mal Klicken. DER_Brain HTML, Usability und Barrierefreiheit 2 08.07.2008 10:47
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
Lokal funktioniert alles -> auf Server fast nichts PsychoEagle Datenbanken 2 14.08.2006 08:43
Nach Einfügugng der Sessions funktioniert mein Program nicht PHP-Fortgeschrittene 1 02.10.2005 06:13
Kontakrformular funktioniert nur zum Teil PHP Tipps 2005-2 12 18.07.2005 11:24
Aus Datei lesen und in Datei schreiben.. funktioniert nicht FBI PHP Tipps 2005-2 3 03.07.2005 16:55
PHP funktioniert nicht PHP Tipps 2005 20 28.04.2005 13:56
Pfadangabe in php.ini funktioniert nicht PHP Tipps 2005 10 29.03.2005 15:16
pear mime mail funktioniert nicht überall PHP Tipps 2005 4 05.01.2005 20:42
geechoter button funktioniert nicht richtig Crypi HTML, Usability und Barrierefreiheit 10 29.12.2004 19:08
Problem: MySQL Query funktioniert nicht. Wieso? PHP Tipps 2004-2 3 24.12.2004 13:58
Login funktioniert mit MD5 nicht PHP Tipps 2004-2 8 13.12.2004 19:32
Dateien erstellen oder schreiben funktioniert nicht im Web PHP Tipps 2004-2 1 05.12.2004 19:39
[Erledigt] mail() Funktion funktioniert nach ServerBackup nicht mehr PHP-Fortgeschrittene 5 29.10.2004 21:29
Header Location funktioniert nicht PHP Tipps 2004 10 12.08.2004 17:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ftp ls funktioniert nicht, ftp_rawlist leer, \if [ -r\ ftp, php microtime printf file line, ftp_rawlist ist leer, php mail und ftp funktionieren nicht, php urlencode ftp, urlencode php phpself, [\'php_self\'].\'?getfile=$, php_self ftp

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.