IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utiliser un fichier qui se trouve sur un autre domaine [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut Utiliser un fichier qui se trouve sur un autre domaine
    Bonjour, je souhaite échanger les données entre deux domaine(http://domaine1 et http://domaine2)
    le domaine1 génère un fichier (séparer par des ; ) et je souhaite le lire dans le domaine2.
    J'ai trouvé des solutions en utilisant AJAX... mais ce n'est pas facile de l'implémenté...
    sur la faq il a ça:
    Comment lire un fichier se trouvant sur le disque du poste client ?
    [haut]
    auteur : BiD0uille
    Il n'est pas possible pour des raisons évidentes de sécurité de faire ce genre d'opération. PHP s'exécute côté serveur et rien ne peut être tenté côte client sans son accord.
    existe il une solution plus simple?

    Merci
    à consulter avant de poster ... la FAQ de C#

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Avec PHP tu peux tout à fait lire le contenu d'un fichier situé sur un autre domaine (si celui ci te le permet).

    Exemple tout bête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $content = file_get_contents('http://mon.autre.domaine.com/data/fichier.txt');
     
    echo $content;
    C'est aussi simple que ça.

    En Ajax par contre c'est beaucoup plus complexe: JavaScript n'autorise pas les requêtes XHR (Ajax) cross-domain (sur un autre domaine) pour des raisons de sécurité. Il est en revanche possible de contourner le problème en utilisant par exemple une image. Je te recommande de te renseigner sur la question sur le forum JavaScript si ça t'intéresse.

    Sinon, la solution la plus évidente est d'utiliser PHP comme proxy: Ajax demande au serveur du domaine1 le fichier en question > PHP va chercher le fichier sur le domaine2 et renvoie le contenu.

  3. #3
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Avec PHP tu peux tout à fait lire le contenu d'un fichier situé sur un autre domaine (si celui ci te le permet).

    Exemple tout bête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $content = file_get_contents('http://mon.autre.domaine.com/data/fichier.txt');
     
    echo $content;
    ça marche pas cette méthode
    à consulter avant de poster ... la FAQ de C#

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Citation Envoyé par unix27 Voir le message
    ça marche pas cette méthode
    Wow, ça c'est un commentaire avec une réelle plus-value informative !

    Tu pourrais peut être nous en dire plus sur ce que tu as essayé de faire concrêtement ?

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention à ne pas confondre le poste client, à savoir l'ordinateur de la personne qui accède au site web, et un autre serveur.
    Après ça dépend de ce que tu veux faire exactement : lire un fichier txt, afficher une image... Dans tous les cas, comme l'a indiqué Benjamin, il faut que le fichier soit accessible depuis le serveur où tu essayes de le lire.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Wow, ça c'est un commentaire avec une réelle plus-value informative !

    Tu pourrais peut être nous en dire plus sur ce que tu as essayé de faire concrêtement ?
    bon
    je pense que le problème est du aux attributs du fichier sur le domaine1 en fait sur Filezila je sélectionne le fichier, ensuite bouton droit, ensuite je change le chmod. Je le change en 777 ( je compte le changer après le test bien sur...)
    je clique sur ok pour valider l'opération.
    Par contre quand j'y reviens sur le fichier mes modifications ne sont pas pris en compte.
    Si l'hébergeur restreint les mises à jour des attributs des fichiers peut-on contourner cela par programmation, cad une fois le fichier créé par programmation , je lui attribue le 777 ??
    à consulter avant de poster ... la FAQ de C#

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Est ce que tu arrives à voir le contenu du fichier ou a le télécharger en te rendant sur son URL déjà ?

  8. #8
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Est ce que tu arrives à voir le contenu du fichier ou a le télécharger en te rendant sur son URL déjà ?
    Oui, j'arrive a le télécharger directement à partir de son url.
    donc pour récapituler j'ai un fichier(man.csv) sur sur le domaine1(http://www.sitesource.com) et je souhaite soit le réécrire ou le déplacer ou le copier sur le domaine2(http://www.sitedestination.com/htdocs) donc j'ai commencé avec cette solution qui me donne un message d'erreur
    pour infos: le domaine1 est sur windows et le domaine 2 est sur unix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    $ftp_server='blabla';
    
    $ftp_user_name='blabla';
    
    $ftp_user_pass='blablablablablabla';
    
    $destination_file="htdocs/".$_FILES['fichier_transféré']['name'];
    
    $source_file=$_FILES['fichier_transféré']['man.csv'];
    
    
    // Mise en place d'une connexion basique
    
    $conn_id = ftp_connect($ftp_server);
    
    
    
    // Identification avec un nom d'utilisateur et un mot de passe
    
    echo "<br>Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name";
    
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    
    
    
    // Vérification de la connexion
    
    if ((!$conn_id) || (!$login_result)) {
    
            echo "<br>La connexion FTP a échoué !";
    
            exit();
    
        } else {
    
            echo "<br>Connexion effectuée...";
    
        }
    
    
    
    // Chargement d'un fichier
    
    //le script fait un put au nom de l'utilisateur connecté
    
    //ce dernier doit avoir le droit d'écriture dans la destination
    
    echo "<br>Chargement de $source_file vers $ftp_server en tant que $destination_file";
    
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
    
    
    
    // Vérification du status du chargement
    
    if (!$upload) {
    
            echo "<br>Le chargement FTP a échoué!";
    
        } else {
    
            echo "<br>Le chargement FTP a réussi!";        
    
        }
    // Fermeture du flux FTP
    
    ftp_quit($conn_id);
    le message d'erreur est le suivant:
    Warning: ftp_put() [function.ftp-put]: Filename cannot be empty in D:\Inetpub\vhosts\domaine1.ma\httpdocs\xxxx.php
    je ne comprends pas le empty ??? man.csv est bien remplie sur le domaine1 pourtant
    à consulter avant de poster ... la FAQ de C#

  9. #9
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    Je sais que je n'étais pas assez clair bon je rebondis cette fois ci sur la solution qui consiste à couper/coller (en utilisant php/ftp)un fichier txt à partir d'un site vers un autre.Donc j'ai réutilisé l'exemple du help ftp:
    je précise que
    1-Le site source est sous windows et que j'ai ouvert la sécurité avec (777) sur le fichier source et le répertoire de départ est: /httpdocs
    j'ai chercher sur les droit de l'hébergeur et j'ai trouvé ça:
    [B]Gestion des autres droits d'écriture/d'édition: Non[/B]
    2- Le site cible est sous unix et le répertoire de départ est:/htdocs idem pour la sécurité
    3- quand je met les deux url direct sur le navigateur je peux télécharger les deux fichier (source et cible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
     
    $ftp_server='ftp.xxxxx';
    $ftp_user_name='xxxxxxx';
    $ftp_user_pass='xxxxx';
     
     
    // Définition de quelques variables
    $local_file = 'testsource.txt';
    $server_file = 'testcible.txt';
     
    // Mise en place d'une connexion basique
    $conn_id = ftp_connect($ftp_server);
     
    // Identification avec un nom d'utilisateur et un mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    // Tentative de téléchargement du fichier $server_file et sauvegarde dans le fichier $local_file
    if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
        echo "Le fichier $local_file a été écris avec succès\n";
    } else {
        echo "Il y a un problème\n";
    }
     
    // Fermeture de la connexion
    ftp_close($conn_id);
     
    ?>
    ça donne ce message d'erreur
    Warning: ftp_get() [function.ftp-get]: Can't open testcible.txt: No such file or directory in D:\Inetpub\vhosts\sitesource\httpdocs\test22.php on line 20
    Il y a un problème
    la ligne 20=if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    help plz
    à consulter avant de poster ... la FAQ de C#

  10. #10
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $server_file = 'htdocs/testcible.txt';
    et maintenant y'a aucune erreur par contre le fichier testcible.txt n'est pas alimenté avec le contenu du fichier testsource.txt et aussi le fichier testsource.txt est réinitialisé a vide après l'exécution de mon script
    -testsource.txt==>contient par exemple abcd
    -testcible.txt==>est vide
    le résultat attendu c'est:testclible.txt doit contenir abcd
    à consulter avant de poster ... la FAQ de C#

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pas besoin de l'extension FTP utilise direct le wrapper ftp://

  12. #12
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    ah c'est bon je viens enfin de combiner le script complet il faut utiliser la fonction ftp_put en gros le script complet est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
     
    $ftp_server='ftp.xxxxx';
    $ftp_user_name='xxxxxxx';
    $ftp_user_pass='xxxxx';
     
     
    // Définition de quelques variables
     
    $file = 'testsource.txt';
    $remote_file = 'htdocs/testcible.txt';
     
    // Mise en place d'une connexion basique
    $conn_id = ftp_connect($ftp_server);
     
    // Identification avec un nom d'utilisateur et un mot de passe
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
     
    // Charge un fichier
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
     echo "Le fichier $file a té chargé avec succès\n";
    } else {
     echo "Il y a eu un problème lors du chargement du fichier $file\n";
    }
     
    // Fermeture de la connexion
    ftp_close($conn_id);
     
    ?>
    Citation Envoyé par stealth35 Voir le message
    pas besoin de l'extension FTP utilise direct le wrapper ftp://
    thank u comme même
    à consulter avant de poster ... la FAQ de C#

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    un copy aurai suffis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir un fichier qui se trouve sur une autre machine
    Par selmagsi dans le forum Général Java
    Réponses: 14
    Dernier message: 24/06/2015, 21h06
  2. Réponses: 0
    Dernier message: 11/05/2015, 17h28
  3. Taille d'un fichier qui se trouve sur un reseau local
    Par ahmedige dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/04/2011, 11h33
  4. Réponses: 3
    Dernier message: 23/09/2007, 19h12
  5. Acceder a une TextBox qui se trouve sur une Autre Form
    Par le_contact dans le forum Windows Forms
    Réponses: 15
    Dernier message: 14/04/2007, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo