[PHP] FTP-Servernaam achterhalen.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een FTP Class, deze class moet gaan connecte met een ftpserver.
Normaal gesproken krijg je een servernaam terug zodra je connect met een server, en ook b.v. een welkom message. Hoe kan je via PHP de ftpservernaam en welkommessage achterhalen?

Als ik met een FTP Programma connect naar een FTP Server dan zie ik dit in de logs:
code:
1
2
3
4
5
6
7
8
9
connecting to 127.0.0.1:21
Connected to 127.0.0.1 port 21
220-WAZAA WELKOM TEXT TESTJE
220 Please enter your name:
USER bla
331 User name okay, Need password.
PASS (hidden)
230-wazaa, dit is text als je ingelogged bent, test........
230 User logged in.


Dat betekend dat zodra ik ftp_connect heb gebruikt hij dus eigenlijk al een servernaam moet krijgen. Maar deze kan ik niet echt achterhalen, of moet ik dan toch met sockets gaan werken? is niet echt optimaal werken dan.
Of is het een idee om via een socket even een connectie te leggen naar die server en meteen weer te sluiten zodat ik de naam heb? Dit lijkt me niet echt geweldig snel.

Acties:
  • 0 Henk 'm!

Verwijderd

Omdat ik vandaag erg goede zin heb een gedeelte uit mijn FTP-class...

Met dit gedeelte maak je connectie:
<?
function connect()
{
$this->ftp_connection_id = ftp_connect($this->config['photo']['ftpServer']);

return $this->ftp_connection_id;
}
?>
En hiermee log je in:
<?
function login()
{
$this->ftp_connection_id = $this->connect();

$this->ftp_connection_result = ftp_login($this->ftp_connection_id, $this->config['photo']['ftpUsername'], $this->config['photo']['ftpPassword']);

$this->ftp_connection_pasv = ftp_pasv($this->ftp_connection_id, true);

if (!$this->ftp_connection_id) {
$this->doError('Couldn\'t Connect to FTP 1');
}

if (!$this->ftp_connection_result) {
$this->doError('Couldn\'t Connect to FTP 2');
}
}
?>
In de ftp-functies staat vervolgens dat je de connection-id moet aanroepen, dit doe je op de volgende manier:
<?
$this->ftp_connection_id = $this->connect();
?>

Even een voorbeeld van een ftp-functie:
<?ftp_chdir($this->ftp_connection_id, $destination_directory)?>

Mmmmh... laat maar... dit is dus overbodig wat ik hierboven gebrabbeld heb :D

[ Voor 28% gewijzigd door Verwijderd op 03-08-2003 16:55 ]


Acties:
  • 0 Henk 'm!

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:30

Akerboom

Codito, ergo sum

de eerste '220' messages bij login zijn niet te zien met de ftp functies van php zelf.

Hierna kan je wel dmv. ftp_raw() de output van commands terugkrijgen.

Om de eerste login messages te krijgen moet je dus even op port 21 connecten met fsockopen()

succes!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja idd, je hebt wel gelijk. Ik heb het nou zo opgelost:
PHP:
1
2
3
4
5
6
$ftpconnection = fsockopen("een.ip.adr.es",21);
if ($ftpconnection) {
    $servername = str_replace("220-","",fgets($ftpconnection,128));
}
fclose($ftpconnection);
echo $servername;