thomastegl ->
Jeg har lavet et script i php der kan læse via ftp. Problemet kommer bare når der skal downloades, ftp_get() er deb function man bruger når der skal downloades, problemet er bare at den downloader til den server, php-siden bliver vist fra. Knapt så godt.
dette kan man løse ved at lave linksne sådan:
<a href='
ftp.domain.dk/fil.zip'>" target="_blank">ftp://bruger:password@
ftp.domain.dk/fil.zip'>Heri ligger der så det problem, at det vil blive muligt for brugeren at se brugernavn/password, hvilket jo ikke er ønkseligt, da man så kan gå ind fra et ftp-program og slette filerne, uploade andre osv.
Dette kan man dog komme udenom ved at lave en bruger: 'web' denne bruger har så kun læseadgang, men okay, dette er nok ikke den optimale løsning.
Fandt dog først ud af dette da jeg var færdig med scriptet, så du får det lige alligevel:
Du kan jo evt. bruge det til at lave dit eget design, der passer ind i din side, hvis du får det til at virke med anonym ftp-server:
http://scripts.gonza.dk/ftp/ <-- demo
<?php
$mytitle = "List files"; //Titlen på siden
$icondir = "
http://domain.dk/icons/"; //Mappen hvor icons filerne fra apache ligger i (husk slash (/) til sidst)
$ftp_server = '
ftp.domain.dk'; //ftp serveren UDEN ftp:// KUN
ftp.domain.dk //OBS! Både brugernavn OG password vil være synligt for brugeren, hvorfor der KUN skal være læseadgang for brugernavnet
$ftp_brugernavn = 'user'; //brugernavn på ftp-serveren (blank hvis anonym)
$ftp_password = 'pass'; //password på ftp-serveren (blank hvis anonym)
//Definere hvad mappe der skal kikkes i på ftp-serveren
$ftp_dir = $_GET['dir'];
if (!isset($dir)){
$dir = "/";
}
//laver phpself
$phpself = $_SERVER["PHP_SELF"];
echo "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>".$mytitle."</title>
<meta name=\"generator\" content=\"TSW WebCoder\">
</head>
<body>";
// Forbinder til ftp serveren
$connect = ftp_connect($ftp_server);
// logger ind med brugernavn/password
$login_result = ftp_login($connect, $ftp_brugernavn, $ftp_password);
// tjecker forbindelsen og udskriver fejl-/succesbesked
if ((!$connect) || (!$login_result)) {
echo "FTP forbindelsen fejlede!<br>";
echo "Prøvede at forbninde til ".$ftp_server."<br>";
exit;
} else {
echo "Forbindelsen til ".$ftp_server." forløb succesful<br>";
}
//udskriver/laver 'menu'
$menu = explode("/", $ftp_dir);
echo "<a href='".$phpself."'>root</a>";
foreach ($menu as $showmenu) {
if (!isset($menudir)){
$menudir = $showmenu;
}
else {
$menudir = $menudir."/".$showmenu;
}
echo "/<a href='".$phpself."?dir=".$menudir."'>".$showmenu."</a>";
}
echo "<br>";
// lister filerne i mappen angivet med $ftp_dir
$filelist = ftp_nlist($connect, $ftp_dir);
// Udskriver til skærmen
foreach ($filelist as $showfilesti) {
$showfilearray = explode("/", $showfilesti);
$showfilearray = array_reverse($showfilearray);
if ($showfilearray[0] == ''){
$showfile = $showfilearray[1];
}
else {
$showfile = $showfilearray[0];
}
//får fat i filstørrelsen
$filesize = ftp_size($connect, $showfilesti);
//hvis filstørrelsen = -1, fungerer som mappe
if ($filesize == '-1'){
$extimage = 'dir.gif';
$extension = 'dir';
$show_filesize = "";
$fileurl = "<a href='".$phpself."?dir=".$ftp_dir."/".$showfile."'>".$showfile."</a>";;
}
//ellers er det vel en fil
else{
//laver tekst om filstørrelsen
$show_filesize = " (".$filesize." bytes)";
//finder extension på filerne
$pathinfo = pathinfo($showfile);
$extension = $pathinfo["extension"];
$extension = strtolower($extension);
if ($ftp_brugernavn == ''){
$fileurl = "<a href='
ftp://".$ftp_server."/".$ftp_dir."/".$showfile."'>".$showfile."</a>"; }
else {
$fileurl = "<a href='
ftp://".$ftp_brugernavn.":".$ftp_password."@".$ftp_server."/".$ftp_dir."/".$showfile."'>".$showfile."</a>"; }
//finder billede til extension, billederne er fra $icondir
if (($extension == 'jpg') OR ($extension == 'gif') OR ($extension == 'png') OR ($extension == 'bmp')){
$extimage = 'image2.gif';
}
else if (($extension == 'mpeg') OR ($extension == 'avi')){
$extimage = 'movie.gif';
}
else if (($extension == 'txt')){
$extimage = 'text.gif';
}
else if (($extension == 'gif')){
$extimage = 'compressed.gif';
}
else {
$extimage = 'unknown.gif';
}
}
//udskriver til skærmen
echo "<a href='#'><img src='".$icondir.$extimage."' title='".$extension."' border='0'></a>".$fileurl.$show_filesize."<br>";
}
//lukker forbindelsen til mysql
ftp_close($connect);
echo "
</body>
</html>";
?>