afficher du php venu d'ailleurs

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?");
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in */home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le choix.

qui peut me mettre sur la piste ?

merci !!

Alex

Bjr,

le php en question, s'agit-il d'une page d'un site ?
auquel cas peut-être que tu pourrais essayer de "syndiquer" ou plutôt
référencer cette page sur ton site, et peut-être que dans ce cas il y aurait
acceptation ?

----- Original Message -----
From: <listes@a-lex.com>
To: "Spip" <spip@rezo.net>
Sent: Wednesday, August 11, 2004 12:51 PM
Subject: [Spip] afficher du php venu d'ailleurs

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient
d'un autre site, pour faire afficher une info qu ne provient pas de chez
moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in
*/home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et
j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le
choix.

qui peut me mettre sur la piste ?

merci !!

Alex
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

Franck Saint Germain a écrit :

Bjr,

le php en question, s'agit-il d'une page d'un site ?
auquel cas peut-être que tu pourrais essayer de "syndiquer" ou plutôt
référencer cette page sur ton site, et peut-être que dans ce cas il y aurait
acceptation ?

merci de la suggestion ! je vais essayer !
je vais donner des nouvelles dans quelques minutes

Alex

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient
d'un autre site, pour faire afficher une info qu ne provient pas de chez
moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in
*/home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et
j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le
choix.

qui peut me mettre sur la piste ?

merci !!

Alex
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

listes@a-lex.com a écrit :

Franck Saint Germain a écrit :

Bjr,

le php en question, s'agit-il d'une page d'un site ?
auquel cas peut-être que tu pourrais essayer de "syndiquer" ou plutôt
référencer cette page sur ton site, et peut-être que dans ce cas il y aurait
acceptation ?

merci de la suggestion ! je vais essayer !
je vais donner des nouvelles dans quelques minutes

Alex

je répond de suite... ben non, le site estranger ne "veut" pas être syndiqué...
donc je suis toujours en attente de vos tuyaux..$

Alex

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient
d'un autre site, pour faire afficher une info qu ne provient pas de chez
moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in
*/home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et
j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le
choix.

qui peut me mettre sur la piste ?

merci !!

Alex

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

include() n'est pas fait pour ça. Essaie plutôt fsockopen()

Bertrand

Bertrand a écrit :

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

include() n'est pas fait pour ça. Essaie plutôt fsockopen()

Bertrand

heuuu... il n'y a plus de message, mais aussi plus de résultat...
il faut bien remplacer include par fsockopen ? ou c'est autrement ?
merci de mieux me détailler la chose, je ne suis qu'un tout débutant avec ces machins...

Alex

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

Salut..
je suis tout nveau dans la commauté SPIP..
mais ... y'a un truc qui me chiffonne dans ce que tu as mis:
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);

-> je vois pas comment depuis un acces distant tu vas faire pour recuperer le code php d'une page php !!!
en passant par le http, tu vas forcement passer par un serveur qui va interpreter ta page, le resultat ne pourra donc pas etre du php mais du HTML
tu dois aller chercher ta page d'un autre moyen pou avoir acces au fichier php lui-meme et non à son 'image' http.

dwartel a écrit :

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

Salut..
je suis tout nveau dans la commauté SPIP..
mais ... y'a un truc qui me chiffonne dans ce que tu as mis:
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);

-> je vois pas comment depuis un acces distant tu vas faire pour recuperer le code php d'une page php !!!
en passant par le http, tu vas forcement passer par un serveur qui va interpreter ta page, le resultat ne pourra donc pas etre du php mais du HTML

oui, ce que je veux c'est afficher ce résultat dans ma page... ce site distant propose ce service.
mais si je veux faire afficher ce résultat dans mon site "SPIP", j'ai un message d'erreur. c'est là le problème.

listes@a-lex.com wrote:

Bertrand a écrit :

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

include() n'est pas fait pour ça. Essaie plutôt fsockopen()

Bertrand

heuuu... il n'y a plus de message, mais aussi plus de résultat...
il faut bien remplacer include par fsockopen ? ou c'est autrement ?
merci de mieux me détailler la chose, je ne suis qu'un tout débutant avec ces machins...

voici la page de la doc php : PHP: fsockopen - Manual

l'exemple 1 te montre le fonctionnement

Bertrand

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in */home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le choix.

qui peut me mettre sur la piste ?

merci !!

Alex

Il faut que ton script PHP soit autonome, c'est à dire qu'il puisse ouvrir et fermer la base de données dont il dépends tout seul...

Regarde aussi :

En fait, tu peux faire comme moi :
http://www.google.fr/search?q=stream+does+not+support+seeking&ie=UTF-8&hl=fr&btnG=Recherche+Google&meta=

--

Olivier G.
http://talath.no-ip.info/~carmine/blog/dotclear/index.php/

Olivier GENDRIN a écrit :

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in */home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le choix.

qui peut me mettre sur la piste ?

merci !!

Alex

Il faut que ton script PHP soit autonome, c'est à dire qu'il puisse ouvrir et fermer la base de données dont il dépends tout seul...

Regarde aussi :
(iG): A Guide to Internet Access
🚀 FAQ - Centre d'aide - Infomaniak

En fait, tu peux faire comme moi :
stream does not support seeking - Recherche Google

la solution :
<?
@include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

merci à tous pour votre aide !

Alex

Bon, voilà les scripts que j'utilise pour faire afficher une page en provenance d'un autre site
à l'intérieur d'une page de mon site... c'est pas 100% garanti compatible avec tous les contenus
(en particulier avec les formulaires), mais ça fonctionne plutôt bien pour du contenu "basique".
Ça me permet en particulier de "browser" des répertoires à l'intérieur de mon site.

Pour afficher la page "http://www.lesiteetranger.com/lescript.php&quot;
après le contenu d'un article, il suffit de mettre dans le texte de cet article la balise:
<browse http://www.lesiteetranger.com/lescript.php&gt;

Dans le squelette des articles, j'ai:
[<div class="textearticle"> (#TEXTE|fl_complements)</div>]
<?
       if ($flbrowse){
            include("browse.php");
       }
?>

Mon fichier browse.php a la tête suivante:

<?
if (!isset($requestedurl)){$requestedurl="http://lapage_par_defaut_a_inclure/";};
$url=parse_url($requestedurl);
GetUrl($url[host],$url[path],$url[query],"",$page,$tete);
$page= filtrehtml($page);
$page = rewritelinks($page, $PHP_SELF."?".eregi_replace("\&requestedurl.*", "",$argv[0]));
?>
<div align="right"><a href="<? echo $requestedurl; ?>" title="open" target="_blank"><font size="-3">Open this page in a new frame</font> </a></div>
  <?
echo $page;
                           ?>
Et enfin voila un extrait du fichier "mes_fonctions.php"
-----------------------------------------------------------------------------------------

// Liste des racines des sites autorisés pour l'affichage dans les pages
// C'est juste pour éviter que n'importe quel contributeur fasse apparaitre n'importe quel
// page dans le site... Il faut une intervention du webmaster pour autorirser l'affichage d'un
// site... Ça peut-être contourné bien sur... mais c'est déjà une première barrière.
$GLOBALS['Authorized_sites']=array( "http://www2.iap.fr",
                                    "http://www.iap.fr",
                                    "http://www.planck-hfi.org",
                                    "http://194.57.221.79",
                                    );

// Traitement des balises complémentaires pour les articles
// C'est cette fonction qui est appelé lors de l'affichage des articles par: [(#TEXTE|fl_complements)]
function fl_complements($texte_in){
    $texte = $texte_in;
    $texte = fl_browse($texte);
    $texte = smileys($texte);
   //etc...
    return $texte;
}

// fonction contrôlant la navigation dans un répertoire
function fl_browse($fl_txt){
    global $requestedurl;
    $fl_patern_in="|<browse([^>]*?)>|i";
    $fl_replace_in1="";
     if (preg_match($fl_patern_in, $fl_txt, $matches) ) {
        if (trim($matches[1])<>""){
            if (!isset($requestedurl)){
                $requestedurl=trim($matches[1]);
            }
        }
        $fl_txt = preg_replace($fl_patern_in, "$fl_replace_in1", $fl_txt);
        //$rechercher="<browse>";
        //if (strstr($fl_txt,$rechercher)!==false){
        $GLOBALS['flbrowse']=true;
        //$fl_txt = str_replace($rechercher, "", $fl_txt);
    }
    return $fl_txt;
}

// Fonction d'extraction du contenu (ce qui est entre les balises body) d'une page html
// plus les styles s'il y en a...non, c'est trop dangereux car ces styles prévalent sur les css
// et cassent donc tout le site
//<link href="doxygen.css" rel="stylesheet" type="text/css">
function filtrehtml($pagehtml){
    if (eregi("< *body[^>]*>(.*)</body[^>]*>",$pagehtml,$regs)){
        //if (eregi("(< *style[^>]*>)(.*)(</style[^>]*>)",$pagehtml,$flstyles)){
        // $retour = $flstyles[0];
        //} //$retour .= $regs[1];
        $retour = $regs[1];
    }
    else {
        $retour = $pagehtml;
    }
    return $retour;
}

/*
***************** VO ********************
GetUrl v1.1
Originally written by tahmer-@-free.fr
Modified by legrand-@-iap.fr
return:
    -1 cant connect
     0 protocol error
     1 ok
mandatory parameters
    $hostwebserver (ie: "www.web.com")
       $urlin page beginning with "/" (ie: "/index.html")
    $fl_param parameter which have to be passed to the requested page
    $cookie list of cookie
      syntax: [name=value [ ';' name=value]]
    ie: cookie1=v1
       or
    cookie1=v1; cookie2=v2; ...

output parameters
    $page(out) content of url
    $header(out) content of header
    optional parameters
    $fl_login (login and password for basic .htaccess
    $fl_password authentification protected pages: "" if none )
    $fl_timeout Timeout for connection
   exemple:
login on a web server
the login process send a cookie "MagicNumber" witch is mandatory to
access a database result page
ps: cookie are sent by server in the header
Set-Cookie: name=value;....
$res=readurl("www.webserver.com","/login.cgi?user_name=me&password=mypass","",$page,$header);
if ($res!=1) exit;
$MagicNumber=0;
      if (preg_match("/Set-Cookie:\s+MagicNumber=(\d+)/i", $header, $parts))
     $MagicNumber=$parts[1];
if ($MagicNumber==0) exit;
$res=readurl("www.webserver.com","/result.cgi?query=my_query","MagicNumber=$MagicNumber",$page,$header);
*/
function GetUrl($host ,$urlin,$fl_param,$cookie,&$page,&$header,$fl_login="", $fl_password="", $fl_timeout="20",$reecriturl="true",$servport="80"){

if (site_autorise("http://".$host.$urlin)){
    if ($fl_param==""){$url = $urlin;} else {$url = $urlin."?".$fl_param;};
    $page="";
    $header="";
    $sock=fsockopen($host, $servport , $errno , $errstr, 30);
    if (!$sock) {echo "$errstr ($errno)<br />\n"; return -1;};
    //socket_set_timeout($sock, $fl_timeout); // this feature is not supported by our php built
    $msg="GET $url HTTP/1.1";
    //$msg="GET / HTTP/1.1";
    if ($cookie!="") $msg.="\r\nCookie: $cookie";
    $msg.="\r\n"."Host: $host\r\nConnection: Close"."\r\n"."User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n";
    //$msg.="\r\n"."Host: $url\r\nConnection: Keep-Alive"."\r\n"."User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n";
    //if ($fl_login)
    $msg.="Authorization: Basic ".base64_encode("$fl_login:$fl_password")."\r\n";
    $msg.="\r\n\r\nAccept: */* "; //, text/plain, image/*, */* ";
    $msg.="Request-URI: absoluteURI";
    $msg.="\r\n\r\n\r\n\r\n";
   
    $chunked=0;
    // read header
    while ($buffer=fgets($sock,4096)) {
        if ($buffer=="\r\n") break;
        $header.=$buffer;
        if (preg_match("/Transfer-Encoding:\s+(.+)\r\n/U", $buffer, $parts))
            if (strtoupper($parts[1])=="CHUNKED") $chunked=1;
            else echo "**???".$parts[1]."??\r\n";
    }
       if ($chunked==0) {
        while ($buffer = fgets($sock, 4096)) {
            $buffer=fread($sock,4096);
            $page.=$buffer;
        }
    }
    else {
        while ($buffer = fgets($sock, 4096)) {
            if (!preg_match("/\s*([\dABCDEFabcdef]+)\s*\r\n/i", $buffer, $parts)) {
                echo "**chunk size not found : $buffer\r\n";
                return 0;
            }
            $size = (int)base_convert(strtoupper($parts[1]), 16, 10);
            if ($size==0) break;
            $buffer=fread($sock,$size);
            if (strlen($buffer)!=$size) {
                echo "**reading : $size\r\n";
                echo "**readed : ".strlen($buffer)."\r\n";
                return 0;
            }
            $page.=$buffer;
            //echo $buffer;
            $buffer=fgets($sock,4096);
            if ($buffer!="\r\n") {
                echo "**CRLF not found : $buffer\r\n";
                return 0;
            }
        }
    }
        $path_parts = pathinfo($urlin); $dirref = $path_parts["dirname"];
    if ($dirref=="\\"){$dirref ="/" ;} else {$dirref .= "/" ;};
    if ($path_parts["extension"]==""){$dirref .= $path_parts["basename"]."/"; }; $dirref = eregi_replace( "//", "/", $dirref );
    //echo " dirname= ".dirname($urlin)."\r\n";
    //echo " dir= ".$path_parts["dirname"]."\r\n";
    //echo " base= ".$path_parts["basename"]."\r\n";
    //echo " ext= ".$path_parts["extension"]."\r\n";
   
    if ($reecriturl=="true"){
          // On réecrit les URL en absolu
                  // Les liens href = "bla bla" mais aussi <href = bli.bli >
          $page = preg_replace( "|href= *\"\.(?!http:)([^\"]*)\"|i", "href=\"http://".$host.$dirref."\\1\"", $page); $page = preg_replace( "|href= *\"/(?!http:)([^\"]*)\"|i", "href=\"http://".$host."/\\1\"", $page);
          $page = preg_replace( "|href= *\"(?!http:)([^\"]*)\"|i", "href=\"http://".$host.$dirref."\\1\"", $page);
               $page = preg_replace( "|href= *\.(?!\")(?!http:)([^>]*)>|i", "href=\"http://".$host.$dirref."\\1\">", $page); $page = preg_replace( "|href= *(?!\")/(?!http:)([^>]*)>|i", "href=\"http://".$host.$dirref."/\\1\">", $page);
          $page = preg_replace( "|href= *(?!\")(?!http:)([^>]*)>|i", "href=\"http://".$host.$dirref."\\1\">", $page);
     
          $page = preg_replace( "|src= *\"\.(?!http:)([^\"]*)\"|i", "src=\"http://".$host.$dirref."\\1\"", $page);
          $page = preg_replace( "|src= *\"/(?!http:)([^\"]*)\"|i", "src=\"http://".$host."/\\1\"", $page);
          $page = preg_replace( "|src= *\"(?!http:)([^\"]*)\"|i", "src=\"http://".$host.$dirref."\\1\"", $page);
               $page = preg_replace( "|src= *\.(?!\")(?!http:)([^>]*)>|i", "src=\"http://".$host.$dirref."\\1\">", $page); $page = preg_replace( "|src= *(?!\")/(?!http:)([^>]*)>|i", "src=\"http://".$host."/\\1\">", $page);
          $page = preg_replace( "|src= *(?!\")(?!http:)([^>]*)>|i", "src=\"http://".$host.$dirref."\\1\">", $page);
               // les formulaires (risky !!!)
          $page = preg_replace( "|form action= *\"\.(?!http:)([^\"]*)\"|i", "form action=\"http://".$host.$dirref."\\1\"", $page);
          $page = preg_replace( "|form action= *\"/(?!http:)([^\"]*)\"|i", "form action=\"http://".$host."/\\1\"", $page);
          $page = preg_replace( "|form action= *\"(?!http:)([^\"]*)\"|i", "form action=\"http://".$host.$dirref."\\1\"", $page);
               $page = preg_replace( "|form action= *\.(?!\")(?!http:)([^>]*)>|i", "form action=\"http://".$host.$dirref."\\1\">", $page); $page = preg_replace( "|form action= *(?!\")/(?!http:)([^>]*)>|i", "form action=\"http://".$host."/\\1\">", $page);
          $page = preg_replace( "|form action= *(?!\")(?!http:)([^>]*)>|i", "form action=\"http://".$host.$dirref."\\1\">", $page);
         
           }
    fclose($sock);
    return 1;
}
else{
    $page="You cannot display the requested url.";
    $header="";
}

//fonction de calcul d'une url absolue
function absurl($urlaanalyser, $serveur, $pathurlbase){
    $newurl= parse_url($urlaanalyser);
    echo "path = ".$newurl[path]." original=".$urlaanalyser;
    if (isset($newurl[scheme])) {
        // c'est une url absolue car http ou ftp est défini
        return $urlaanalyser;
    }
    elseif (eregi("^/*",$urlaanalyser)){
        // Le chemin défini est absolu
        return "http://".$serveur.$newurl[path];
           }
    else {
        // c'est une url relative: on la transforme
        return "http://".$serveur.$pathurlbase.$newurl[path];
    }
}

// fonction de réécriture des liens d'une page html insérée
function rewritelinks($pagehtml, $pageappelante){
    //return eregi_replace( "^< *href=([^>]*)>$", "<href=\"$pageappelante&amp;requestedurl=\\1 \"", $pagehtml);
    return eregi_replace( "href= *\"", "href=\"$pageappelante&amp;requestedurl=", $pagehtml);

}

// Fonction renvoyant trou si l'url passée est autorisée pour l'affichage et faulse sinon
function site_autorise($url){
    $retour = false;
    foreach ($GLOBALS['Authorized_sites'] as $unsite){
        if (ereg($unsite, $url)){$retour=true;break;}
    }
    return $retour;
}

Bertrand wrote:

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

include() n'est pas fait pour ça. Essaie plutôt fsockopen()

Bertrand

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

Sauf que si tu mets ça dans un squelette, ton html n'est plus valide (ça fait une <head></head><body><head></head><body></body>
</body>...

listes@a-lex.com wrote:

Olivier GENDRIN a écrit :

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

à l'affichage, le script s'exécute mais avec ce message en plus :
*Warning*: main(): stream does not support seeking in */home/sites/site52/web/monsite/CACHE/9/monsite-.b7e7c7.NEW* on line *95

*à l'époque (il y a au moins un an) j'avais déjà posé la question et j'avais finalement abandonné l'idée... mais maintenant je n'ai plus le choix.

qui peut me mettre sur la piste ?

merci !!

Alex

Il faut que ton script PHP soit autonome, c'est à dire qu'il puisse ouvrir et fermer la base de données dont il dépends tout seul...

Regarde aussi :
(iG): A Guide to Internet Access
🚀 FAQ - Centre d'aide - Infomaniak

En fait, tu peux faire comme moi :
stream does not support seeking - Recherche Google

la solution :
<?
@include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

merci à tous pour votre aide !

Alex
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

Francois Legrand a écrit :

Sauf que si tu mets ça dans un squelette, ton html n'est plus valide (ça fait une <head></head><body><head></head><body></body>
</body>...

heu tu peux être plus clair ?

Alex

Ton squelette crée une page ayant la structure suivante:
<html>
<head>
    les trucs a mettre dans le head
</head>
<body>
    Le corps de ta page, avec ses menus, ses news, etc...
    Le texte de ton article
</body>
</html>

Si tu fais un include "brutal", où que ça soit dans ton squelette, tu récupèreras une page web ayant la structure suivante:

<html>
<head>
</head>
<body>
   le blabla de la page a inclure
</body>
<html>

Que tu insèrera quelque part dans ta page... Au final tu auras donc une page ayant la tête suivante:
<html>
<head>
    les trucs a mettre dans le head
</head>
<body>
    Le corps de ta page, avec ses menus, ses news, etc...
    Le texte de ton article
           <html>
        <head>
        </head>
        <body>
               le blabla de la page a inclure
        </body>
        <html>

</body>
</html>

Ors, normalement, une page "bien" constituée n'a qu'une seule section html, head et body et pas deux imbriquées...
Donc la page finale n'est pas "valide"...
Dans les faits, les navigateurs interprèteront à peu près correctement le résultat... Mais attention si la page à inclure
contient des scripts (javascripts par exemple), des redéfinitions de styles ou une mise en page complexe utilisant des
CSS... Là, le résultat risque d'être "chaud".

listes@a-lex.com wrote:

Francois Legrand a écrit :

Sauf que si tu mets ça dans un squelette, ton html n'est plus valide (ça fait une <head></head><body><head></head><body></body>
</body>...

heu tu peux être plus clair ?

Alex

Bon, voilà les scripts que j'utilise pour faire afficher une page en
provenance d'un autre site
à l'intérieur d'une page de mon site... c'est pas 100% garanti
compatible avec tous les contenus
(en particulier avec les formulaires), mais ça fonctionne plutôt bien
pour du contenu "basique".

Salut

ca pourrait faire l'objet d'une contribution dans spip-contrib.net, non ?

JMB

listes@a-lex.com wrote:

Francois Legrand a écrit :

Sauf que si tu mets ça dans un squelette, ton html n'est plus valide (ça fait une <head></head><body><head></head><body></body>
</body>...

heu tu peux être plus clair ?

Alex

Si le fichier que tu inclue à lui aussi des balises html <html>, <head ou <body>, tu va les avoir dans le code html final en, double : les premières qui proviennent de ton fichier contenant et les suivantes de ton fichier contenu. Et c'est pas propre, voire ça peut perturber certains navigateurs.

--

Olivier G.
http://talath.no-ip.info/~carmine/blog/dotclear/index.php/

Salut,
Bon finalement j'ai suivi tes conseils (enfin) et j'ai fait une petite contrib sur le sujet.
http://www.spip-contrib.net/ecrire/articles.php3?id_article=750
Remarques et suggestions sont les bienvenues.
Francois.

Olivier GENDRIN wrote:

Tu peux faire une contrib pour SPIP contrib ?

Francois Legrand wrote:

Bon, voilà les scripts que j'utilise pour faire afficher une page en provenance d'un autre site
à l'intérieur d'une page de mon site... c'est pas 100% garanti compatible avec tous les contenus
(en particulier avec les formulaires), mais ça fonctionne plutôt bien pour du contenu "basique".
Ça me permet en particulier de "browser" des répertoires à l'intérieur de mon site.

Pour afficher la page "http://www.lesiteetranger.com/lescript.php&quot;
après le contenu d'un article, il suffit de mettre dans le texte de cet article la balise:
<browse http://www.lesiteetranger.com/lescript.php&gt;

Dans le squelette des articles, j'ai:
[<div class="textearticle"> (#TEXTE|fl_complements)</div>]
<?
      if ($flbrowse){
           include("browse.php");
      }
?>

Mon fichier browse.php a la tête suivante:

<?
if (!isset($requestedurl)){$requestedurl="http://lapage_par_defaut_a_inclure/";};

$url=parse_url($requestedurl);
GetUrl($url[host],$url[path],$url[query],"",$page,$tete);
$page= filtrehtml($page);
$page = rewritelinks($page, $PHP_SELF."?".eregi_replace("\&requestedurl.*", "",$argv[0]));
?>
<div align="right"><a href="<? echo $requestedurl; ?>" title="open" target="_blank"><font size="-3">Open this page in a new frame</font> </a></div>
<?
echo $page;
                          ?>
Et enfin voila un extrait du fichier "mes_fonctions.php"
-----------------------------------------------------------------------------------------

// Liste des racines des sites autorisés pour l'affichage dans les pages
// C'est juste pour éviter que n'importe quel contributeur fasse apparaitre n'importe quel
// page dans le site... Il faut une intervention du webmaster pour autorirser l'affichage d'un
// site... Ça peut-être contourné bien sur... mais c'est déjà une première barrière.
$GLOBALS['Authorized_sites']=array( "http://www2.iap.fr",
                                   "http://www.iap.fr",
                                   "http://www.planck-hfi.org",
                                   "http://194.57.221.79",
                                   );

// Traitement des balises complémentaires pour les articles
// C'est cette fonction qui est appelé lors de l'affichage des articles par: [(#TEXTE|fl_complements)]
function fl_complements($texte_in){
   $texte = $texte_in;
   $texte = fl_browse($texte);
   $texte = smileys($texte);
  //etc...
   return $texte;
}

// fonction contrôlant la navigation dans un répertoire
function fl_browse($fl_txt){
   global $requestedurl;
   $fl_patern_in="|<browse([^>]*?)>|i";
   $fl_replace_in1="";
    if (preg_match($fl_patern_in, $fl_txt, $matches) ) {
       if (trim($matches[1])<>""){
           if (!isset($requestedurl)){
               $requestedurl=trim($matches[1]);
           }
       }
       $fl_txt = preg_replace($fl_patern_in, "$fl_replace_in1", $fl_txt);
       //$rechercher="<browse>";
       //if (strstr($fl_txt,$rechercher)!==false){
       $GLOBALS['flbrowse']=true;
       //$fl_txt = str_replace($rechercher, "", $fl_txt);
   }
   return $fl_txt;
}

// Fonction d'extraction du contenu (ce qui est entre les balises body) d'une page html
// plus les styles s'il y en a...non, c'est trop dangereux car ces styles prévalent sur les css
// et cassent donc tout le site
//<link href="doxygen.css" rel="stylesheet" type="text/css">
function filtrehtml($pagehtml){
   if (eregi("< *body[^>]*>(.*)</body[^>]*>",$pagehtml,$regs)){
       //if (eregi("(< *style[^>]*>)(.*)(</style[^>]*>)",$pagehtml,$flstyles)){
       // $retour = $flstyles[0];
       //} //$retour .= $regs[1];
       $retour = $regs[1];
   }
   else {
       $retour = $pagehtml;
   }
   return $retour;
}

/*
***************** VO ********************
GetUrl v1.1
Originally written by tahmer-@-free.fr
Modified by legrand-@-iap.fr
return:
   -1 cant connect
    0 protocol error
    1 ok
mandatory parameters
   $hostwebserver (ie: "www.web.com")
     $urlin page beginning with "/" (ie: "/index.html")
   $fl_param parameter which have to be passed to the requested page
   $cookie list of cookie
     syntax: [name=value [ ';' name=value]]
   ie: cookie1=v1
      or
   cookie1=v1; cookie2=v2; ...

output parameters
   $page(out) content of url
   $header(out) content of header
  optional parameters
   $fl_login (login and password for basic .htaccess
   $fl_password authentification protected pages: "" if none )
   $fl_timeout Timeout for connection
  exemple:
login on a web server
the login process send a cookie "MagicNumber" witch is mandatory to
access a database result page
ps: cookie are sent by server in the header
Set-Cookie: name=value;....
$res=readurl("www.webserver.com","/login.cgi?user_name=me&password=mypass","",$page,$header);

if ($res!=1) exit;
$MagicNumber=0;
     if (preg_match("/Set-Cookie:\s+MagicNumber=(\d+)/i", $header, $parts))
    $MagicNumber=$parts[1];
if ($MagicNumber==0) exit;
$res=readurl("www.webserver.com","/result.cgi?query=my_query","MagicNumber=$MagicNumber",$page,$header);

*/
function GetUrl($host ,$urlin,$fl_param,$cookie,&$page,&$header,$fl_login="", $fl_password="", $fl_timeout="20",$reecriturl="true",$servport="80"){

if (site_autorise("http://".$host.$urlin)){
   if ($fl_param==""){$url = $urlin;} else {$url = $urlin."?".$fl_param;};
   $page="";
   $header="";
   $sock=fsockopen($host, $servport , $errno , $errstr, 30);
   if (!$sock) {echo "$errstr ($errno)<br />\n"; return -1;};
   //socket_set_timeout($sock, $fl_timeout); // this feature is not supported by our php built
   $msg="GET $url HTTP/1.1";
   //$msg="GET / HTTP/1.1";
   if ($cookie!="") $msg.="\r\nCookie: $cookie";
   $msg.="\r\n"."Host: $host\r\nConnection: Close"."\r\n"."User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n";
   //$msg.="\r\n"."Host: $url\r\nConnection: Keep-Alive"."\r\n"."User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n";
   //if ($fl_login)
   $msg.="Authorization: Basic ".base64_encode("$fl_login:$fl_password")."\r\n";
   $msg.="\r\n\r\nAccept: */* "; //, text/plain, image/*, */* ";
   $msg.="Request-URI: absoluteURI";
   $msg.="\r\n\r\n\r\n\r\n";
         fputs($sock,$msg);
   $chunked=0;
   // read header
   while ($buffer=fgets($sock,4096)) {
       if ($buffer=="\r\n") break;
       $header.=$buffer;
       if (preg_match("/Transfer-Encoding:\s+(.+)\r\n/U", $buffer, $parts))
           if (strtoupper($parts[1])=="CHUNKED") $chunked=1;
           else echo "**???".$parts[1]."??\r\n";
   }
     if ($chunked==0) {
       while ($buffer = fgets($sock, 4096)) {
           $buffer=fread($sock,4096);
           $page.=$buffer;
       }
   }
   else {
       while ($buffer = fgets($sock, 4096)) {
           if (!preg_match("/\s*([\dABCDEFabcdef]+)\s*\r\n/i", $buffer, $parts)) {
               echo "**chunk size not found : $buffer\r\n";
               return 0;
           }
           $size = (int)base_convert(strtoupper($parts[1]), 16, 10);
           if ($size==0) break;
           $buffer=fread($sock,$size);
           if (strlen($buffer)!=$size) {
               echo "**reading : $size\r\n";
               echo "**readed : ".strlen($buffer)."\r\n";
               return 0;
           }
           $page.=$buffer;
           //echo $buffer;
           $buffer=fgets($sock,4096);
           if ($buffer!="\r\n") {
               echo "**CRLF not found : $buffer\r\n";
               return 0;
           }
       }
   }
      $path_parts = pathinfo($urlin); $dirref = $path_parts["dirname"];
   if ($dirref=="\\"){$dirref ="/" ;} else {$dirref .= "/" ;};
   if ($path_parts["extension"]==""){$dirref .= $path_parts["basename"]."/"; }; $dirref = eregi_replace( "//", "/", $dirref );
   //echo " dirname= ".dirname($urlin)."\r\n";
   //echo " dir= ".$path_parts["dirname"]."\r\n";
   //echo " base= ".$path_parts["basename"]."\r\n";
   //echo " ext= ".$path_parts["extension"]."\r\n";
    if ($reecriturl=="true"){
         // On réecrit les URL en absolu
                // Les liens href = "bla bla" mais aussi <href = bli.bli >
         $page = preg_replace( "|href= *\"\.(?!http:)([^\"]*)\"|i", "href=\"http://".$host.$dirref."\\1\"", $page); $page = preg_replace( "|href= *\"/(?!http:)([^\"]*)\"|i", "href=\"http://".$host."/\\1\"", $page);
         $page = preg_replace( "|href= *\"(?!http:)([^\"]*)\"|i", "href=\"http://".$host.$dirref."\\1\"", $page);
             $page = preg_replace( "|href= *\.(?!\")(?!http:)([^>]*)>|i", "href=\"http://".$host.$dirref."\\1\">", $page); $page = preg_replace( "|href= *(?!\")/(?!http:)([^>]*)>|i", "href=\"http://".$host.$dirref."/\\1\">", $page);
         $page = preg_replace( "|href= *(?!\")(?!http:)([^>]*)>|i", "href=\"http://".$host.$dirref."\\1\">", $page);
                 // les images
         $page = preg_replace( "|src= *\"\.(?!http:)([^\"]*)\"|i", "src=\"http://".$host.$dirref."\\1\"", $page);
         $page = preg_replace( "|src= *\"/(?!http:)([^\"]*)\"|i", "src=\"http://".$host."/\\1\"", $page);
         $page = preg_replace( "|src= *\"(?!http:)([^\"]*)\"|i", "src=\"http://".$host.$dirref."\\1\"", $page);
             $page = preg_replace( "|src= *\.(?!\")(?!http:)([^>]*)>|i", "src=\"http://".$host.$dirref."\\1\">", $page); $page = preg_replace( "|src= *(?!\")/(?!http:)([^>]*)>|i", "src=\"http://".$host."/\\1\">", $page);
         $page = preg_replace( "|src= *(?!\")(?!http:)([^>]*)>|i", "src=\"http://".$host.$dirref."\\1\">", $page);
             // les formulaires (risky !!!)
         $page = preg_replace( "|form action= *\"\.(?!http:)([^\"]*)\"|i", "form action=\"http://".$host.$dirref."\\1\"", $page);
         $page = preg_replace( "|form action= *\"/(?!http:)([^\"]*)\"|i", "form action=\"http://".$host."/\\1\"", $page);
         $page = preg_replace( "|form action= *\"(?!http:)([^\"]*)\"|i", "form action=\"http://".$host.$dirref."\\1\"", $page);
             $page = preg_replace( "|form action= *\.(?!\")(?!http:)([^>]*)>|i", "form action=\"http://".$host.$dirref."\\1\">", $page); $page = preg_replace( "|form action= *(?!\")/(?!http:)([^>]*)>|i", "form action=\"http://".$host."/\\1\">", $page);
         $page = preg_replace( "|form action= *(?!\")(?!http:)([^>]*)>|i", "form action=\"http://".$host.$dirref."\\1\">", $page);
                 }
   fclose($sock);
   return 1;
}
else{
   $page="You cannot display the requested url.";
   $header="";
}

//fonction de calcul d'une url absolue
function absurl($urlaanalyser, $serveur, $pathurlbase){
   $newurl= parse_url($urlaanalyser);
   echo "path = ".$newurl[path]." original=".$urlaanalyser;
   if (isset($newurl[scheme])) {
       // c'est une url absolue car http ou ftp est défini
       return $urlaanalyser;
   }
   elseif (eregi("^/*",$urlaanalyser)){
       // Le chemin défini est absolu
       return "http://".$serveur.$newurl[path];
         }
   else {
       // c'est une url relative: on la transforme
       return "http://".$serveur.$pathurlbase.$newurl[path];
   }
}

// fonction de réécriture des liens d'une page html insérée
function rewritelinks($pagehtml, $pageappelante){
   //return eregi_replace( "^< *href=([^>]*)>$", "<href=\"$pageappelante&amp;requestedurl=\\1 \"", $pagehtml);
   return eregi_replace( "href= *\"", "href=\"$pageappelante&amp;requestedurl=", $pagehtml);

}

// Fonction renvoyant trou si l'url passée est autorisée pour l'affichage et faulse sinon
function site_autorise($url){
   $retour = false;
   foreach ($GLOBALS['Authorized_sites'] as $unsite){
       if (ereg($unsite, $url)){$retour=true;break;}
   }
   return $retour;
}

Bertrand wrote:

listes@a-lex.com wrote:

bonjour les gens !*
*Dans ma page de somaire, je souhaite faire executer un PHP qui provient d'un autre site, pour faire afficher une info qu ne provient pas de chez moi*
*
alors j'ai essayé ceci :
<?
include ("http://www.lesiteetranger.com/lescript.php?&quot;\);
?>

include() n'est pas fait pour ça. Essaie plutôt fsockopen()

Bertrand

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

jeudi 28 octobre 2004,
Bonjour Francois, toutes et tous,

Le jeudi 28 octobre 2004 à 12:56:39, est arrivé dans ma BAL le courrier suivant :

FL> http://www.spip-contrib.net/ecrire/articles.php3?id_article=750
FL> Remarques et suggestions sont les bienvenues.
Flûte, je dois être miro. Il est écrit cet article ou seulement le
titre : Browser des répertoires ou afficher un site externe... ?

--
Roland T.

Utilisant The Bat! v3.0.1.33 (N°S : 781A7842) sur Windows XP 5.1 mouture 2600 Service Pack 1

En fait, il y en a 2. Le 750 vide et celui là complet
http://www.spip-contrib.net/ecrire/articles.php3?id_article=751