Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 18h04   #1
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
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é...
Citation:
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
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 18h15   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
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 :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 18h47   #3
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
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 :
1
2
3
$content = file_get_contents('http://mon.autre.domaine.com/data/fichier.txt');
 
echo $content;
ça marche pas cette méthode
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 10h21   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
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 ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 13h45   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 388
Points : 5 388
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 14h27   #6
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
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 ??
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 18h19   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Est ce que tu arrives à voir le contenu du fichier ou a le télécharger en te rendant sur son URL déjà ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 20h58   #8
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
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 :
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:
Citation:
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
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 22h16   #9
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
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 :
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
Citation:
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
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 17h52   #10
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
j'ai mis
Code :
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
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 17h59   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 167
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 167
Points : 8 542
Points : 8 542
pas besoin de l'extension FTP utilise direct le wrapper ftp://
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 18h22   #12
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
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 :
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
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 00h06   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 167
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 167
Points : 8 542
Points : 8 542
un copy aurai suffis
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h10.


 
 
 
 
Partenaires

Hébergement Web