Witam zacząłem ostatnio się bawić w php obiektowe dorwałem więc na początek kurs stworzenia klienta ftp na obiektach i mam kilka problemów skrypt wygląda tak
<?php
class ftp {
var $conn;
function __construct() {
if ($_GET['do']=='unlog') {
$this->usunDane();
}
if ($_POST['logowanie']=='1') {
$this->logowanie();
}
if ($_SESSION['dane']=='1') {
$this->polaczenie();
if ($_POST['form2']=='true') {
if ($_POST['usunPlik']!='')
@ftp_delete($this->conn, $_POST['usunPlik']);
}
foreach ($_FILES as $this->odebrany) {
if ($this->odebrany['name']!='' && @is_uploaded_file($this->odebrany['tmp_name'])) { if (!@move_uploaded_file($this->odebrany['tmp_name'], "upload/".$this->odebrany['name'])) { echo "<br />Nie mogę przenie�ć pliku ".$this->odebrany['name']." - pliku nie wysłano."; continue;
}
$this->upl = @ftp_put
($this->conn, $_SESSION['folder'].basename($this->odebrany['name']), "upload/".$this->odebrany['name'], FTP_BINARY
); if ($this->upl)
echo 'Plik '.basename($this->odebrany['name'])." wysłany!<br />"; else
echo 'Błšd wysyłania pliku '.basename($this->odebrany['name'])."<br />"; @unlink ("upload/".$this->odebrany['name']); }
}
$this->pokazFoldery($_SESSION['folder']);
}
else {
$this->pokazForme();
}
}
private function logowanie() {
$_SESSION['dane']='1';
$_SESSION['login'] = trim($_POST['login']); $_SESSION['serwer'] = trim($_POST['serwer']); $_SESSION['pass'] = trim($_POST['pass']); }
private function usunDane() {
unset($_SESSION['dane'], $_SESSION['serwer'], $_SESSION['login'], $_SESSION['pass'], $_SESSION['folder']); }
private function polaczenie() {
$this->conn = ftp_connect($_SESSION['serwer']);
$this->wynikLogowania = ftp_login($this->conn, $_SESSION['login'], $_SESSION['pass']);
if ((!$this->conn) || (!$this->wynikLogowania)) {
$this->usunDane();
Header("Location:index.php?error=1"); } else {
//ftp_pasv($this->conn, true);
if (!isset($_POST['folder'])&&!isset($_SESSION['folder'])) { $_SESSION['folder'] = '/';
}
else if ($_POST['folder']!='') {
$_SESSION['folder'] = $_POST['folder'];
$_SESSION['folder'] = ereg_replace('/+','/',$_SESSION['folder']); }
}
}
private function parse_rawlist($array) {
for ($i = 0; $i < count($array); $i++ ) { $this->current = $array[$i];
$this->structure[$i]['perms'] = substr($this->current, 0
, 10
); $this->structure[$i]['size'] = trim(substr($this->current, 33
, 9
)); $this->structure[$i]['name'] = trim(substr($this->current, 55
, strlen($this->current) - 55
)); }
return $this->structure;
}
private function displayDirs($folder) {
echo "Użytkownik ".$_SESSION['login']."@".$_SESSION['serwer']."<br />"; echo 'Wyswietlam zawarto�ć folderu '.$folder; $this->pliki = ftp_rawlist($this->conn, $folder);
$this->rawlista = $this->parse_rawlist($this->pliki);
if ($folder!='/'&&$folder!='') {
echo "<tr><td><img src=\"ikony/dir.png\" alt=\"\" /></td><td><a href=\"#\" onclick=\"document.f1.folder.value='".substr($folder, 0
, strpos($folder, strrchr(substr($folder, 0
, strlen($folder)-1), '/')))."/'; document.f1.submit()\">katalog nadrzędny</a></td></tr>\n"; }
foreach ($this->rawlista as $this->plik) {
if (substr($this->plik['perms'], 0, 1) == 'd') $this->isdir = true;
else
$this->isdir = false;
if ($this->plik['name']!='.'&& $this->plik['name']!='..'){
if ($this->isdir==true) {
echo "<img src=\"ikony/dir.png\" alt=\"\" /></td><td><a href=\"#\" onclick=\"document.f1.folder.value='".$folder.$this->plik['name']."/'; document.f1.submit()\">".$this->plik['name']."</a></td><td> </td><td> </td>"; }
else {
echo "<img src=\"ikony/"; case '.jpg': echo "img";break
; case '.pdf': echo "pdf";break
; case '.txt': echo "txt";break
; case '.doc': echo "txt";break
; case '.htm': echo "www";break
; case '.html': echo "www";break
; default: echo 'none';break
; }
echo ".png\" alt=\"\" /></td><td>"; echo "<a href=\"ftp://".$_SESSION['login']."@".$_SESSION['serwer'].$folder.$this->plik['name']."\">".$this->plik['name']."</a>"."</td><td>"; if ($this->plik['size']<1024)
echo $this->plik['size']. "b"; else {
echo round($this->plik['size']/1024, 2)."Kb"; /*trudniejsza wesja do przeanalizowania dla zaawansowanych:
echo "(".($this->plik['size']>1024?round($this->plik['size']/1024, 2).' K':$this->plik['size']." ")."b)";*/
}
echo "</td><td><a href=\"#\" onclick=\"document.f2.usunPlik.value='".$folder.$this->plik['name']."'; if (confirm('Czy usunać plik ".$this->plik['name']." ?')) {document.f2.submit()}\">usuń plik</td>";
}
}
}
}
private function pokazForme() {
if ($_GET['error']=='1')
echo "<span style=\"color:red\">Podałe� błędne dane serwera</span>"; ?>
<form action="ftp.php" method="post">
<input type="text" name="serwer" size="5">Adres serwera<br />
<input type="text" name="login" size="5">Twój login<br />
<input type="password" name="pass">Twoje hasło<br />
<input type="hidden" name="logowanie" value="1">
<input type="submit" value="Loguj sie">
</form>
<?php
}
function __destruct() {
@ftp_close($this->conn);
}
}
$ftp=new ftp;
?>
<HTML>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf8">
<TITLE>homeftp</TITLE>
</HEAD>
<BODY>
<?php
?>
<form name="f1" action="ftp.php" method="post">
<input type="hidden" name="folder" value="" />
</form>
<form name="f2" action="ftp.php" method="post">
<input type="hidden" name="form2" value='true'>
<input type="hidden" name="usunPlik" value="" />
</form>
<?php
if ($_SESSION['dane']==='1') {
?>
<form method="post" action="ftp.php" enctype="multipart/form-data">
<input type="file" name="1">
<input type="file" name="2">
<input type="file" name="3">
<input type="submit" value="wyslij">
</form><br />
<a href="?do=unlog">Wyloguj się z serwera</a>
<?php
}
?>
</BODY>
</HTML>
po zalogowaniu powinna się ukazac lista folderów/plików na serwerze lecz sypię błędem:P
Fatal error: Call to undefined method ftp::pokazFoldery() in /var/www/virtual/kingofspace.c0.pl/ftp.php on line 34
Jeżeli chodzi o hosting skrypt pracuje na cba.pl
Ten post edytował kingofspace 16.01.2010, 10:09:02