[PHP] plaatjes vanuit andere locatie weereven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik heb een PHP-script waarin de plaastjes in een directory in een soort fotoalbum worden weergegeven. De directory wordt dan aangegeven met de regel:

$d = dir("images");

Maar nu wil ik de images uit een andere directory halen, op een andere server waar ik meer ruimte heb, maar waar ik geen php-ondersteuning heb. Is het mogelijk om m.b.v. een regeltje script de directory te vervangen door een url waar geen php wordt ondersteund?

Alvast bedankt,
Joris

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Dat hangt helemaal van het script af. Maar ik krijg sterk de indruk dat je het script niet zelf hebt gemaakt. Neem anders contact op met de makers. :)

[ Voor 80% gewijzigd door gorgi_19 op 23-06-2004 19:56 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • MP83
  • Registratie: Januari 2000
  • Laatst online: 02-02 11:53
Nee, dat gaat niet denk ik omdat je de directory op die andere server niet kan uitlezen.

Wellicht staat directory-listing aan en kan je wel de hele pagina inlezen en dan zo parsen dat het wel doet wat jij wil :)

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Je kunt wel met de FTP functies een bestand eventueel verzenden naar een andere server als je daar ook FTP acces hebt: http://www.php.net/ftp

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Zal dat met FTP eens bekijken. Ik dacht al dat het niet zo lukken omdat die andere directory geen php-ondersteuning heeft.

Joris

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

bestand openen gaat misschien wel lukken (fopen wrappers), maar directory listings? denk het niet, als je het hebt werken wil ik de code graag zien :D

Acties:
  • 0 Henk 'm!

Verwijderd

Als je een inhoudsoverizcht van die directory kunt krijgen, kun je die parsen en op basis daarvan je fotoalbum samenstellen.
Moet je natuurlijk wel een listing krijgen bij die directory ;)
Anders kun je idd over ftp connecteren, maar dan zou ik dat enkel gebruiken om de directory listing te verkrijgen en zo te weten welke bestanden daarop staan, erna link je gewoon via http.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Als het ene open dir is, kun je toch makkelijk alle files krijgen door binnen de anchor tags te matchen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heeft een tijdje geduurt, druk met andere dingen enzo, maar hier is tie dan.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$ftp1 = ftp_connect('$server') or die("Couldn't connect to server");
ftp_login($ftp1,'$user','$pass');
ftp_pasv($ftp1, TRUE); 
echo "Collecting Files on Server<br>";
$dir = "";
$path = "images";
ftp_chdir($ftp1, "public_html");
ftp_chdir($ftp1, "$path");
print ftp_pwd($ftp1); echo "<br>";
function filecollect($dir,$filelist) 
{   global $ftp1; 
    $files = ftp_nlist($ftp1,$dir);
    foreach ($files as $file) {
        $isfile = ftp_size($ftp1, $file);
        if($isfile != "-1") { 
            $num = $num+1; 
            $filelist[$num] = $file; 
        }
    }
return $filelist;
ftp_close (ftp1);
}
$filelist = filecollect($dir,$filelist);
$aantal = count($filelist);
$x = 1;
while ($x <= $aantal)
{
    echo "<img src=http://www.linkshandigegitaren.nl/$path/$filelist[$x]>";
    $x = $x+1;
}
?>

[ Voor 13% gewijzigd door gorgi_19 op 28-06-2004 15:04 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 juni 2004 @ 15:03:
Heeft een tijdje geduurt, druk met andere dingen enzo, maar hier is tie dan.
Als ik jou was, zou ik 2 aparte scripts schrijven die:
1. Verbind met de FTP server en de contents van de remote directory in een textfile zet.
2. De inhoud van de textfile uitleest en er (X)HTML van maakt.

Anders is het echt heel langzaam ;)

Astublieft:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?
$ftp1 = ftp_connect('$server') or die("Couldn't connect to server"); 
ftp_login($ftp1,'$user','$pass'); 
ftp_pasv($ftp1, TRUE); 
echo "Collecting Files on Server<br>"; 
$dir = ""; 
$path = "images"; 
ftp_chdir($ftp1, "public_html"); 
ftp_chdir($ftp1, "$path"); 
print ftp_pwd($ftp1); echo "<br>"; 
function filecollect($dir,$filelist) 
{    global $ftp1; 
    $files = ftp_nlist($ftp1,$dir); 
    foreach ($files as $file) { 
        $isfile = ftp_size($ftp1, $file); 
        if($isfile != "-1") { 
               $num = $num+1; 
            $filelist[$num] = $file; 
        } 
    } 
return $filelist; 
ftp_close (ftp1); 
} 
$filelist = filecollect($dir,$filelist); 
$aantal = count($filelist); 
$x = 1; 
$filename = "directorycontents.txt";
$outputfile = fopen($filename, 'w');
$outputlines = "";
while ($x <= $aantal) 
{ 
  $outputlines .= "http://www.linkshandigegitaren.nl/$path/$filelist[$x];"; 
  $x = $x+1; 
} 
$outputlines .= "EOF";
fwrite($outputfile, $outputlines);
fclose($handle);
?>


PHP:
1
2
3
4
5
6
7
8
9
<?
  $directorycontents = file_get_contents("directorycontents.txt");
  $directoryarray = explode(";", $directorycontents);
  foreach ($directoryarray as $url) {
    if ($url != "EOF") {
    echo "[img]\"$url\"[/img]\r\n";
    }
  }
?>


Ik hoop dat t werkt ;) kheb het namelijk niet zelf getest :)

[ Voor 118% gewijzigd door Verwijderd op 28-06-2004 15:33 ]


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:10

Robtimus

me Robtimus no like you

Verwijderd schreef op 28 juni 2004 @ 15:21:
[...]


Als ik jou was, zou ik 2 aparte scripts schrijven die:
1. Verbind met de FTP server en de contents van de remote directory in een textfile zet (maar die heb je dus al ;))
2. De inhoud van de textfile uitleest en er (X)HTML van maakt.

Anders is het echt heel langzaam ;)

Ik heb het script ff aangepast zodat de output naar een text-file gaat:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?
$ftp1 = ftp_connect('$server') or die("Couldn't connect to server"); 
ftp_login($ftp1,'$user','$pass'); 
ftp_pasv($ftp1, TRUE); 
echo "Collecting Files on Server<br>"; 
$dir = ""; 
$path = "images"; 
ftp_chdir($ftp1, "public_html"); 
ftp_chdir($ftp1, "$path"); 
print ftp_pwd($ftp1); echo "<br>"; 
function filecollect($dir,$filelist) 
{    global $ftp1; 
    $files = ftp_nlist($ftp1,$dir); 
    foreach ($files as $file) { 
        $isfile = ftp_size($ftp1, $file); 
        if($isfile != "-1") { 
               $num = $num+1; 
            $filelist[$num] = $file; 
        } 
    } 
return $filelist; 
ftp_close (ftp1); 
} 
$filelist = filecollect($dir,$filelist); 
$aantal = count($filelist); 
$x = 1; 
$filename = "directorycontents.txt";
$outputfile = fopen($filename, 'w');
$outputlines = "";
while ($x <= $aantal) 
{ 
  $outputlines .= "http://www.linkshandigegitaren.nl/$path/$filelist[$x];"; 
  $x = $x+1; 
} 
$outputlines .= "EOF";
fwrite($outputfile, $outputlines);
fclose($handle);
?>


Zal ook nog wel ff snel een script maken die het voor je uitleest en er HTML van maakt ;)
Ik ben vast dom, maar ik zie niet wat hier sneller aan is. Je hebt nml alleen maar een extra loop geintroduceerd: ipv 2 (listen en dan printen naar HTML), heb je er nu 3 (listen, printen naar file, lezen van file).

Ik weet niet of het in PHP ook kan, maar in C zou ik de functie uitbreiden met een extra parameter: een functie die je file neemt als parameter. Dan heb je maar 1 loop nodig: tijdens het listen voer je meteen de functie uit.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function filecollect($dir,$filelist, $func) 
{
    global $ftp1; 
    $files = ftp_nlist($ftp1,$dir); 
    foreach ($files as $file) { 
        $isfile = ftp_size($ftp1, $file); 
        if($isfile != "-1") { 
            $num = $num+1; 
            $filelist[$num] = $file;
            $func($file);
        } 
    } 
    ftp_close (ftp1); 
    return $filelist; 
}
function print($file)
{
    ....
}
$filelist = filecollect($dir,$filelist, print);

Verder zal dit niet goed gaan:
PHP:
1
2
return $filelist; 
ftp_close (ftp1);
Zo wordt je ftp verbinding natuurlijk nooit gesloten; die return haalt je nml direct uit de functie. Eventjes omwisselen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

Verwijderd

IceManX schreef op 28 juni 2004 @ 15:35:
[...]
Ik ben vast dom, maar ik zie niet wat hier sneller aan is. Je hebt nml alleen maar een extra loop geintroduceerd: ipv 2 (listen en dan printen naar HTML), heb je er nu 3 (listen, printen naar file, lezen van file).

Ik weet niet of het in PHP ook kan, maar in C zou ik de functie uitbreiden met een extra parameter: een functie die je file neemt als parameter. Dan heb je maar 1 loop nodig: tijdens het listen voer je meteen de functie uit.
PHP:
1
...

Verder zal dit niet goed gaan:
PHP:
1
...
Zo wordt je ftp verbinding natuurlijk nooit gesloten; die return haalt je nml direct uit de functie. Eventjes omwisselen.
Je hoeft de directory toch maar 1x in te lezen in die text-file :? het lijkt mij nogal overbodig om bij elke hit te verbinden naar de FTP-server, de bestanden op te halen en dat te printen.

[ Voor 23% gewijzigd door Verwijderd op 28-06-2004 15:38 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Het is inderdaad heel langzaam, had ik zelf ook wel door.
Maar als je het in een tekstfile zet, en de directory listing veranderd, dan is ie weer niet up to date.
Veel handiger om gewoon maar veel ruimte met php-ondersteuning te nemen. (ben thuis al een debian-server aan het opzetten). :)
(en heb een 10mbit lijn) :*)


Hoe zet je trouwens die php-code in een kader.

Joris

[ Voor 6% gewijzigd door Verwijderd op 28-06-2004 16:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 juni 2004 @ 16:18:
Hoi,

Het is inderdaad heel langzaam, had ik zelf ook wel door.
Maar als je het in een tekstfile zet, en de directory listing veranderd, dan is ie weer niet up to date.
Veel handiger om gewoon maar veel ruimte met php-ondersteuning te nemen. (ben thuis al een debian-server aan het opzetten). :)
(en heb een 10mbit lijn) :*)


Hoe zet je trouwens die php-code in een kader.

Joris
met [ code ] ;) Je kan het script ook zo veranderen dat hij alleen elke 15 minuten veranderd, scheelt een hoop bandbreedte als je meerdere hits per seconde hebt :p
Pagina: 1