Menu
RSS
Kategorie
Nejnovější články
Nejnovější komentáře
- Nebylo mi souzeno
- 2012
- STOP všemu, hlavně těm pitomcům
- STOP všemu, hlavně těm pitomcům
- STOP všemu, hlavně těm pitomcům
| Last.fm - The Zero | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | E-Type (2919) |
| 2 | Groove Coverage (2380) |
| 3 | Sylver (1558) |
| 4 | Ace of Base (1435) |
| 5 | MAYA (1172) |
| 6 | Cascada (1076) |
| 7 | Solid Base (1061) |
| 8 | Lewron Orchestra (907) |
| 9 | Verona (880) |
| Last.fm - Borek | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | Coldplay (1055) |
| 2 | Jaromír Nohavica (575) |
| 3 | Pink Floyd (551) |
| 4 | Louis Armstrong (403) |
| 5 | Karel Kryl (311) |
| 6 | Anat Cohen (212) |
| 7 | Bobby McFerrin (207) |
| 8 | Vladimír Mišík (202) |
| 8 | ABBA (202) |

Gravatary zprovozněny
Většina aspoň trochu propracovaných RS / CMS umožňuje zobrazovat nějaké obrázky identifikující uživatele. Většinou jsou to gravatary, ale můžeme narazit i různá zajímavá řešení, jako je například načítání favicon u Jakuba Vrány. Já jsem ale zůstal u standardu.
Věděl jsem však jedno: Chce to cache. Nechal jsem se inspirovat u dgx, ale s výjimkou rozpoznávání typu obrázku jsem si napsal cache vlastní.
Jak to funguje
Funguje to přesně tak, jak by mělo, a je to napsáno tak, jak to napsáno být má
. Hlavním rozdílem oproti skriptu od dgx je to, že obrázky nepodsouvá žádný externí skript, ale přímo do kódu komentáře se vloží URL uloženého gravataru. Tady pomáhá nově udělaná cache komentářů
.
Největším problémem bylo načítání souborů. Na hostingu je prozřetelně zakázáno načítání vzdálených souborů. To je sice obtíž, ale já to docela chápu a nestěžuju si. Naštěstí ale existuje cesta okolo. Představuji třídu getFile (píšu zásadně pro PHP 5, proto ta klíčová slova, ale mělo by to po menších úpravách běžet i ve čtyřce):
/**
* Načítání vzdálených souborů
*
* @author TheZero
* @license http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike 3.0 License
*/
class getFile {
protected $content;
protected $header;
public function get($server, $uri, $referer=false) {
if($referer===false)
$referer='http://'.$server;
$socket = fsockopen($server, 80, $errno, $errstr, 12);
fputs($socket, "GET /".$uri." HTTP/1.0\r\n");
fputs($socket, "Host: ".$server."\r\n");
if($referer)
fputs($socket, "Referer: ".$referer."\r\n");
fputs($socket, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2\r\n\r\n");
$content = stream_get_contents($socket);
fclose($socket);
// ořežeme hlavičku
$delim=strpos($content, "\r\n\r\n");
$this->header=substr($content, 0, $delim);
$this->content=substr($content, $delim+4);
return $this->content;
}
public function getContent() {
return $this->content;
}
public function getHeader() {
return $this->header;
}
}
Jak to použít? Jednoduše.
$getfile=new getfile;
$img=$getfile->get('http://www.gravatar.com', 'avatar.php?gravatar_id='.$id.'&size=42&default=http://blog.thezero.info/avatar/data/empty.gif');
Poznámka: Lze to předělat tak, že byste parametry předali už konstruktoru, ale já to tak nemám z důvodu začlenění do frameworku, který pohání uDomain
.
Zařazeno do kategorií internet, O blogu, PHP.
Předchozí: Král je mrtev, ať žije král!
Následující: Jak jsem zase nezískal číslo
Komentáře
1. The Zero
Tohle je test.
Zároveň chci dodat dvě věci: Smazal jsem cache u všech komentářů, takže se to objeví i zpětně.
Ta druhá je, že gravatary zatím nejsou dokonale nastylovány. Pokud je text delší, tak se zobrazí i pod obrázkem. Dejte kdyžtak vědět, jestli to nechat, nebo s tím něco udělat ![]()
Taky už jsem opravil text kurzívou.
2. MzK
Pokus. Já používám zmíněný script od dgx, na tvůj se kouknu jestli je o tolik lepší aby stál za námahu měnit můj RS ![]()