Jak na reklamní formát XML od Invie

icon2 PHP, Tutorial | icon4 17 Srpen 2007 | | 3,086 zobrazení | Vytisknout příspěvek | icon3 2 komentářů »
Invia Pokud používáte affil od Invie a nevíte jak přejít na XML pak zde najdete postup, jak integrovat reklamu na svoje stránky. Ukázku použití najdete zde: http://www.dosveta.info/zajezdy.php



Invia zveřejnila na svých stránkách povídání a i odkaz na stránky kryl.info, kde je PHP kód pro práci s XML souborem, bohužel pracuje s funkcí fopen(), která je na většině webů zakázaná, včetně mého hostingu, proto jsem zbalastil jednoduchý skript / PHP guru prominou, ale je pátek a víc jak 30 minut jsem tomu nechtěl věnovat /.

Ukázka integrace XML:

Warning: fopen(/home/content/m/p/0/mp0007/html/www/dosveta.info/cache/invia_kanary_01.html) [function.fopen]: failed to open stream: No such file or directory in /var/www/mp/pospisil.info/util/zajezdy-vzor.php on line 131

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/mp/pospisil.info/util/zajezdy-vzor.php on line 132

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/mp/pospisil.info/util/zajezdy-vzor.php on line 133
   
Kanárské ostrovy, SOL LANZAROTESOL LANZAROTE
Kanárské ostrovy - SOL LANZAROTE
All Inclusive
20.08 - 27.08. 2010
25490 Kč
 
Kanárské ostrovy, VISTA OASISVISTA OASIS
Kanárské ostrovy - VISTA OASIS
All Inclusive
04.09 - 11.09. 2010
16990 Kč
 
Kanárské ostrovy, GLORIA PALACE ROYALGLORIA PALACE ROYAL
Kanárské ostrovy - GLORIA PALACE ROYAL
Polopenze
07.08 - 14.08. 2010
23990 Kč
 
Kanárské ostrovy, TURQUESA PLAYATURQUESA PLAYA
Kanárské ostrovy - TURQUESA PLAYA
Polopenze
13.08 - 20.08. 2010
17990 Kč
 
Kanárské ostrovy, Tenerifehotel TENERIFE TOUR
Kanárské ostrovy - Tenerife
Polopenze
20.08 - 27.08. 2010
13990 Kč
 


Zdrojový kód skriptu
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>INVIA - nacitani XML</title>
</head>

<body>
<?
function TextBetween($s1,$s2,$s){
  
$s1 strtolower($s1);
  
$s2 strtolower($s2);
  
$L1 strlen($s1);
  
$scheck strtolower($s);
  if(
$L1>0){$pos1 strpos($scheck,$s1);} else {$pos1=0;}
  if(
$pos1 !== false){
   if(
$s2 == '') return substr($s,$pos1+$L1);
   
$pos2 strpos(substr($scheck,$pos1+$L1),$s2);
   if(
$pos2!==false) return substr($s,$pos1+$L1,$pos2);
  }
  return 
'';
}

/*
-----------------------------------
Cache XML ze serveru INVIA - platnost 1 den
zadejte plnou cestu k adresari, kde se bude ukladat XML
na adresari musi byt pravo zapisu chmod 777
pro Windows zadavejte napr. c:\\adresar\\cache
-----------------------------------
*/
$uloz_nabidku "";
$datum date ("d");

if (
file_exists("cache/invia_kanary_$datum.html")){
$soubor "cache/invia_kanary_$datum.html";
$fp fopen($soubor"r");
$obsah fread($fpFileSize($soubor));
fclose($fp);
}else{

/*
-----------------------------------
Pokud neni ulozen v cache 
Nacist XML ze serveru INVIA
pod $zurl zadejte plny odkaz z vaseho affil uctu pri generovani reklamy
-----------------------------------
*/
$zurl "http://banner.invia.cz/ikomunity/affil/........";

  
$ch curl_init();

   
curl_setopt($ch,CURLOPT_URL$zurl);

   
curl_setopt($chCURLOPT_POST,1);

   
curl_setopt($chCURLOPT_FOLLOWLOCATION,0);

   
curl_setopt($chCURLOPT_HEADER,0);

   
curl_setopt($chCURLOPT_RETURNTRANSFER,1);

   
$obsah curl_exec($ch);

   
curl_close($ch);

}


/*
-----------------------------------
Vystupy a zpracovani
-----------------------------------
*/

?>
<table width="75%" border="0" cellspacing="0" cellpadding="2" bgcolor="#D7EBFF">
  <tr>
    <td width="24%">&nbsp;</td>
    <td width="76%">&nbsp;</td>
  </tr>
<?

//5 poslednich zprav:

$pocet 1;
 while (
$pocet <= 5){
    
$nabidka TextBetween("<offer>""</offer>"$obsah);
    
    
    
// rozebrani nabidky mezi tagy <offer> </offer>
    
$fotka TextBetween("<image""</image>"$nabidka);
        
$fotka str_replace(">"" src=\""$fotka);
        
$fotka "<img " $fotka ."\" border=\"0\"/>";
    
$zeme TextBetween("<country>""</country>"$nabidka);
    
$lokalita TextBetween("<locality>""</locality>"$nabidka);
    
$hotel TextBetween("<hotel>""</hotel>"$nabidka);
    
$od TextBetween("<from>""</from>"$nabidka);
        
$od substr($od82) . "." substr($od52);
    
$do TextBetween("<to>""</to>"$nabidka);
        
$do substr($do82) . "." substr($do52) . ". " substr($do04) ;
    
$cena TextBetween("<price currency=""</price>"$nabidka);
        
$cena str_replace("\"CZK\">"""$cena);
        
$cena .= " Kč";
    
$jidlo TextBetween("<food>""</food>"$nabidka);
    
$odkaz TextBetween("<url>""</url>"$nabidka);
    
// ulozeni pro cache
    
$uloz_nabidku .= "<offer>" $nabidka ."</offer>";
    
// odstraneni
    
$obsah str_replace(substr("$obsah"0strpos($obsah"</offer>")+strlen("</offer>")), ""$obsah);
    
    
/*
-----------------------------------
 FORMATOVANY vystup
 zde editujte
-----------------------------------
*/
    
echo "<tr><td width=\"24%\"><a href=\""$odkaz ."\">"$fotka "</a></td>";
    echo 
"<td width=\"76%\"><strong><a href=\""$odkaz ."\">"$hotel ."</a></strong>\n";
    echo 
"<br />\n";
    echo 
$zeme " - " $lokalita;
    echo 
"<br />\n";
    echo 
"<em>"$jidlo ."</em>";
    echo 
"<br />\n";
    echo 
$od " - " $do;
    echo 
"<br />\n";
    echo 
$cena;
    echo 
"</td></tr>\n";
    echo 
"<tr><td>&nbsp;</td></tr>\n";
    
$pocet++;
}
   




/* 
-----------------------------------
 Zapis do cache
 zadejte plnou cestu k adresari, kde se bude ukladat XML
na adresari musi byt pravo zapisu chmod 777
pro Windows zadavejte napr. c:\\adresar\\cache
-----------------------------------
*/
if (file_exists("cache/invia_kanary_$datum.html")){
}else{
$soubor fopen("cache/invia_kanary_$datum.html""w+");
fwrite($soubor$uloz_nabidku);
fclose($soubor);
}
?>
</table>

</body>
</html>


Zobrazit zdrojový kód v novém okně

2 odpovědí

  1. Milan Kryl napsal:

    Jen doplnim, ze skript NEPOUZIVA fopen() ale fsockopen() a ten by mel byt na hostingu povolen :) Vetsinou je prave zakazano otvirani pres fopen(externi_url).

    Spis nebudes mit na hostingu povolene CURL (ac i to se muze objevit).

    To jen upresneni informaci ;)

  2. Tom napsal:

    zdravim, diky za kod, ale mate me ta cesta k adresari cache, proc v tom kodu je napsano kanary? jak tedy ma cesta vypadat? http://www.sepsem.cz/cache ??? např.

    diky

Komentáře k příspěvku

Upozornění: Komentáře jsou chráněné proti SPAMU, pokud se po odeslání neobjeví Váš komentář, vyčkejte na jeho schválení a neodesílejte jej znovu.