Nils Pickert Published on February 27, 2008
by Nils Pickertpro

Nils Pickert's blog

Browse posts
Blues Vader
Posted on May 14, 2008
1 comment (latest 6 months ago)
Visitor 12345
Posted on April 18, 2008
What if one of them seems odd? - or - The end of photography
Posted on March 5, 2008
2 comments (latest 8 months ago)
To fast...
Posted on March 1st, 2008
How to include your latest photos in your webpage/blog/...
6 comments (latest 8 months ago)
Warranty over, device dead
Posted on February 24, 2008
12 comments (latest 8 months ago)
Mondfinsternis
Posted on February 20, 2008
2 comments (latest 9 months ago)
Wikimedia Pictures of the year
Posted on January 27, 2008
3 comments (latest 9 months ago)
Physicists help for your daily life...
Posted on November 27, 2007
1 comment (latest 11 months ago)

More information

This post is public
© All rights reserved
  1. 364 visits

How to include your latest photos in your webpage/blog/...

Wednesday February 27, 2008 at 09:06PM

I revamped my homepage and wanted to include the latest pictures I uploaded to ipernity. This is quite easy done in php, as IP provides a feed of your latest pictures as a php-array (see the feed help page)

The code I ended up with is as follows:

<?php
include 'www.ipernity.com/feed/doc?user_id=nils&only=photo&format=php';

$size="t";
$number_of_imgs=14;
$linebreakafter=7;

print("<div class=\"ipernity\">");
for($i=0;$i<$number_of_imgs;$i++)
{
        printf("<a href=\"%s\">\n",$feed["items"][$i]["link"]);
        printf("\t<img src=\"%s\" width=\"%s\" height=\"%s\" alt=\"%s\" />\n",
                $feed["items"][$i]["thumbs"][$size]["url"],
                $feed["items"][$i]["thumbs"][$size]["width"],
                $feed["items"][$i]["thumbs"][$size]["height"],
                $feed["items"][$i]["title"]);
        print("</a>\n");
        if( ($i+1)%$linebreakafter == 0 && $i > 0)
                print("<br />\n");
}
print("</div>");
?>

6 Comments / add your comment?

sab pro says:
Your PHP is OK, but your HTML .... :-)
You have to wrap every parameter in "" (even the numericals!) and the alt-attribute is missing.
Posted 8 months ago. ( permalink )
Nils Pickert pro replies:
Hey, für einen spät abends Hack ist das noch echt OK. Im Original ist der Code sogar indentiert. Und ich habe ein / am Ende vom Img-Tag...

Habs aber mal geändert.
--
Seen in a user home page (?)
Posted 8 months ago. ( permalink / translate )
Nils Pickert edited this comment 8 months ago.
beatmaster pro says:
Also der include()-Befehl sollte auf einem korrekt konfigurierten Webserver schon mal nicht funktionieren! :-(
Ich weiss, ich weiss, die allow_url_include-Direktive ist noch nicht bei allen angekommen ;-)
Grundsätzlich stellt sich nämlich die Frage: Will man "fremden code" auf dem eigenen Server laufen lassen?
Und daher sollte jede potentielle Möglichkeit, einen Angreifer Code einschleusen zu lassen, ausgeschlossen werden!
Jetzt könnte man dies generell tun, und dem einen Skript das ipernity abfragt selbiges "ausnahmsweise" erlauben, schließlich vertrauen wir allen dem ipernity-Team ;-)
Das ist eine Stufe sicherer, schliesst aber Angriffe auf ipernity nicht aus, gleich auf vielen Hosts eigenen Code auszuführen (welch eine Verlockung!) ...

Daher würde ich mich an das halten was man wirklich will, nämlich die Daten! Und da stehen genügend andere Formate (RSS, Atom, JSON, etc.) bereit ...
Posted 8 months ago. ( permalink / translate )
Nils Pickert pro replies:
Stimmt. allow_url_include ist nicht der saubere weg. Aber als erst mal schauen wie es geht Lösung riskier ich mal Code von IP... :-)

Langfristig werd ich wohl mal schauen, ob ich da ein Doku-Wiki plugin basteln kann, dass das ganze elegant erledigt. Ipernity bietet ja auch die Daten als PHP-Serialised Array an, aber da habe ich noch nicht ganz kapiert, wie das geht. Das hört sich aber sicherer an.

--
Seen in a user home page (?)
Posted 8 months ago. ( permalink / translate )
beatmaster pro replies:
Also um einen Feed zu lesen, könntest Du ganz einfach Pear:XML_RSS, Zend_Feed oder ähnliches verwenden.
(Ich weiss ja nicht, warum Du Dich vor XML so scheust, das ist eigentlich recht einfach, zumindest mit den passenden Tools ;-) )

Wenn Du Serialisierte Daten verarbeiten willst, genügt ein
if ($serialized_data = file_get_contents('URL')) {
$var = unserialize($serialized_data);
}

Dann ist in $var genau das selbe Array, wie Du es schon hattest ;-)
Allerdings gehört zur Verarbeitung von serialisierten Daten auch wieder eine gehörige Portion Vertrauen ...
(serialisierte Daten sind eigentlich etwas, das "anwendungsintern" Verwendung findet, z.B. bei Sessions, Caches und so weiter ...)
Ein Beispiel:

$var ='ein Text';
echo serialize($var);

ergibt folgende Ausgabe: s:8:"ein Text";
d.h. bei serialisierten Daten wird typ:länge:inhalt (oder i:25 -> Integer, Wert gleich 25) formatiert, verschiedene Variablen werden mit Strichpunkt getrennt.
(andere Datentypen oder zusammengesetzte wie Arrays oder Objekte kannst Du selbst einmal ausprobieren)

was aber, wenn z.B. s:5000000000:"ein beliebiger Text" deserialisiert werden soll?
Soll PHP dann 5GB RAM für diese komische Variable beanspruchen?
Eigentlich sollte PHP bei Erreichen des voreingestellten Speicherlimits abbrechen, es gab aber auch schon fehlerbehaftete Versionen, die den Prozess oder den ganzen Rechner zum Absturz gebracht haben ...

Solltest Du diese tatsächlich einfache Variante mit den serialisierten Daten machen, sichere Deinen Server am besten mit suhosin ab!
Posted 8 months ago. ( permalink / translate )
Nils Pickert pro replies:
Scheuen ist das falsche Wort :-) Ich bin nur faul...

DokuWiki verwendet schon irgendwelche RSS-Reader, die wollte ich mir dann mal anschauen. Man kann auch einfach einen Feed einbinden, aber die Darstellung ist nicht so, wie ich es gerne möchte, und Bilder zeigt es überhaupt nicht an. Was ich machen wollte, ist den rss-reader von DokuWiki dahingehend aufbohren, das aus dem Ipernity RSS-Feed die Bilder herausgegriffen werden und je nach Einstellung die Thumbnails oder das letzte Bild (oder was auch immer) angezeigt wird. Aber da muss ich mich am Wochenende erst mal in DokuWiki hereinvertiefen, was vorgestern abend einfach zu spät war (hatte diese Woche eine Schulung, die recht anstrengend war).

Aber danke für die Tipps, das suhoshin werde ich mir auf jeden Fall anschauen, PHP absichern ist immer eine gute Idee.

--
Seen in a user home page (?)
Posted 8 months ago. ( permalink / translate )

Add your comment

Reply to this comment

Edit your comment

Please sign in to post a comment Sign in now?


rss Latest comments – Subscribe to the feed of this post comments.