<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1258719983409262659</id><updated>2011-11-27T15:52:42.088-08:00</updated><category term='PHP'/><title type='text'>frulk42 - PHP and the REST</title><subtitle type='html'>debug_backtrace()</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://frulk42.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://frulk42.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>frulk42</name><uri>http://www.blogger.com/profile/11578360752663005050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1258719983409262659.post-7040284495763919071</id><published>2009-10-30T05:53:00.000-07:00</published><updated>2009-10-30T06:16:01.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>i am official pimped now</title><content type='html'>There was long time no posting from me and that had a reason: I had to learn the whole PHP5 language by rote.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I am now able to tell you &lt;span style="font-weight: bold;"&gt;every&lt;/span&gt; PHP5 function available with all its parameters and the order of them.&lt;/li&gt;&lt;li&gt;I am now able to tell you &lt;span style="font-weight: bold;"&gt;all&lt;/span&gt; available build in classes and all of its methods as well as the parameters used to call this methods.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I am now able to tell you &lt;span style="font-weight: bold;"&gt;all&lt;/span&gt; class names, methods, variables and constants for each class which is build into PHP5 core or any official available PHP5 extension.&lt;/li&gt;&lt;li&gt;I am now able to tell you &lt;span style="font-weight: bold;"&gt;each &lt;/span&gt;macro used in the PHP5-C-Sourcecode together with the file where it was used and the line number.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;You may ask why i did this?&lt;br /&gt;I successfully passed the Zend Certified Engineer PHP5 Exam today.&lt;br /&gt;Luckly i was prepared :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1258719983409262659-7040284495763919071?l=frulk42.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frulk42.blogspot.com/feeds/7040284495763919071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frulk42.blogspot.com/2009/10/i-am-official-pimped-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/7040284495763919071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/7040284495763919071'/><link rel='alternate' type='text/html' href='http://frulk42.blogspot.com/2009/10/i-am-official-pimped-now.html' title='i am official pimped now'/><author><name>frulk42</name><uri>http://www.blogger.com/profile/11578360752663005050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1258719983409262659.post-8226625094450420976</id><published>2009-08-13T00:27:00.000-07:00</published><updated>2009-08-13T01:08:49.261-07:00</updated><title type='text'>Dr. Karl-Theodor zu Guttenberg: Betreff: Ihre E-Mail vom 09. Mai. 2009</title><content type='html'>&lt;p class="Text" style="text-align: justify; line-height: 150%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style="font-style: italic;"&gt;Dr. Karl-Theodor zu Guttenberg hat mir heute geschrieben. Natürlich höchstpersönlich, deswegen hat es wohl auch etwas gedauert ;)  Aber zum Wahlkampf kann man ruhig mal bis 22:00 Uhr arbeiten. Wobei vermutlich nur der Mailserver lange gearbeitet hat um diese Standardmail an alle Leute zu verteilen die sich einst bei Ihm beschwert haben. U.A wegen seiner Stellungnahme in der Tagesschau vom 08.05.2009&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Text" style="text-align: justify; line-height: 150%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:monospace;"&gt;Sehr geehrter Herr Frulk42,&lt;br /&gt;&lt;br /&gt;vielen Dank für Ihre E-Mail vom 09. Mai 2009. Darin äußern Sie Bedenken gegen das Vorhaben der Bundesregierung, den Zugang zu kinderpornographischen Inhalten zu erschweren. Ich entschuldige mich vorweg für die unerhört späte Rückmeldung.&lt;br /&gt;&lt;br /&gt;Zunächst möchte ich Ihnen versichern, dass ich die Diskussion um das Gesetz zur Bekämpfung der Kinderpornographie im Internet mit der gebotenen Sorgfalt und Sensibilität behandele. Dies ist bei diesem Thema allerdings nicht immer der Fall. Denn ich erlebe immer wieder, dass bei der Diskussion berechtigte Anliegen und ungerechtfertigte Ängste fälschlich miteinander verwoben werden. Bitte gestatten Sie mir hierzu daher einige Ausführungen:&lt;br /&gt;&lt;br /&gt;Sicher stimmen wir darin überein, dass Kinderpornographie ein abscheuliches Verbrechen ist. Mit dem Gesetzentwurf der Bundesregierung, der sich ausschließlich auf Maßnahmen gegen Kinderpornographie im Internet bezieht, ist es aus meiner Sicht nur schwer nachzuvollziehen, wenn darüber eine Zensurdebatte geführt wird. Die Verhinderung des Zugangs zu kinderpornographischen Inhalten, deren Beschaffung von unserem Strafrecht als schweres Unrecht geahndet wird, kann nicht als ein Eingriff in die Informations- und Kommunikationsfreiheit angesehen werden.&lt;br /&gt;&lt;br /&gt;Die Kommunikations-  und Informationsfreiheit, der Datenschutz und das Fernmeldegeheimnis haben in der Informationsgesellschaft zu Recht eine herausragende Bedeutung. Deshalb haben wir einen Regelungsrahmen, der dem Schutzbedürfnis der Bürger in Hinblick auf ihre personenbezogenen Daten Rechnung trägt. Die Vornahme von Netzsperren gegen Kinderpornographie ändert daran nichts. Insbesondere dürfen die Daten nur für die Verhinderung des Zugangs zur Kinderpornographie und zur Umleitung auf die Stopp-Seite verwendet werden. Wenn das erfolgt ist, müssen sie unverzüglich gelöscht werden. Die Dienstanbieter müssen dies durch organisatorische und technische Vorkehrungen sicherstellen.&lt;br /&gt;&lt;br /&gt;Natürlich müssen die Strafverfolgungsbehörden ihre gesetzlichen Befugnisse und Pflichten im Rahmen ihrer Ermittlungstätigkeit wahrnehmen. Die Rechtsgrundlagen hierfür finden sich in der Strafprozessordnung (StPO) und werden vom Gesetz zu Bekämpfung der Kinderpornographie nicht berührt.&lt;br /&gt;&lt;br /&gt;Ich glaube, wir sind uns einig, dass es erforderlich ist, dass gegen die Straftäter unmittelbar vorgegangen wird. Zusätzlich müssen auch Maßnahmen gegen Anbieter von Plattformen ergriffen werden können, wenn sich in ihrem Angebot kinderpornographische Inhalte befinden.&lt;br /&gt;&lt;br /&gt;Dies gilt insbesondere für Angebote aus Drittstaaten außerhalb der EU. Hier ist das Sperren des Zugangs häufig die einzige Möglichkeit, die Verbreitung von Kinderpornographie zu erschweren.&lt;br /&gt;&lt;br /&gt;Meines Erachtens stellt diese Maßnahme ein wichtiges zusätzliches Instrument im Kampf gegen Kinderpornographie dar. Wir gehen davon aus, dass wir künftig eine Vielzahl von beabsichtigten oder unbeabsichtigten Zugriffen auf kinderpornographische Inhalte blockieren können.&lt;br /&gt;&lt;br /&gt;In Deutschland ist mit der Umsetzung des „Aktionsplans der Bundesregierung zum Schutz von Kindern und Jugendlichen vor sexueller Gewalt und Ausbeutung“ bereits viel verändert und erreicht worden, dennoch bedarf es in manchen Bereichen noch flankierender Maßnahmen. Deshalb ist das Gesetz zur Bekämpfung der Kinderpornographie in Kommunikationsnetzen auf den Weg gebracht worden.&lt;br /&gt;&lt;br /&gt;Die Bundesregierung hat darüber in den letzten Monaten intensive Gespräche und Verhandlungen mit der betroffenen Wirtschaft geführt. Dabei sind zwei Dinge deutlich geworden: Erstens sind die Access-Provider dazu bereit, den Zugang zu kinderpornographischen Inhalten zu erschweren und so die Beschaffungskriminalität einzudämmen. Fünf große Unternehmen haben sich auf vertraglicher Basis dazu verpflichtet. Und zweitens brauchen wir eine gesetzliche Regelung. Lassen Sie mich deren wichtigste Punkte hervorheben:&lt;br /&gt;&lt;br /&gt;1.  Durch die Sperrung der kinderpornographischen Seiten im Internet wird der Kampf gegen dieses Verbrechen um präventive Maßnahmen ergänzt. Zufällige Besuche auf diesen Seiten werden durch eine Stopp-Seite verhindert. Die Sperrung solcher Seiten ist eine zusätzliche und ergänzende Maßnahme, wenn ein wirksameres Vorgehen direkt bei ausländischen Angeboten nicht möglich ist. Die Stoppseite ist ein wichtiger Baustein einer Gesamtstrategie gegen den sexuellen Missbrauch von Kindern und seiner Darstellung im Internet.&lt;br /&gt;&lt;br /&gt;2.  Nutzer, die z.B. durch Links in Spam-Mails auf diese Stopp-Seite gelangen, müssen nicht mit Strafverfolgung rechnen. Die Daten, die an der Stopp-Seite anfallen, dürfen für die Strafverfolgung nicht genutzt werden. Damit ist ein anderslautender Entwurf des SPD-geführten Justizministeriums vom Tisch. Für uns ist klar, dass Hersteller und Konsumenten von Kinderpornographie mit aller Härte des Gesetzes verfolgt werden. Genauso klar ist aber auch, dass wir harmlose Nutzer nicht durch – letztlich unbegründete – staatliche Verfolgungsmaßnahmen stigmatisieren und ihre bürgerliche Existenz vernichten dürfen.&lt;br /&gt;&lt;br /&gt;3.  Der Vorschlag von Bundesministerin. von der Leyen, ein Expertengremium einzurichten wurde realisiert: Der Datenschutzbeauftragte benennt fünf Mitglieder, die berechtigt sind, jederzeit die Sperrliste beim Bundeskriminalamt einzusehen und zu überprüfen.&lt;br /&gt;&lt;br /&gt;4.  Löschen geht vor Sperren: Wir bekämpfen das Übel an der Wurzel und werden nur dann sperren, wenn wir gegen die Inhalte nicht oder nicht zeitnah vorgehen können.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;5.  Wir haben klargestellt, dass Sperrmaßnahmen auf kinderpornographische Internet-Seiten beschränkt bleiben. &lt;span style="color: rgb(102, 102, 102); font-style: italic;"&gt;(Das stimmt ja schon nicht mehr laut Wahlprogramm)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6.  Nach zwei Jahren wird eine Evaluierung durch die Bundesregierung stattfinden. Ein Jahr später wird das Gesetz auf Grund der gewonnenen Erfahrungen optimiert werden. Das ist moderne Gesetzgebung, wenn man mit einer zukunftsfähigen Regelung Neuland betritt.&lt;br /&gt;&lt;br /&gt;Besonders wichtig ist mir dabei, klar zu stellen, dass es sich bei der genannten Sperrliste und bei der Verpflichtung der Internet Provider, die auf dieser Liste enthaltenen Internet-Seiten zu sperren, eben nicht um eine Zensur des Internets handelt, sondern um die Verhinderung von Straftaten gem. § 184b des Strafgesetzbuches.&lt;br /&gt;&lt;br /&gt;Das Gesetz alleine ist kein Allheilmittel. Aber es ist ein weiterer Baustein in der Gesamtstrategie und meines Erachtens wichtig und dringend geboten zur Erschwerung der Verbreitung von Kinderpornographie.&lt;br /&gt;&lt;br /&gt;Noch ein Wort zur weiteren Implikation des Gesetzes. Das Gesetz zur Bekämpfung der Kinderpornographie ist nach Auffassung der Bundesregierung gegenüber der EU-Kommission nicht notifizierungsflichtig.&lt;br /&gt;&lt;br /&gt;Eine Anfrage der EU-Kommission im laufenden Gesetzgebungsverfahren ließ allerdings vermuten, dass die Kommission eine andere Rechtsaufassung vertreten könnte.&lt;br /&gt;&lt;br /&gt;Zur Vermeidung von Verzögerung hat sich dann die Bundesregierung entschlossen, den Gesetzesentwurf vorsorglich zu notifizieren. Dies geschah zügig nachdem der endgültige Entwurfstext feststand. Zugleich haben wir auf unsere Rechtsposition hingewiesen.&lt;br /&gt;&lt;br /&gt;Die Stillhaltefrist endet am 08. Oktober 2009. Die Bundesregierung wird deshalb das weitere Gesetzgebungsverfahren erst nach Ablauf dieser Frist veranlassen.&lt;br /&gt;&lt;br /&gt;Für die Umsetzung der Maßnahmen hat dies keine Verzögerung zur Folge, da sich die wesentlichen Anbieter bereits vertraglich gegenüber dem Bundeskriminalamt verpflichtet haben.&lt;br /&gt;&lt;br /&gt;Im Übrigen unterfällt das Gesetzgebungsvorhaben aufgrund der durch die Notifizierung eintretende zeitlichen Verzögerung nicht der Diskontinuität.&lt;br /&gt;&lt;br /&gt;In der Hoffnung, dass ich Ihnen meine Sicht der Dinge ein wenig verständlicher machen konnte, verbleibe ich&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mit freundlichen Grüßen nach Bayern&lt;br /&gt;Dr. Karl-Theodor zu Guttenberg&lt;br /&gt;&lt;br /&gt;Büro Dr. Karl-Theodor zu Guttenberg, MdB&lt;br /&gt;Tel. + 49 /30 / 227 732 90&lt;br /&gt;Fax + 49 / 30 / 227 760 90&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1258719983409262659-8226625094450420976?l=frulk42.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frulk42.blogspot.com/feeds/8226625094450420976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frulk42.blogspot.com/2009/08/betreff-ihre-e-mail-vom-09-mai-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/8226625094450420976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/8226625094450420976'/><link rel='alternate' type='text/html' href='http://frulk42.blogspot.com/2009/08/betreff-ihre-e-mail-vom-09-mai-2009.html' title='Dr. Karl-Theodor zu Guttenberg: Betreff: Ihre E-Mail vom 09. Mai. 2009'/><author><name>frulk42</name><uri>http://www.blogger.com/profile/11578360752663005050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1258719983409262659.post-7515465470268499551</id><published>2009-06-10T14:10:00.000-07:00</published><updated>2009-06-10T15:52:04.320-07:00</updated><title type='text'>Segmentation Fault at Joeys / Scrum at Toni Maccaron</title><content type='html'>Last weekend i went out of cigarettes sometime late evening.&lt;br /&gt;&lt;br /&gt;Since i had no small coins to get cigarettes from an automat and cause i 'm living in a very small village called Würzburg which has no gas stadion nearby i decided to&lt;br /&gt;order some pizza.&lt;br /&gt;&lt;br /&gt;Thoose delivery services normaly do deliver cigarettes and drinks too and thus i was very happy about my smart idea :)&lt;br /&gt;&lt;br /&gt;So i called the first delivery service named "Joeys Pizza"&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sQjtIobxNiU/SjAlGbxkQBI/AAAAAAAAAA4/pslJ1WN9Jvc/s1600-h/joeys.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 84px; height: 84px;" src="http://4.bp.blogspot.com/_sQjtIobxNiU/SjAlGbxkQBI/AAAAAAAAAA4/pslJ1WN9Jvc/s320/joeys.gif" alt="" id="BLOGGER_PHOTO_ID_5345813550153875474" border="0" /&gt;&lt;/a&gt;. This is a service where i already ordered a few times and was always satisfied. But i ordered only food so far.&lt;br /&gt;If you feel like visiting &lt;a href="http://www.joeys.de/"&gt;their website&lt;/a&gt; you should siwtch your sound on.&lt;br /&gt;Nobody wants to miss nice western sounds when he likes to order pizza!&lt;br /&gt;&lt;br /&gt;So i called and made my food  order totaly worth around 30,-€.&lt;br /&gt;After i was done with telling them what i want to eat i told the nice lady at the other end of the phone that i please also want one packet of cigarettes.&lt;br /&gt;&lt;br /&gt;Unfortunatly She replied that she is sorry but they can not deliver cigarettes.&lt;br /&gt;"Why not", was my question.&lt;br /&gt;Her reply: "Wo do not have an automat in our shop thus we can not deliver cigarettes!"&lt;br /&gt;"WTF???"&lt;br /&gt;&lt;br /&gt;Back in time when i was young and had to deliver pizza to finance my car my boss would have dismissed me when i would have sayed to a customer that we can not deliver cigarettes.&lt;br /&gt;&lt;br /&gt;We as delivery boys had to get cigarettes from a gas stadion or somewhere else if a customer ordered it. I myself forgot the cigarettes for a customer once and my boss ordered me to drive half an hour back to bring thoose guy his cigarettes.&lt;br /&gt;&lt;br /&gt;Anyhow i told the young lady that if they do not deliver cigarettes i cancel my order cause this was the main reason for my order.&lt;br /&gt;And so i did.&lt;br /&gt;I waited 5 Minuits but there was no callback from that company boss or someone else who cares about customers and so i went on to the next delivery service after deciding never to order there again.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sQjtIobxNiU/SjAp9SWDsxI/AAAAAAAAABQ/9klf3U8yAF8/s1600-h/Toni+Maccaroni.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 84px; height: 84px;" src="http://3.bp.blogspot.com/_sQjtIobxNiU/SjAp9SWDsxI/AAAAAAAAABQ/9klf3U8yAF8/s320/Toni+Maccaroni.gif" alt="" id="BLOGGER_PHOTO_ID_5345818890561893138" border="0" /&gt;&lt;/a&gt;There is one other very famous service in my village called Toni Maccaroni which i heared a lot of since he should have good food. So i decided to order my food and cigarettes there. I called the order hotline and my first question to the lady at the other end of the phone was. "Do you deliver cigarettes?"&lt;br /&gt;She replied as expected "Yes of course we do!" So i ordered my food there. Again worth around 30,-€. and after i was finished with my food order i remind her about my cigarettes again, just to make sure.&lt;br /&gt;After i hung up the phone i was kidding to my GF: "They will forget the cigarettes!"&lt;br /&gt;And what happened?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Of course they forgot the cigarettes!!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Normaly i would told the driver to take all that nonsense food back with him cause the most important order was missing but meanwhile i got hungry and thus we decided to keep the pizza.&lt;br /&gt;&lt;br /&gt;Anyhow i decided to call that company and tell them that i am upset cause this was the main reason for my order and what happened?&lt;br /&gt;&lt;br /&gt;The telephone lady told me that they are very busy cause they have to many customers and that they can not think about everything.&lt;br /&gt;&lt;br /&gt;And that, quote: "&lt;span style="font-style: italic;"&gt;Cigarettes are not as important as the food delivery&lt;/span&gt;"...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sounds like the Toni Maccaroni  pizza team just had a scrum workshop!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I told her (getting angry) that i just ordered food to get cigarettes as well.&lt;br /&gt;&lt;br /&gt;And she told me... let me quote that again... "&lt;span style="font-style: italic;"&gt;If you like cigarettes go to a gas stadion but do not order pizza, we are no gas stadion.&lt;/span&gt;" And then she hung up the phone.&lt;br /&gt;&lt;br /&gt;Wow! Scrummed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1258719983409262659-7515465470268499551?l=frulk42.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frulk42.blogspot.com/feeds/7515465470268499551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frulk42.blogspot.com/2009/06/segmentation-fault-at-joeys-scrum-at.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/7515465470268499551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/7515465470268499551'/><link rel='alternate' type='text/html' href='http://frulk42.blogspot.com/2009/06/segmentation-fault-at-joeys-scrum-at.html' title='Segmentation Fault at Joeys / Scrum at Toni Maccaron'/><author><name>frulk42</name><uri>http://www.blogger.com/profile/11578360752663005050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sQjtIobxNiU/SjAlGbxkQBI/AAAAAAAAAA4/pslJ1WN9Jvc/s72-c/joeys.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1258719983409262659.post-5509085921887621061</id><published>2009-06-06T12:42:00.000-07:00</published><updated>2009-06-07T09:20:32.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>PHP Header Location and the dead horse</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;"The dead horse is not biting anymore it is throwing http location headers"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;The breath of the dead horse is a security problem in PHP due to missing http protocol knowledge of the majority of PHP developers.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Let me show you why...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;This is common PHP code you will find similar in nearly 90% of all PHP applications. Even a lot of new enterpise PHP software shows this kind of source code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Lets say we have a website located at "&lt;span style="font-style: italic;"&gt;http://security.local"&lt;/span&gt;&lt;br /&gt;and a file called&lt;span style="font-style: italic;"&gt; "header.php"&lt;/span&gt; with the following content:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sQjtIobxNiU/SirZYiv4jCI/AAAAAAAAAAM/yZVbvyCAU8w/s1600-h/header1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 108px;" src="http://3.bp.blogspot.com/_sQjtIobxNiU/SirZYiv4jCI/AAAAAAAAAAM/yZVbvyCAU8w/s320/header1.png" alt="" id="BLOGGER_PHOTO_ID_5344322923496246306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;So what is the problem in here?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Nothing if you point your common browser to  the URL ( &lt;/span&gt;&lt;span style="font-size:85%;"&gt;"&lt;span style="font-style: italic;"&gt;http://security.local/header.php") &lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;The PHP script will match at the first condition and is sending an &lt;span style="font-style: italic;"&gt;http header&lt;/span&gt; with status&lt;span style="font-style: italic;"&gt; 302&lt;/span&gt; to your browser.&lt;br /&gt;HTTP/1.x 302 means &lt;span style="font-style: italic;"&gt;"Moved Temporarily"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Thus your browser will redirect you to &lt;span style="font-style: italic;"&gt;"http://security.local/index.php" &lt;/span&gt;as the php sourcecode above clearly shows.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;So we can keep this fact:&lt;br /&gt;All common browsers will interpret the 302 moved header and load the new url of the moved object automatically. Thus the user will not see everything else behind the header location redirect.&lt;br /&gt;&lt;br /&gt;But what if someone is able to make his browser ignore or skip header redirects? What happens then? How to ignore http redirect headers sent by php &lt;span style="font-style: italic;"&gt;"header(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;location:') " &lt;/span&gt;for example?&lt;br /&gt;&lt;br /&gt;Well see yourself. I am calling the same url from above example again but this time with &lt;span style="font-style: italic;"&gt;"curl&lt;/span&gt;&lt;span&gt;" which by default ignores http redirects&lt;/span&gt;&lt;span style="font-style: italic;"&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sQjtIobxNiU/SirgRqSC71I/AAAAAAAAAAU/5a7WaYX5Xxw/s1600-h/header2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 43px;" src="http://1.bp.blogspot.com/_sQjtIobxNiU/SirgRqSC71I/AAAAAAAAAAU/5a7WaYX5Xxw/s320/header2.png" alt="" id="BLOGGER_PHOTO_ID_5344330501840891730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see the PHP script is still executed even after the "redirect".  A header redirect does not stop the PHP Script it just tells the client browser how he "should" react now!&lt;br /&gt;Even if your Browser redirects you after you received this header and thus you cant see &lt;span style="font-style: italic;"&gt;ADMIN PANEL&lt;/span&gt; from the example above .... the PHP Script will still be executed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lesson learned:&lt;/span&gt;&lt;br /&gt;Always do an &lt;span style="font-style: italic;"&gt;"exit()&lt;/span&gt;" or &lt;span style="font-style: italic;"&gt;"die()&lt;/span&gt;" after PHP header redirects to make sure the user does not see or use something he is not allowed to do nor the script continues running in backrgound!&lt;br /&gt;&lt;br /&gt;Oh and about the dead horse... It is realy nearly dead now!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1258719983409262659-5509085921887621061?l=frulk42.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frulk42.blogspot.com/feeds/5509085921887621061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frulk42.blogspot.com/2009/06/header.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/5509085921887621061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/5509085921887621061'/><link rel='alternate' type='text/html' href='http://frulk42.blogspot.com/2009/06/header.html' title='PHP Header Location and the dead horse'/><author><name>frulk42</name><uri>http://www.blogger.com/profile/11578360752663005050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sQjtIobxNiU/SirZYiv4jCI/AAAAAAAAAAM/yZVbvyCAU8w/s72-c/header1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1258719983409262659.post-4610472548489818866</id><published>2009-06-06T12:40:00.000-07:00</published><updated>2009-06-06T15:56:35.078-07:00</updated><title type='text'>Blog started.</title><content type='html'>Well, since im working as a web developer i should have a blog too. Yes i know am around 4 years to late but anyhow here it is :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1258719983409262659-4610472548489818866?l=frulk42.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://frulk42.blogspot.com/feeds/4610472548489818866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://frulk42.blogspot.com/2009/06/blog-started.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/4610472548489818866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1258719983409262659/posts/default/4610472548489818866'/><link rel='alternate' type='text/html' href='http://frulk42.blogspot.com/2009/06/blog-started.html' title='Blog started.'/><author><name>frulk42</name><uri>http://www.blogger.com/profile/11578360752663005050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
