dedlfix: übergebenes Array in Link verpacken

Beitrag lesen

echo $begrüßung;

Ich würde dir dazu raten Sessions zu verwenden. Ansonsten musst du mit foreach über das Array iterieren und jedes Element einzeln mit "tierdetail[]=" kombinieren, dabei wird aber der URL-String schnell lang und unübersichtlich. Außerdem kann dann ein Besucher die Daten manipulieren, das ist häufig nicht erwünscht.

Abgesehen davon, dass die Session-Methode die vermutlich vernünftigere ist, gibt es unter PHP auch noch ein paar Möglichkeiten, ohne foreach die Daten in die URL zu bringen:

Für einfache Fälle tut es vielleicht ein implode('eindeutiges_trennzeichen', $array). Das kann man beim Empfänger wieder explodieren lassen.

Auf jeden Fall aber kann man komplexe Datentypen serialisieren und auf der anderen Seite mit unserialize() wiederherstellen.

Es ist aber in allen Fällen zu beachten, dass es sich bei einer URL um einen eigenen Kontext handelt, für den die Daten zu behandeln sind. urlencode() ist die dafür vorgesehene Funktion.

Außerdem kann es noch sein, dass die URL in einen HTML-Kontext eingebunden wird, dann wäre die URL auch noch für den HTML-Kontext zu behandeln: htmlspecialchars().

So ergibt sich am Ende:

echo '<a href="', htmlspecialchars('ziel?parameter=' . urlencode(serialize($array))), '">Linktext</a>';

Die Transport-Maskierungen für den HTML- und URL-Kontext werden vom Browser bzw. von PHP entfernt, so dass auf der Empfängerseite nur noch unserialize() auf $_GET['parameter'] angewendet werden muss, um das Array wiederherzustellen.

Obendrein kann einem noch das PHP-Feature Magic Quotes in die Quere kommen, doch das kann man deaktivieren bzw. seine Auswirkungen rückgängig machen.

echo "$verabschiedung $name";