Hallo,
Hi!
$_SERVER['PHP_SELF'] ist aller Voraussicht nach ASCII-codiert aber dennoch keine fertige Lösung.
Nein, warum sollte es ausgerechnet für den URL-Kontext vorbereitet sein?
Du irrst, weil $_SERVER['PHP_SELF'] Der Dateiname des aktuell ausgeführten Skripts, relativ zum Document Root ist. Nehmen wir hierzu ein praktisches Beispiel: Wir haben einen Webserver lighttpd für den die Konfiguration gilt
var.docroot ="/var/www/"
server.chroot =docroot
server.document-root=docroot + server.name
PHP läuft als Fast-CGI. Alle Dateinamen, die PHP zu verarbeiten hat, setzen sich also zusammen aus docroot + server.name + "%{URI}", wobei %{URI} der vom HTTP-client aufgerufene Universal Resource Identifier ist. Laut Definition des PHP Manuals ist aber $_SERVER['PHP_SELF']
"Der Dateiname des aktuell ausgeführten Skripts, relativ zum Document Root" (im Beispiel %{URI}). (Punkt)
So und nun begründe mir bitte, warum Du anderer Auffassung bist. Für mich ist nicht ersichtlich, warum ein vom client angelieferte, zwingend URL-konforme Zeichenkette nicht dem URL-Kontext angehören soll!
Dann müsste man es erst umständlich dekodieren, um es normal oder für andere Kontexte zu verwenden. (Es reicht schon, sie mit Magic Quotes rumärgern zu müssen.)
Seltsam finde ich jedoch, dass Du statt konstruktiv zu verbessern, also dem jeweiligen OP (hier wie in Deinem herangezogenem Beispiel) eine bessere oder vollständigere Lösung zu präsentieren, heute zweitmalig nur an mir herumkrittelst.
ich kritisiere auch andere, wenn ich meine, dass sie etwas nicht richtiges oder unvollständiges zum Besten geben
Offensichtlich schätzt Du die tatsächliche 'Komplexität' Deinem "umständlich dekodieren" nachstehend völlig falsch ein. Muss also ein String, der als Querystring im HTML-dokument notiert wird, Deiner Meinung nach prinzipiell codiert werden, zeigt mir volgendes Beispiel etwas anderes:
<?php if($_SERVER['QUERY_STRING']!='') {exit($_SERVER['QUERY_STRING']);} ?>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head><title>test</title></head>
<body>
<p><a href="http://localhost/s.php?var=http://c2.ac-images.myspacecdn.com/ ä_ö_Ü">test</a></p>
</body>
</html>
Ausgabe per Link von Mozilla und Opera: var=http://c2.ac-images.myspacecdn.com/%20%E4_%F6_%DC
Ausgabe per Link vom IE (hier 6.0): var=http://c2.ac-images.myspacecdn.com/%20ä_ö_Ü
Auch die hard core version (<a href="http://192.168.1.34/test/s.php?var=Геннадий ЗЮГАНОВ: «Необходимо раскрыть глаза тем, кто заблуждается»">test</a>
) Bedarf ebenso wenig einer Kodierung.
Für die client-Seite muss meiner Auffassung der Beispiel nach überhaupt nicht kodiert werden. Das können die von ganz alleine. Es muss nur auf Server-Seite decodiert werden. (Daran krankt es u. a. auch bei Web.de. Aber man will ja nicht auf Eingaben hören.)
Seltsam finde ich jedoch, dass Du statt konstruktiv zu verbessern, also dem jeweiligen OP (hier wie in Deinem herangezogenem Beispiel) eine bessere oder vollständigere Lösung zu präsentieren,
Der Link zur Vorabversion meines Kontextwechsel-Artikels zeigt auf eine Lösung für das Problem.
Dann hast Du sicher Beispiele genug, die das oben stehende wiederlegen. Ich habe mir Deinen Artikel nicht angesehen.
heute zweitmalig nur an mir herumkrittelst.
Das beobachtest du falsch, ich kritisiere auch andere, wenn ich meine, dass sie etwas nicht richtiges oder unvollständiges zum Besten geben, und habe das heute auch schon gemacht. Ich kann nur nichts dafür, dass du etwas allergisch auf Kritik reagierst. Nicht nur auf meine.
Wenn sie denn berechtigt ist, nehme ich sie an. Derzeit bist Du ohne Argumente (wohl gemerkt hier im thread; ich werde mir den Artikel jetzt ja reinziehen müssen) auf Konfrontationskurs.
Gruß aus Berlin!
eddi
Frei nach z1626: Was wir brauchen ist eine neue Aufklärung - eine "Aufklärung 2.0" wenn man so will.
Wie sieht es bsw. mit Strafverfolgung der Bundesregierung nach § 154 StGB für jedes von Karlsruhe kassierte Gesetz aus? Wurde sie etwa nicht auf das Grundgesetz eingeschworen?