Mise à jour XML via PHP

StyloGraff Messages postés 4 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 9 novembre 2007 - 7 sept. 2007 à 16:01
StyloGraff Messages postés 4 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 9 novembre 2007 - 9 sept. 2007 à 17:54
Pour un système de mise à jour via internet, j'ai écris un bout de code php qui récupère un flux xml et l'enregistre. 

function ecrireXML($var1,$var2,$pathClient) {
   
    // creation de l'url pour la mise à jour ( a cette url se trouve un autre script qui génère le flux XML )
    $url = "http://www.monserveur.com/unAutreScript.php?var1=var1&var2=var2";
   
    // Recupération du flux xml
    $fluxXML  = file_get_contents($url);
   
    // Récupération du chemin où ecrire le fichier xml
    $urlFichier = $pathClient."\monFichier.xml";
   
    // Ecriture du fichier et enregistrement
    $file= fopen($urlFichier, "w+");
    fwrite($file, $fluxXML);
    fclose($file);  
}

Je peux sans problème l'enregistrer sur le serveur mais ce n'est pas le but, et mon gros souci,
c'est que je ne sais pas comment enregistrer ce fichier chez le client, sans passer par un navigateur et sans la boite de dialogue " Enregistrer ce fichier sous".

Est ce que quelqu'un aurait une idée sur la méthode à utiliser, je cherche depuis plusieurs jour mais je n'ai pas trouvé de sujet similaire.
Merci beaucoup pour l'aide que vous pourrez m'apporter.

5 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
7 sept. 2007 à 17:37
Salut!
  Je suis pas sûr de comprendre: tu aimerais, depuis PHP, enregistrer un fichier sur le disque dur du visiteur, c'est ça?

Si oui, deux remarques:
1) PHP est un language serveur, donc, par définition, tu ne pourras pas le faire avec ce language...
2) Heureusement qu'on peut pas le faire: si en se promenant sur le web, les sites pouvaient enregistrer des fichiers sur notre disque à volonté (hors cookies), ca serait un peu l'anarchie, :-D

Si j'ai mal compris, rectifie moi! :-)

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
7 sept. 2007 à 17:39
Salut,

dans ce cas tu peux passer par les fonctions FTP de php. (cf php.net)
à+
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
7 sept. 2007 à 17:41
Ha oui, Cookiesch me fait penser que bien sûr, le "client" doit être d'accord et te filer ses codes ftp (vu la question, j'avais compris "client" comme le client d'une entreprise lol).
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 sept. 2007 à 18:01
Et encore faut-il que le gars ait un serveur ftp.
Tu ne te passeras pas d'un accord de l'utilisateur (et heureusement, comme le dit Raf!). Pour ne pas passer par un formulaire d'upload, ou du FTP,  tu peux tjrs faire un force-download (header...), qui forcera l'affichage du fichier et proposera de le sauvegarder. Mais bon, cela s'ouvrira probablement dans son navigateur vu que c'est du XML. Ou tu triches sur le content-type...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
StyloGraff Messages postés 4 Date d'inscription samedi 10 mars 2007 Statut Membre Dernière intervention 9 novembre 2007
9 sept. 2007 à 17:54
Salut et merci de m'avoir répondu.
Désolé de ne répondre que maintenant mais c'était le mariage de mon frère ce we :)

Je suis pas sûr de comprendre: tu aimerais, depuis PHP, enregistrer un fichier sur le disque dur du visiteur, c'est ça?
=> C'est effectivement ce que j'aurais voulu faire dans l'idéal mais ce n'est effectivement pas possible.

Le problème du ftp, comme du php, c'est qu'il faudrait qu'il y ait un serveur sur la machine de l'utilisateur qui souhaite mettre son application à jour et ce n'est pas possible.
Pour le header de php, c'est en effet un moyen de récupérer les fichiers générés mais cela implique l'ouverture du navigateur et l'action de l'utilisateur pour "enregistrer sous" le fichier, hors, il faut que le fichier s'enregistre au bon endroit, et tout seul, bref ...

J'ai trouvé la solution.....
Ce que j'avais oublié de dire, c'est que je lance la mise à jour à partir d'un executable ( généré par director )
Cette mise à jour appelle un script php qui va écrire mes fichiers xml sur le serveur. Lorsque ces fichiers sont écrit, director est averti, les download sur le serveur et l'enregistrer sur la machine local au bon endroit.

Donc cela fonctionne trés bien. J'aurais préféré que les fichiers ne soient pas écrit sur le serveur qui génère le XML mais bon, tant pis. Ou alors peut être que director peut les effacer une fois downloader, à voir mais ça peut poser pb si plusieurs personnes lance les mises à jours en meme temps
0
Rejoignez-nous