begin process at 2012 05 28 07:46:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

accès ftp


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

accès ftp

jeudi 26 octobre 2006 à 14:39:05 | accès ftp

ygarin

Bonjour à tous,

j'ai mis une petite zone pour un accès ftp sur mon site (www.3d-upside-down.com) pour que mes clients puissent downloader des fichiers personnels mis à leur disposittion. J'ai donc créé une petite page php avec ce code :
<?
$user = $_POST['user'];
$password = $_POST['password'];
$adresse = "ftp://"."$user".":"."$password"."@ftp.3d-upside-down.com";
header("Location:$adresse");
?>
Sous firefox, le dossier s'affiche bien, mais downloader un fichier mène (parfois) à un "access denied". Sous IE, je suis obligé de recharger la page manuellement pour que le dossier s'affiche.
Une idée? (possibilité de tester avec user : public et password : public

Merci d'avance,

yan
jeudi 26 octobre 2006 à 15:44:37 | Re : accès ftp

malalam

Administrateur CodeS-SourceS
Hello,

pourquoi tu n'utilises pas les fonctions ftp de php ?
jeudi 26 octobre 2006 à 15:58:31 | Re : accès ftp

ygarin

salut malalam,

tu parles des ftp_open() &co? j'ai essayé, j'ouvre bien la session, mais je n'arrive pas à afficher le contenu du dossier ftp, et encore moins à rendre son contenu téléchargeable. Mais peut-être suis-je un peu trop vaniteux de vouloir demander autant avec mon petit niveau en php?

jeudi 26 octobre 2006 à 16:31:42 | Re : accès ftp

malalam

Administrateur CodeS-SourceS
Un exemple de mini mini ftp que je me suis monté à l'arrache. Il faut changer les constantes (définir les tiennes plutôt), évidemment.

<?php
require_once 'inc/inc.main.php';
$sCmd = $sLocalExp = $sLocalImp = '';
$aForbid = array ('.', '..');

$rCon = @ftp_connect (FTP_HOST);
if (false === $rCon) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_CONNECT_ERROR);
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_CONNECT_LOG);
}
if (false === @ftp_login ($rCon, FTP_LOGIN, FTP_PWD)) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_LOGIN_ERROR);
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_LOGIN_LOG);
}

if (false === @ftp_pasv($rCon, true )) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_PASV_ERROR);
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_PASV_LOG);
}

if (empty ($_POST['dir'])) {
    $_POST['dir'] = '/';
}
if (empty ($_POST['upload'])) {
    $_POST['upload'] = '';
}

if (false === @ftp_chdir ($rCon, $_POST['dir'])) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_CHDIR_ERROR.' <em>'.$_POST['dir'].'</em>');
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_CHDIR_LOG.' <em>'.$_POST['dir'].'</em>');
}

if (isset ($_POST['act']) && !empty ($_POST['act'])) {
    switch ($_POST['act']) {
        case 1 :
            if (false === @ftp_get ($rCon, 'imported/'.$_POST['upload'], $_POST['upload'], FTP_BINARY)) {
                $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_GET_ERROR.' <em>'.$_POST['upload'].'</em>');
            } else {
                $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_GET_LOG.' <em>'.$_POST['upload'].'</em>');
            }
            break;
        case 2 :
            if (false === @ftp_put ($rCon, 'retour_commande/'.$_POST['upload'], 'exports_ogilvy/'.$_POST['upload'], FTP_BINARY)) {
                $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_GET_ERROR.' <em>'.$_POST['upload'].'</em>');
            } else {
                $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_GET_LOG.' <em>'.$_POST['upload'].'</em>');
            }
            break;
        case 3 :
            if (false === @ftp_put ($rCon, 'stock/'.$_POST['upload'], 'exports_ogilvy/'.$_POST['upload'], FTP_BINARY)) {
                $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_GET_ERROR.' <em>'.$_POST['upload'].'</em>');
            } else {
                $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_GET_LOG.' <em>'.$_POST['upload'].'</em>');
            }
            break;
    }
}

$sCurDir = @ftp_pwd ($rCon);

$aContents = @ftp_nlist($rCon, $sCurDir);
if (false === $aContents) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_DIR_ERROR.' <em>'.$sCurDir.'</em>');
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_DIR_LOG.' <em>'.$sCurDir.'</em>');
    $sCmd .= '<span class="currentDir">REPERTOIRE : <em class="dir">'.$sCurDir.'</em></span><ul>';
    foreach ($aContents as $sCont) {
        $sCmd .= <<<HTML
            <li><span class="liste" onclick="go ('mainForm', '{$sCont}', 0);" title="Lister">{$sCont}</span> <span class="upload" onclick="go ('mainForm', '{$sCont}', 1)" title="Télécharger en local">[UP]</a></li>
HTML;
    }
    $sCmd .= '</ul>';
}

$aExport = scandir ('exports');
$aImport = scandir ('imported');
$aExport = array_diff ($aExport, $aForbid);
$aImport = array_diff ($aImport, $aForbid);
$sLocalExp .= '<span class="currentDir">REPERTOIRE : <em class="dir">EXPORTS</em></span><ul>';
foreach ($aExport as $sFile) {
    if (strpos ($sFile, 'art')) {
        $iJs = 3;
    } elseif (strpos ($sFile, 'cmd')) {
        $iJs = 2;
    }
    $sLocalExp .= <<<HTML
        <li><span class="liste" onclick="go ('mainForm', '{$sFile}', 0);" title="Lister">{$sFile}</span> <span class="upload" onclick="go ('mainForm', '{$sFile}', {$iJs})" title="Uploader sur le FTP">[UP]</a></li>
HTML;
}
$sLocalExp .= '</ul>';
$sLocalImp .= '<span class="currentDir">REPERTOIRE : <em class="dir">IMPORTS</em></span><ul>';
foreach ($aImport as $sFile) {
    $sLocalImp .= <<<HTML
        <li><span class="liste" onclick="go ('mainForm', '{$sFile}', 0);" title="Lister">{$sFile}</span> <span class="upload" onclick="go ('mainForm', '{$sFile}', {$iJs})" title="Uploader sur le FTP">[UP]</a></li>
HTML;
}
$sLocalImp .= '</ul>';

ftp_close ($rCon);
?>

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>XXXXXX</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <link rel="stylesheet" type="text/css" href="<?php echo PATH_CSS; ?>main.css" />
    <script type="text/javascript">
        function go (sForm, sVal, iMode) {
            with (document.getElementById (sForm)) {
                act.value = iMode;
                switch (iMode) {
                    case 0 :
                        dir.value = sVal;
                        upload.value = '';
                        break;
                    case 1 :
                        upload.value = sVal;
                        break;
                    case 2 :
                        upload.value = sVal;
                        break;
                    case 3 :
                        upload.value = sVal;
                        break;
                }
                submit ();
            }
        }
    </script>
    </head>
    <body>
        <form method="post" action="" id="mainForm">
            <p class="hidden">
                <input type="hidden" name="act" value="0" />
                <input type="hidden" name="dir" value="<?php echo $_POST['dir']; ?>" />
                <input type="hidden" name="upload" value="<?php echo $_POST['upload']; ?>" />
            </p>
        </form>
        <div class="menu">
            <span class="menu" onclick="go ('mainForm', '/', 0);">Reconnexion</span>
        </div>
        <div class="mainLeft">
            <p>
                FTP
            </p>
            <p>
                <?php echo $sCmd; ?>
            </p>
        </div>
        <div class="mainRight">
            <p>
                LOCAL
            </p>
            <p>
                <?php echo $sLocalExp; ?>
            </p>
            <p>
                <?php echo $sLocalImp; ?>
            </p>
        </div>
        <div class="errors">
            <h4>LOG</h4>
            <p>
            <?php
                if (!empty ($aMsg)) {
                    foreach ($aMsg as $aMes) {
                        if (0 === $aMes['TYPE']) {
                            echo '<span class="error">- ',$aMes['MSG'],'</span><br />';
                        } else {
                            echo '<span class="log">- ',$aMes['MSG'],'</span><br />';
                        }
                    }
                }
            ?>
            </p>
        </div>
    </body>
</html>
jeudi 26 octobre 2006 à 17:01:04 | Re : accès ftp

ygarin

à l'arrache? je sais dire "merci" en chinois, et tu me récites Confucius en version originale...
J'ai 3 constantes, server, user et password... je mets ça où dans ton code?

jeudi 26 octobre 2006 à 17:39:03 | Re : accès ftp

malalam

Administrateur CodeS-SourceS

$rCon = @ftp_connect (FTP_HOST);
c'est le serveur

ftp_login ($rCon, FTP_LOGIN, FTP_PWD)
c'est le login et le pwd.

(t'as pas bcp regardé...)
jeudi 26 octobre 2006 à 18:05:26 | Re : accès ftp

ygarin

oui, une fois que tu le montres, c'est simple, autrement, c'était perdu au milieu de 1000 variables...
Bon, je suis désolé de passer encore pour un assisté, mais je n'obtiens qu'une page blanche, quels que soient les user/password que je rentre.
Mon fichier "verif.php" a cette tête (et je te paie un coup dès que tu passes par Bombay) :

<?
$user = $_POST['user'];
$password = $_POST['password'];

require_once 'inc/inc.main.php';
$sCmd = $sLocalExp = $sLocalImp = '';
$aForbid = array ('.', '..');

$rCon = @ftp_connect ('ftp.3d-upside-down.com');
if (false === $rCon) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_CONNECT_ERROR);
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_CONNECT_LOG);
}
if (false === @ftp_login ($rCon, $user, $password)) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_LOGIN_ERROR);
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_LOGIN_LOG);
}

if (false === @ftp_pasv($rCon, true )) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_PASV_ERROR);
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_PASV_LOG);
}

if (empty ($_POST['dir'])) {
    $_POST['dir'] = '/';
}
if (empty ($_POST['upload'])) {
    $_POST['upload'] = '';
}

if (false === @ftp_chdir ($rCon, $_POST['dir'])) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_CHDIR_ERROR.' <em>'.$_POST['dir'].'</em>');
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_CHDIR_LOG.' <em>'.$_POST['dir'].'</em>');
}

if (isset ($_POST['act']) && !empty ($_POST['act'])) {
    switch ($_POST['act']) {
        case 1 :
            if (false === @ftp_get ($rCon, 'imported/'.$_POST['upload'], $_POST['upload'], FTP_BINARY)) {
                $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_GET_ERROR.' <em>'.$_POST['upload'].'</em>');
            } else {
                $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_GET_LOG.' <em>'.$_POST['upload'].'</em>');
            }
            break;
        case 2 :
            if (false === @ftp_put ($rCon, 'retour_commande/'.$_POST['upload'], 'exports_ogilvy/'.$_POST['upload'], FTP_BINARY)) {
                $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_GET_ERROR.' <em>'.$_POST['upload'].'</em>');
            } else {
                $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_GET_LOG.' <em>'.$_POST['upload'].'</em>');
            }
            break;
        case 3 :
            if (false === @ftp_put ($rCon, 'stock/'.$_POST['upload'], 'exports_ogilvy/'.$_POST['upload'], FTP_BINARY)) {
                $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_GET_ERROR.' <em>'.$_POST['upload'].'</em>');
            } else {
                $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_GET_LOG.' <em>'.$_POST['upload'].'</em>');
            }
            break;
    }
}

$sCurDir = @ftp_pwd ($rCon);

$aContents = @ftp_nlist($rCon, $sCurDir);
if (false === $aContents) {
    $aMsg[] = array ('TYPE' => 0, 'MSG' => FTP_DIR_ERROR.' <em>'.$sCurDir.'</em>');
} else {
    $aMsg[] = array ('TYPE' => 1, 'MSG' => FTP_DIR_LOG.' <em>'.$sCurDir.'</em>');
    $sCmd .= '<span class="currentDir">REPERTOIRE : <em class="dir">'.$sCurDir.'</em></span><ul>';
    foreach ($aContents as $sCont) {
        $sCmd .= <<<HTML
            <li><span class="liste" onclick="go ('mainForm', '{$sCont}', 0);" title="Lister">{$sCont}</span> <span class="upload" onclick="go ('mainForm', '{$sCont}', 1)" title="Télécharger en local">[UP]</a></li>
HTML;
    }
    $sCmd .= '</ul>';
}

$aExport = scandir ('exports');
$aImport = scandir ('imported');
$aExport = array_diff ($aExport, $aForbid);
$aImport = array_diff ($aImport, $aForbid);
$sLocalExp .= '<span class="currentDir">REPERTOIRE : <em class="dir">EXPORTS</em></span><ul>';
foreach ($aExport as $sFile) {
    if (strpos ($sFile, 'art')) {
        $iJs = 3;
    } elseif (strpos ($sFile, 'cmd')) {
        $iJs = 2;
    }
    $sLocalExp .= <<<HTML
        <li><span class="liste" onclick="go ('mainForm', '{$sFile}', 0);" title="Lister">{$sFile}</span> <span class="upload" onclick="go ('mainForm', '{$sFile}', {$iJs})" title="Uploader sur le FTP">[UP]</a></li>
HTML;
}
$sLocalExp .= '</ul>';
$sLocalImp .= '<span class="currentDir">REPERTOIRE : <em class="dir">IMPORTS</em></span><ul>';
foreach ($aImport as $sFile) {
    $sLocalImp .= <<<HTML
        <li><span class="liste" onclick="go ('mainForm', '{$sFile}', 0);" title="Lister">{$sFile}</span> <span class="upload" onclick="go ('mainForm', '{$sFile}', {$iJs})" title="Uploader sur le FTP">[UP]</a></li>
HTML;
}
$sLocalImp .= '</ul>';

ftp_close ($rCon);
?>

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>XXXXXX</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <link rel="stylesheet" type="text/css" href="<?php echo PATH_CSS; ?>main.css" />
    <script type="text/javascript">
        function go (sForm, sVal, iMode) {
            with (document.getElementById (sForm)) {
                act.value = iMode;
                switch (iMode) {
                    case 0 :
                        dir.value = sVal;
                        upload.value = '';
                        break;
                    case 1 :
                        upload.value = sVal;
                        break;
                    case 2 :
                        upload.value = sVal;
                        break;
                    case 3 :
                        upload.value = sVal;
                        break;
                }
                submit ();
            }
        }
    </script>
    </head>
    <body>
        <form method="post" action="" id="mainForm">
            <p class="hidden">
                <input type="hidden" name="act" value="0" />
                <input type="hidden" name="dir" value="<?php echo $_POST['dir']; ?>" />
                <input type="hidden" name="upload" value="<?php echo $_POST['upload']; ?>" />
            </p>
        </form>
        <div class="menu">
            <span class="menu" onclick="go ('mainForm', '/', 0);">Reconnexion</span>
        </div>
        <div class="mainLeft">
            <p>
                FTP
            </p>
            <p>
                <?php echo $sCmd; ?>
            </p>
        </div>
        <div class="mainRight">
            <p>
                LOCAL
            </p>
            <p>
                <?php echo $sLocalExp; ?>
            </p>
            <p>
                <?php echo $sLocalImp; ?>
            </p>
        </div>
        <div class="errors">
            <h4>LOG</h4>
            <p>
            <?php
                if (!empty ($aMsg)) {
                    foreach ($aMsg as $aMes) {
                        if (0 === $aMes['TYPE']) {
                            echo '<span class="error">- ',$aMes['MSG'],'</span><br />';
                        } else {
                            echo '<span class="log">- ',$aMes['MSG'],'</span><br />';
                        }
                    }
                }
            ?>
            </p>
        </div>
    </body>
</html>

?>
jeudi 26 octobre 2006 à 18:11:53 | Re : accès ftp

ygarin

PS : j'ai enlevé la partie à partir de <?xml... car je pense que c'est la partie entrée, non?
jeudi 26 octobre 2006 à 18:14:16 | Re : accès ftp

malalam

Administrateur CodeS-SourceS
On continuera demain, désolé, ou quelqu'un prendra la relève.
Néanmoins, ton serveur est configuré en short_open_tags = On, donc, modifie déjà ça :
<?xml version="1.0" encoding="ISO-8859-1"?>
=>
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';

Ensuite, ce script utilise quelques fonctions PHP5, à changer si tu es en PHP4 (scandir () par exemple).

A demain ;-)
jeudi 26 octobre 2006 à 18:15:49 | Re : accès ftp

malalam

Administrateur CodeS-SourceS
PS : j'ai enlevé la partie à partir de <?xml... car je pense que c'est la partie entrée, non?

voui

1 2

Cette discussion est classée dans : ftp, user, password, mis, accès


Répondre à ce message

Sujets en rapport avec ce message

Comparaison, si ok, redirection [ par jmobylette ] Bonjour !Voilà, en fait je veux faire un chat pour il faut s'identifier avec le login et mdp eut sur le forum.Donc ben j'ai fait un formulaire avec lo FTP [ par loyousse ] Salut, j'ai un probleme avec ce code : $ftp_server="http://10.79.180.81";   $ftp_user_name="stagsg";   $ftp_user_pass="stage";      // création de l SQL MD5 PASSWORD [ par CDTechStudio ] Salut j'ai une petite question mais importante :PDans le projet que je monte, jutilise SQL, et pour le password du user qui senregistre lors de linsta Ftp avec localhost [ par xavdk ] Bonjour à tous,ma question est vraiment simple:Pourquoi le bout de code suivant ne marche pas en local (avec  easyPhp1-8 Apache etc...) alors que avec ftp_get copie contenu repertoire ftp vers autre site ftp [ par tahbre ] Bonjour, Je veux me connecter à un site ftp autre que le mien, copier tout ce qu'il ya à l'intérieur du répertoire 420 dans mon exemple, et importer l ftp EN LOCAL [ par zakuli ] Bonjour,Débutant en ftp, je voudrais tout simplement exécuter LOCALEMENT le script ci joint :$conn_id = ftp_connect($ftp_server); $login_result = ftp_ PB de retour chariot [ par fredericmaill ] bonjour,j'ai un probleme de retour chariot.j'aimerais faire un retour a la ligne dans une boucle mais j'utilise un systheme de concatenation.c ma conc Accès FTP à www [ par d_alma ] Bonjour, Je souhaiterais pouvoir avoir accès en FTP à un répertoire du www (afin de mettre à jour des donner à afficher en Intranet!) J'utilise vsftp problème dans une classe [ par tempo199 ] Bonjour ou bonsoir à tousJe suis programmeur php à mes heures et plutôt pas mauvaiscependant, je me met à peine aux notions objet de php et je rencont Lo, prob de gestion de fichier sur ftp en php [ par destiny ] lo all,Simple, je crée un fichier, j'insere des mails dedans pour un soft de mailing.mon code ://Création du fichier temp de la liste email visiteur$c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales