PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ftp funktionen mit php



Jaipur
18.10.02, 14:12
hi,

ich versuche mich gerade in php, ich wollte gerne als erstes ein script schreiben,
welches mir die dateien/ordner in einem html file auflistet,
die sich in dem aktuellen ordner befinden.

mein erster versuch, aktuelle verzeichnis ausgeben: ftp_pwd
kann ich diese funktion einfach so benutzen oder muss ich noch was beachten?

folgende fehlermeldung habe ich bekommen:
Fatal Error: Call to undefined function: ftp_pwd() in /bla/bla/list.php in line 4711
(ordner und zeilen nummer habe ich geändert)

EDIT:
suse 8.1
apache 2.0.43
php 4.2.2

also, alles lokal auf dem rechner

Impy
18.10.02, 14:24
das deutet darauf hin, dass du die FTP-Funktionen nicht aktiviert hast.

Zum Verzeichnisauflisten würde ich übrigens keine FTP-Verbindung aufbaun :D

http://www.php4-forum.de/beispiele/anwendung_verzeichnis.htm ist sicher ein einfacherer Ansatz (etwas verspielt dazu :D)

bernie
18.10.02, 14:30
Hi,

Original geschrieben von Jaipur
(ordner und zeilen nummer habe ich geändert)
ist das sinnvoll? ;)

probiers mal damit: <? exec("ls"); ?>

Ciao, Bernie

Gaert
18.10.02, 14:38
Hallo!

Hier ist mein Vorschlag... das Skript hab ich vor ewigen Zeiten schon geschrieben, aber es is das was du brauchst!

Es Zeigt in dieser Form allerdings nur Dateien mit der Endung php an...



<HTML>

<BODY>

<B>Ok... hier jetzt meine dynamische Indexseite:</B> <BR>

<?
//alle PHP Dateien des Verzeichnisses anzeigen
$dir = opendir(getcwd());

while($file = readdir($dir))
{
if (strtoupper(substr($file, strlen($file)-3)) == "PHP")
{ echo "<a href=$file> $file</a> <BR>"; }
}
closedir($dir);

?>
</BODY>

</HTML>


Viel Spaß

Gaert

PS: Mit dem Skript hab ich auch meine PHP laufbahn begonnen!

Pingu
18.10.02, 14:46
Hi,

erstens würde ich an Deiner Stelle für solche Fragen das Programmierboard bemühen www.mrunix.de
Die Programmierforen wurden nämlich von hier dahin ausgelagert.

zweitens, wieso nimmst Du die FTP Funktionen? Die Directory Funktionen http://www.php.net/manual/de/ref.dir.php sind doch dafür viel besser geeignet.

drittens wäre es hilfreich nicht nur die Fehlermeldung zu haben, sondern auch den genauen Aufruf, denn sonst können wir auch nur im düsteren Nebel herum stochern.

viertens sind es, wie Impy schon schrieb, sehr danach aus, alsob ftp gar nicht aktiviert ist. Das würde ich mit phpinfo() einfach mal nachprüfen.

-= Pingu =-

Tocotac
18.10.02, 14:49
hab auch mal sowas gemacht. nur funzt das copieren und der rename noch nicht...

settings.inc.php
<?
$ftp_server_name = "server.mynet.lan";
$ftp_server_user = "casimir";
$ftp_server_pass = "topenga";
$mysql_server_name = "server.mynet.lan";
$mysql_server_user = "root";
$mysql_server_pass = "";
$mysql_server_daba = "ftp";
$mysql_table_name = "name";
$mysql_table_pass = "passwd";
$mysql_table_dir = "verzeichnis";

function login()
{
echo "<TABLE ALIGN = \"center\">
<FORM ACTION = \"index.php\" METHOD = \"post\">
<TR><TD>Name</TD><TD><INPUT TYPE = \"text\" NAME = \"php_ftp_name\"></TD></TR>
<TR><TD>Passwort</TD><TD><INPUT TYPE = \"password\" NAME = \"php_ftp_pass\"></TD></TR>
<TR><TD><INPUT TYPE = \"submit\"></TD><TD><INPUT TYPE = \"hidden\" NAME = \"setregister\" VALUE = \"true\"></TD><TR>
</TABLE>";
exit;
}

function setuservar($php_ftp_name,$php_ftp_pass)
{
session_register(php_ftp_name);
session_register(php_ftp_pass);
session_register(olddir);
}

function userbasedir($mysql_server_name,$mysql_server_user, $mysql_server_pass,$mysql_server_daba,$php_ftp_nam e,$php_ftp_pass,$ftp_server_name)
{
echo "<TABLE WIDTH = \"100%\">";
if ($link = @mysql_connect($mysql_server_name,$mysql_server_us er,$mysql_server_pass))
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">MySQL-Server</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$mysql_server_name</TD><TD WIDTH = \"25%\" ALIGN = \"center\">connected</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/true.gif\"></TD></TR>";
else
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">MySQL-Server</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$mysql_server_name</TD><TD WIDTH = \"25%\" ALIGN = \"center\">not connected</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/false.gif\"></TD></TR>";
if (@mysql_select_db($mysql_server_daba,$link))
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">MySQL-Datenbank</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$mysql_server_daba</TD><TD WIDTH = \"25%\" ALIGN = \"center\">avalible</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/true.gif\"></TD></TR>";
else
{
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">MySQL-Datenbank</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$mysql_server_daba</TD><TD WIDTH = \"25%\" ALIGN = \"center\">not avalible</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/false.gif\"></TD></TR>";
exit;
}
echo "</TABLE>";
$ergebnis = mysql_query("select verzeichnis from user where name = \"$php_ftp_name\" && passwd = \"$php_ftp_pass\"");
if (mysql_num_rows($ergebnis) != "1")
{
session_unregister(php_ftp_name);
session_unregister(php_ftp_pass);
echo "<P ALIGN = \"center\">Login failed</P>";
echo "<meta http-equiv = \"refresh\" content = \"0; URL = \">";
exit;
}
$zeile = mysql_fetch_row($ergebnis);
return $zeile[0];
mysql_close($link);
}

function connect_ftp($ftp_server_name,$ftp_server_user,$ftp _server_pass,$php_ftp_user,$home)
{
echo "<TABLE WIDTH = \"100%\">";
if ($ftp_link = @ftp_connect($ftp_server_name))
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">FTP-Server</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$ftp_server_name</TD><TD WIDTH = \"25%\" ALIGN = \"center\">connected</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/true.gif\"></TD></TR>";
else
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">FTP-Server</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$ftp_server_name</TD><TD WIDTH = \"25%\" ALIGN = \"center\">not connected</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/false.gif\"></TD></TR>";
if (@ftp_login ($ftp_link, $ftp_server_user, $ftp_server_pass))
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">FTP-Server</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$ftp_server_name</TD><TD WIDTH = \"25%\" ALIGN = \"center\">login</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/true.gif\"></TD></TR>
<TR><TD WIDTH = \"25%\" ALIGN = \"center\">Name / Verzeichnis</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$php_ftp_user</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$home</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/true.gif\"></TD></TR>";
else
{
echo "<TR><TD WIDTH = \"25%\" ALIGN = \"center\">FTP-Server</TD><TD WIDTH = \"25%\" ALIGN = \"center\">$ftp_server_name</TD><TD WIDTH = \"25%\" ALIGN = \"center\">login</TD><TD WIDTH = \"25%\" ALIGN = \"center\"><IMG SRC = \"pics/false.gif\"></TD></TR>";
exit;
}
echo "</TABLE>";
return ($ftp_link);
}
?>


index.php
<?
session_start();
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"standart.css\">";
require("settings.inc.php");
if (!isset($php_ftp_name) || !isset($php_ftp_pass))
login();
if ($setregister == "true")
setuservar($php_ftp_name,$php_ftp_pass);
if (!isset($homedir))
$home = userbasedir($mysql_server_name,$mysql_server_user, $mysql_server_pass,$mysql_server_daba,$php_ftp_nam e,$php_ftp_pass,$ftp_server_name);
if (!isset($ftp_link))
$ftp_link = connect_ftp($ftp_server_name,$ftp_server_user,$ftp _server_pass,$php_ftp_name,$home);
if (!isset($op))
ftp_chdir($ftp_link,$home);

switch($op)
{
case "cdup":
if ($olddir != ftp_pwd($ftp_link) . "/" . $home)
{
if (!@ftp_chdir($ftp_link,$olddir))
ftp_chdir($ftp_link,$home);
else
ftp_cdup($ftp_link);
}
else
ftp_chdir($ftp_link,$home);
break;

case "cddown":
if (!@ftp_chdir($ftp_link,$olddir.$dir))
ftp_chdir($ftp_link,$home);
break;
}

switch($op2)
{
case "download":
echo "ftp_get($ftp_link,$olddir/$file,$file,FTP-BINARY);";
ftp_get($ftp_link,$olddir . "/" . $file,$file,FTP-BINARY);
break;

case "delete":
ftp_delete($ftp_link,$olddir . "/" . $file);
break;

case "rename":
echo $olddir . "/" . $file;
break;
}
$olddir = ftp_pwd($ftp_link);
$inhalt = ftp_nlist($ftp_link,"");
echo "<TABLE ALIGN=\"center\">";
echo "<TR>
<TD><IMG SRC=\"pics/cddown.gif\" WIDTH = \"15\" HEIGHT = \"15\"></TD><TD><A HREF=\"" . $PHP_SELF . "?op=cdup\">..</A></TD></TR>";
for ($i = 0 ; $i < count($inhalt) ; $i++)
{
if (ftp_size($ftp_link,$inhalt[$i]) != "-1")
echo "<TR>
<TD><IMG SRC=\"pics/file.gif\" WIDTH = \"15\" HEIGTH = \"15\"></TD><TD><P>" . $inhalt[$i] . "</P></A></TD>
<TD><P>" . ftp_size($ftp_link,$inhalt[$i]) . " Byte</P></TD>
<TD><P>" . date("d.m.Y",ftp_mdtm($ftp_link,$inhalt[$i])) . "</P></TD>
<TD><A HREF = \"" . $PHP_SELF . "?op=cddown&dir=/&op2=download&file=" . $inhalt[$i] . "\">download</TD>
<TD><A HREF = \"" . $PHP_SELF . "?op=cddown&dir=/&op2=delete&file=" . $inhalt[$i] . "\">löschen</TD>
<TD><A HREF = \"" . $PHP_SELF . "?op=cddown&dir=/&op2=rename&file=" . $inhalt[$i] . "\">umbenennen</TD>
</TR>";
else
echo "<TR>
<TD><IMG SRC=\"pics/cddown.gif\" WIDTH = \"15\" HEIGHT = \"15\"></TD>
<TD><A HREF = \"" . $PHP_SELF . "?op=cddown&dir=/" . $inhalt[$i] . "\">" . $inhalt[$i] . "</A></TD>
<TD><P>&lt&ltDIR&gt&gt</P></TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>";
}
echo "</TABLE>";
ftp_quit($ftp_link);
?>

aber lass das thema mal bei mrunix weiterschreiben...

Jaipur
18.10.02, 14:55
hi,

@Impy: stimmt, danke!
@bernie: besser, danke!
@Gaert: ja, danke!

... es funzt jetzt.