When serialize()ing an array containing the data of the last created blogpost there was no error at first.
But if the data were fetched from the database and the script tried to unserialize() them the following error occured:
So why is this?
Lets say you have an array with 3 indizes containing 2 strings and one integer.
As you can see the single quote in the second array-element is escaped by a backslash.
If you now serialize the data you get the following string
If this string is now written to the database the backslashes disappears and the field contains the following data:
As the considerate reader might have discovered the length of the highlighted string was first 25 characters and is after inserting into the database 24 characters long.
So if PHP tries to unserialize the string it thinks it has to read 25 characters but there are only 24. This throws the above error.
So how can you circumvent this?
So the backslashes are removed before serializing the data and added afterwards to prevent database malfunctions or errors.
Bwah, derzeit arbeite ich grad am Release 2.0 von PotaBlog. Da sich einige Dinge grundlegend verändern, ist es ein weitaus größerer Aufwand, als erwartet.
Bin gerade 3 Stunden gesessen und hab nur Texte aus Templates in Variablen kopiert und diese Texte ins Englische übersetzt -_-
Da ich für ein Projekt Barcodes der Form Interleaved 2 of 5 brauche und die Schriftarten dafür erst ab 139 $ zu bekommen sind hab ich beschlossen das mit PHP und GD-Library selbst zu lösen.
Mit Hilfe von Nick Johnsons Site über Barcodes und spezifisch über I2O5 war es möglich das zu bekommen, was ich erreichen wollte:
Die Zahl 0930000153 wird umgewandelt in
Und sieht auch noch aus wie das Original, das ich nachzumachen versuchte.
Gelöst hab ich es wie folgt:
Die umzuwandelnde Zahl wird in 2 Zeichen lange Strings aufgespalten und diese in ein Array geschrieben. In einem anderen Array, dass 2 Indizes hat [0-9] und [0-4] steht jeweils drinnen ob es als ein breiter oder ein dünner Strich dargestellt werden soll - nach folgendem Schema.
Wobei n für narrow als dünn und w für wide also dick steht.
Nun wird eine Schleife gestartet die von 0 bis 4 durchläuft und dabei wird der die erste Ziffer der 2 Ziffern die vorher in ein Array geschrieben wurden als Index genommen und die Schleifenzähler-Variable für den 2 Index.
Dann wird je nach Inhalt des 2. Arrays entweder ein dünner Senkrechter Strich, ein dünner Abstand, ein dicker Strich oder ein dicker Abstand in das Bild geschrieben.
Mit der 2. Zahl wird danach ebenso fortgefahren.
Wobei im Array $digits halt noch die o.g. Daten drinnenstehn.
Hoffe alle Unklarheit ist beseitigt.
Ab PHP Version 5.2 wurde die Funktion setcookie() erweitert um das Argument [, bool $httponly ]
Nun lautet die Funktion
httponly bewirkt, dass beim Senden des Cookies an den Browser ein httpOnly; mitgesendet wird, das bei neuen Browsern verhindert, dass das Cookie von Javascript oder anderen Clientseitigen Skriptsprachen gelesen wird.
Es funktionert derzeit bei folgenden Browsern:
Microsoft Internet Explorer 6 (SP1)+ Yes
Mozilla Firefox 2.0.0.6 Yes
Netscape Navigator 9.0b3 Yes Opera 9.23 No
Opera 9.50 Yes Safari 3.0 No
Google's Chrome Beta (initial public release) Yes
(Verhindert jeweils nur das lesen)
Was macht man aber nun, wenn man eine PHP-Version vor 5.2 benutzt und sich nicht selbst eine setcookie() Funktion basteln will bzw. die Header manuell senden?
Ganz einfach: Man fügt an das die Variable $domain einfach
an.
Das sieht dann zb so aus
Der Browser erhällt dann folgenden Header
Was exakt der Ausgabe von der setcookie() Funktion in PHP ab Version 5.2 entspricht.
Ein wenig Dirty aber es funktioniert :-)