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>");
?>
Send a message
Search for members
sab pro says:
You have to wrap every parameter in "" (even the numericals!) and the alt-attribute is missing.
Nils Pickert pro replies:
Habs aber mal geändert.
--
Seen in a user home page (?)
Nils Pickert edited this comment 8 months ago.
beatmaster pro says:
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 ...
Nils Pickert pro replies:
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 (?)
beatmaster pro replies:
(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!
Nils Pickert pro replies:
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 (?)