Annonce

  •  » Utilisation
  •  » [Résolu] Web services en intra site chez Free

#1 2010-01-24 14:23:00

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

[Résolu] Web services en intra site chez Free

Bonjour à tous.

Suite à [Forum, topic 16907] [Important] Auto update et autres web services HS chez Free, ceux qui, comme moi, utilisaient les web services (WS) de Piwigo pour agrémenter des pages sur le même hébergement Free que la galerie mais hors galerie sont dans la panade. Explications en me basant sur mon cas personnel :

Mon site n'est pas organisé uniquement autour de ma galerie et comporte une page d'accueil générale qui permet d'accéder ensuite aux diverses pages (historique, FAQ, liens,...) et applications (galerie, forum, livre d'or,...) qui sont indépendantes entre elles (pas d'intégration totale dans la galerie mis à part le forum qui partage simplement la table users).

Pour agrémenter cette page d'accueil générale, j'ai utilisé les WS pour y afficher une "preview" des images de la galerie : 5 images prises au hasard. Le problème maintenant, chez Free avec le filtrage du port 80, c'est que la méthode d'appel de ces images via le WS se fait par la fonction CURL qui nécessite des URL complètes de type http://**** qui sont dorénavant filtrées.

D'un point de vue technique, il est compréhensible que cette méthode, qui revient à passer par les antipodes pour faire un trajet Paris-Paris, ne soit pas très appréciées sur des structures d'hébergement mutualisées comme Free. Et l'admin des pages persos chez Free refusera de cautionner cela en ouvrant ces URL locales.

L'idée des WS en général était orientée vers les partenariats inter-sites pour lesquels la méthode est tout à fait valide (encore faut-il demander maintenant l'ouverture des URL à Free). Mais ce n'est plus adapté pour de l'intra-sites.


D'où ma question : Existe-t-il une autre approche / méthode qui permette d'utiliser les WS en intra-site sans pour autant faire le tour du monde avant de revenir sur son propre domaine ? Et, plus particulièrement, comment afficher 5 images au hasard de sa galerie sur une page externe à la galerie mais faisant partie du même site sans utiliser CURL ?

Hors ligne

#2 2010-01-24 18:52:28

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Résolu] Web services en intra site chez Free

Piwigo - /extensions/piwigopress/PiwigoPress_get.php - Piwigo

Ce module utilise CURL en dernier ressort.
S'il peut t'inspirer et te permettre d'adapter ton code...

;-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#3 2010-01-25 13:07:07

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] Web services en intra site chez Free

Merci Vincent.

J'ai jeté un oeil assez rapidement ('tite pause au boulot) mais je crois que çà ne va pas le faire. Le code propose effectivement plusieurs méthodes d'appel mais, malheureusement, elles sont toutes "personna non grata" chez Free :

- file_get_contents nécessite l'accès au php.ini -> C'est mort.
- fsockopen n'est pas autorisé chez Free
- CURL... -> Retour au point de départ.


Je peux me gourer. Je vérifierai en profondeur ce soir.

Hors ligne

#4 2010-01-25 13:57:11

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Résolu] Web services en intra site chez Free

Je n'ai pas exploré chez free...
Mais es-tu certain qu'avec une url relative, tu ne peux pas faire un file_get_contents même chez free?

FILE_USE_INCLUDE_PATH est un paramètre à tester
Es-tu certain qu'on ne peut pas faire du file_get_contents dans /include ?
( /include : pas dans Piwigo mais à partir de la racine de ton site)
=> Faire une copie révisée de l'API
(Cf. http://php.net/manual/fr/function.file-get-contents.php )

Dans mes phpinfo() je lis chez free: allow_url_fopen On On
Cela m'étonne que free bloque ça en local.

Au pire pour faire ce que tu veux faire même chez free:
- Lors des visites de tes guests, par un plugin perso...
- Tu parses une micro-page (objet différent de template, sans faire de display).
- Tu enregistres ta micro-page dans un fichier micro-page.html.
Dans ton site (blog ou autre, chez free ou pas), tu insères ta micro page dans un iframe.

Où est le problème?


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#5 2010-01-25 14:21:48

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [Résolu] Web services en intra site chez Free

Bonjour.
D'après mes tests pas de problème pour lire un fichier situé dans le site :
exemple :

// Création d'un flux
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Accès à un fichier HTTP avec les entêtes HTTP indiqués ci-dessus
$file = file_get_contents('../info.htm', false, $context);
echo $file;

Si ça peut faire avancer la chose...

A+

Hors ligne

#6 2010-01-25 17:45:40

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] Web services en intra site chez Free

Comme dit dans mon message de ce midi, j'ai très survolé le code et les implications avec Free. Effectivement, après une analyse plus complète, je confirme que la première méthode qui utilise file_get_contents avec un chemin relatif devrait fonctionner.

Grâce à vos infos, je regarde comment arriver à mettre çà en oeuvre et je reviens donner le résultat ici. Merci !!

Hors ligne

#7 2010-01-26 13:09:19

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] Web services en intra site chez Free

Bon, j'avoue que je patauge lamentablement. Je n'arrive pas à faire interpréter le flux généré par ws.php via file_get_contents. J'avais déjà eu du mal, à l'époque, pour mettre en place le WS sur ma page principale en utilisant CURL et cela ne s'arrange pas maintenant.

Voici le code intégré actuellement dans ma page et qui ne fonctionne plus :

Code:

<?php
// initialisation de la session
$session = curl_init();

// configuration des options
curl_setopt($session, CURLOPT_URL,"http://lucifer.devil.free.fr/phpwebgallery/ws.php?method=pwg.categories.getImages&format=php&recursive=true"."&order=random&f_with_thumbnail=true&per_page=5&page=0&partner=[Clé partenariat]");
curl_setopt($session, CURLOPT_HEADER, 0);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// exécution de la session
$response = curl_exec($session);
$thumbc = unserialize($response);

// fermeture des ressources
curl_close($session);

// Réponse correcte ?
if ($thumbc["stat"]=='ok') {
  for ($i=0;$i<$thumbc["result"]["images"]["count"];$i++) {
    $picture = $thumbc["result"]["images"]["_content"][$i];
    // dans picture nous avons :  id, width, height, hit, file, name, comment, tn_url, element_url
    $HTML_txt = '<a href="./phpwebgallery/picture.php?/'.$picture['id'].'" title="'.$picture['name'].'">'.'<img src="'.$picture['tn_url'].'" alt="'.$picture['name'].'"></a>';
    echo $HTML_txt;
  }
}
?>

J'ai bien compris que toute la partie utilisant la session CURL doit donner lieu à un include d'un nouveau fichier que j'aurai mis dans le dossier d'inclusion de mon site. Ce fichier devant générer un flux à partie de ws.php. Mais il doit me manquer un élément primordial pour y parvenir...

Hors ligne

#8 2010-01-26 13:27:20

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [Résolu] Web services en intra site chez Free

Eric a écrit:

Bon, j'avoue que je patauge lamentablement. Je n'arrive pas à faire interpréter le flux généré par ws.php via file_get_contents. J'avais déjà eu du mal, à l'époque, pour mettre en place le WS sur ma page principale en utilisant CURL et cela ne s'arrange pas maintenant.

Voici le code intégré actuellement dans ma page et qui ne fonctionne plus :

Code:

<?php
// initialisation de la session
$session = curl_init();

// configuration des options
curl_setopt($session, CURLOPT_URL,"http://xxxx.free.fr/xxxwebgallery/ws.php?

...
?>

J'ai bien compris que toute la partie utilisant la session CURL doit donner lieu à un include d'un nouveau fichier que j'aurai mis dans le dossier d'inclusion de mon site. Ce fichier devant générer un flux à partie de ws.php. Mais il doit me manquer un élément primordial pour y parvenir...

Bonjour Eric.
Ce ne serait pas plutôt en adresse relative qui faudrait appeler la fonction ?
du genre :

curl_setopt($session, CURLOPT_URL,"./xxxwebgallery/ws.php?

A+.

Après test: urrl ajoute automatiquement: http:// devant l'url  :-(
l'Url devient : http://./phpwebgallery/ws.php
et bien sur n'est pas valide.
Désolé mais la fonction curl ne devrait pas etre utilisable en intra net.

Dernière modification par cljosse (2010-01-31 11:39:00)

Hors ligne

#9 2010-01-26 17:22:55

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] Web services en intra site chez Free

cljosse a écrit:

Bonjour Eric.
Ce ne serait pas plutôt en adresse relative qui faudrait appeler la fonction ?
du genre :

curl_setopt($session, CURLOPT_URL,"./phpwebgallery/ws.php?

A+.

Après test: urrl ajoute automatiquement: http:// devant l'url  :-(
l'Url devient : http://./phpwebgallery/ws.php
et bien sur n'est pas valide.
Désolé mais la fonction curl ne devrait pas etre utilisable en intra net.

C'est bien là tout le problème qu'il me faut résoudre en m'abstenant d'utiliser CURL au profit d'une autre méthode basée sur file_get_contents.

Toute la difficulté pour moi étant de faire en sorte que file_get_contents puisse lire le flux généré par phpwebgallery/ws.php?method=pwg.categories.getImages&format=php&recursive=true"."&order=random&f_with_thumbnail=true&per_page=5&page=0&partner=[Clé partenariat]"

Hors ligne

#10 2010-01-26 17:51:50

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [Résolu] Web services en intra site chez Free

Le passage des arguments vers  ws.php se fait par $_GET

$_GET['method']='pwg.categories.getImages';

$_GET['format']='php';
$_GET['recursive']='true';
$_GET['order']='random';
$_GET['f_with_thumbnail']='true';
$_GET['per_page']='5';
$_GET['page']='0';
$_GET['partner']='[Clé partenariat]';
include "./Galerie/ws.php" ;
print_r($thumbc);

Que penses tu du résultat?.

Hors ligne

#11 2010-01-26 18:27:10

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Résolu] Web services en intra site chez Free

$_GET['partner']='[Clé partenariat]';

Ignoré.

Le token a été retiré en 2.0 (était valable en 1.7)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#12 2010-01-27 11:42:58

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [Résolu] Web services en intra site chez Free

Bonjour.

Voici le bout de programme testé:
<?php
$_GET['method']='pwg.categories.getImages';
$_GET['format']='php';
$_GET['recursive']='true';
$_GET['order']='random';
$_GET['f_with_thumbnail']='true';
$_GET['per_page']='5';
$_GET['page']='1';
       ob_start();
            include  PHPWG_ROOT_PATH . "ws.php" ;
              $result .= ob_get_contents();
        ob_end_clean();
$thumbc1 = unserialize( $result);
if ($thumbc1["stat"]=='ok') {
  for ($i=0;$i<$thumbc1["result"]["images"]["count"];$i++) {
    $picture = $thumbc1["result"]["images"]["_content"][$i];
    // dans picture nous avons :  id, width, height, hit, file, name, comment, tn_url, element_url
    $HTML_txt = '<a href="./Galerie/picture.php?/'.$picture['id'].'" title="'.$picture['name'].'">'.'<img src="'.$picture['tn_url'].'" alt="'.$picture['name'].'"></a>';
    echo $HTML_txt;
  }
  }
?>
Ce programme doit être executé sous le répertoire de ta galerie et la session ouverte bien sur, sinon le chemin pour les photos n'est pas correcte.
Bon courage .
voir http://cl.josse.free.fr/Galerie/test_ws.php

A+

Hors ligne

#13 2010-01-27 12:08:59

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Résolu] Web services en intra site chez Free

Autant faire un file_get_contents


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#14 2010-01-27 13:02:43

cljosse
Former Piwigo Team
2006-11-12
1167

Re: [Résolu] Web services en intra site chez Free

VDigital a écrit:

Autant faire un file_get_contents

Bonjour
Je n'y arrive pas avec  file_get_contents.
  file_get_contents retourne le texte du fichier, mais ne l'exécute pas.
Peut être une histoire de paramètres et d'options ?


A+

Note: l'exemple précédent avec include.. marche bien sur avec les images distantes si leur path est complet et non en relatif.

Dernière modification par cljosse (2010-01-27 13:06:15)

Hors ligne

#15 2010-01-27 13:05:27

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] Web services en intra site chez Free

Merci pour ces explications qui vont beaucoup m'aider... Ce soir ! (Je ne devrais même pas être en train de poster ici en ce moment - Si mon boss me choppe...)

Hors ligne

  •  » Utilisation
  •  » [Résolu] Web services en intra site chez Free

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact