Page 1 sur 1

[CRON PHP] Aide pour script CRON PHP et wget

Posté : 07 mars 2012, 10:55
par damienborgniet
Bonjour à tous,

Le titre ne me parait pas clair même après 10min à essayer de l'écrire !

Je vous explique donc mon problème :

Tout d'abord sachez que le site correspondant se trouve sur un serveur OVH Mutualisé.
Afin de mettre à jour automatiquement du CMS de Boutique en ligne j'exécute, grâce aux tâches planifiées qu'OVH met à disposition, un script PHP qui parse un .csv et qui mets à jour la DB.
Jusque-là cela fonctionne très bien avec le .csv disponible sur le serveur et la tâche planifié se passe bien.

C'est maintenant que cela se corse...
Ce .csv je le télécharge chez un fournisseurs mais pour cela je dois me loguer avec mes identifiants (le fichier est toujours disponible à la même url).
Donc tout d'abord ma question est, est-ce qu'il est possible dans mon script PHP (ou un autre script lancé avant celui de la mise à jour de la DB) de loguer le serveur sur cette page et de télécharger le fichier .csv sur le ftp ?
J'ai une piste avec une commande WGET en post-data mais je sèche et pas facile de trouver des explications concrètes sur le fonctionnement avec un serveur mutualisé.

Je suis donc à l'écoute de vos idées, si vous voulez bien m'aider bien entendu


D'avance merci à tous !

Re: [CRON PHP] Aide pour script CRON PHP et wget

Posté : 07 mars 2012, 11:06
par moogli
Salut,

Cela dépends de la "connexion" s'il s'agit d'un formulaire y a sûrement moyen de simuler la navigation avec curl et de "naviguer" pour avoir le fichier surtout si l'url ne change pas c'est simple
- simulation du formulaire
- récupération du fichier
Attention il faut préciser l'acceptation des cookies lors de l'utilisation de curl ;)

La solution la plus simple serais de voir si la personne qui fournit le script n'a pas une api pour le faire en transparent (ou si elle ne souhaite pas la développer, ça peut être relativement simple, tu fournit une URL avec tes identifiants dedans et en échange il envoi ton fichier ;), bon y a moyen de faire plus complexe) ça simplifierais les choses ;)

@+

Re: [CRON PHP] Aide pour script CRON PHP et wget

Posté : 07 mars 2012, 11:45
par damienborgniet
En fait voilà plus d'info pour justement creuser cette piste du cURL :

Voici le formulaire de la page de login (nettoyée bien entendu ou j'ai gardé les input et l'url de POST :
<form action="/Account/LogOn?ReturnUrl=%2f" method="post">
    <fieldset>
        <input id="username" name="username" type="text" value="" />
        <input id="password" name="password" type="password" />
        <input id="rememberMe" name="rememberMe" type="checkbox" value="true" />
        <input name="rememberMe" type="hidden" value="false" />
        <input type="submit" value="Log On" />
    </fieldset>
  </form>
Ensuite voici ma tentative en php (juste la partie login + cookie) :
<?php

$fp = fopen("cookie.txt",'wb');	
fclose($fp); 
 
$postfields = array();
$postfields["action"] = "submit";
$postfields["username"] = "XXXXXXX";
$postfields["password"] = "XXXXXXX";

$url = "http://xtract.bascomputers.nl:4040/Account/LogOn?ReturnUrl=%2f";
$useragent = "Mozilla/5.0";
$referer = $url; 

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
 
echo $result;
?>
Et le serveur me renvoi un gentil "Sorry, an error occurred while processing your request.".

Je dois sans doute faire une erreur quelque part mais mes connaissance arrivent à leurs limites #-o

Edit : J'ai ajouté le post du champs rememberme et changé la value du champs submit, et maintenant j'ai un "Object moved to here."

Re: [CRON PHP] Aide pour script CRON PHP et wget

Posté : 07 mars 2012, 12:17
par damienborgniet
J'ai résolu la connexion, en faisant un bête header("Location:url"); sur mon navigateur ils se logue bien (par contre vous croyez que pour le serveur en tâche planifiée ça va fonctionner ?).

Maintenant le soucis que j'ai c'est que j'aimerais, après m'être logué, télécharger le .csv et le stocker sur le serveur. Par contre comme j'ai dis celui-ci est toujours à la même url mais il faut appeler une page aspx qui va le générer. Donc le je suis perdu pour élaborer ma commande cURL.