Verwendung von $_SERVER (was: Validator kaputt?)

2 views
Skip to first unread message

Sebastian Suchanek

unread,
May 16, 2021, 12:11:40 PMMay 16
to
Am 16.05.2021 um 16:56 schrieb Andreas Kohlbach:
> On Sun, 16 May 2021 10:34:14 +0200, Sebastian Suchanek wrote:
>>
>> Am 16.05.2021 um 09:45 schrieb Andreas Kohlbach:
>>
>>> [Link für W3C-Validator]
>>> Für
>>> <?php
>>> echo "http://validator.w3.org/check?uri=" . $_SERVER['HTTP_REFERER'];
>>> ?>
>>> habe ich eine oder zwei Minuten gebraucht. Vielleicht nicht "schön",
>>> aber
>>> kostenlos.
>>
>> ...und vor allem fchals.
>>
>> Wenn, dann eher etwas wie:
>>
>> <?php
>> echo
>> 'http://validator.w3.org/check?uri=http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
>> ?>
>>
>> (Ungetestet!)
>
> Auf meinem Server (lighttp) geben Deine und meine Zeile Identisches aus.

Ich nehme an, Du hast Deinen Testcase im Browser direkt aufgerufen?

> Wenn meine falsch wäre, hätte der Server sich beschweren sollen. Apache
> oder so habe ich zum Testen nicht zur Verfügung.

RTFM[1]:

| [...]
| 'HTTP_REFERER'
| The address of the page (if any) which referred the user agent to
| the current page. This is set by the user agent. Not all user
| agents will set this, and some provide the ability to modify
| HTTP_REFERER as a feature. In short, it cannot really be trusted.
| [...]

IOW: Deine Zeile schickt baut nicht die URL von Alex' Seite in den
Validator-Link ein, sondern den Referer, von dem aus der Bersucher auf
Alex' Seite gekommen ist. Das kann eine andere Seite von Alex sein, das
kann Google sein...
Und warum die Verwendung von $_SERVER['HTTP_REFERER'] an sich keine gute
Idee ist, ist auch angedeutet.


Tschüs,

Sebastian

PS: XP & f'up2 de.comp.lang.php

_____
[1] https://www.php.net/manual/en/reserved.variables.server.php

Andreas Kohlbach

unread,
May 16, 2021, 3:10:42 PMMay 16
to
On Sun, 16 May 2021 18:07:45 +0200, Sebastian Suchanek wrote:
>
> Am 16.05.2021 um 16:56 schrieb Andreas Kohlbach:
>> On Sun, 16 May 2021 10:34:14 +0200, Sebastian Suchanek wrote:
>>>
>>> Am 16.05.2021 um 09:45 schrieb Andreas Kohlbach:
>>>
>>>> [Link für W3C-Validator]
>>>> Für
>>>> <?php
>>>> echo "http://validator.w3.org/check?uri=" . $_SERVER['HTTP_REFERER'];
>>>> ?>
>>>> habe ich eine oder zwei Minuten gebraucht. Vielleicht nicht "schön",
>>>> aber
>>>> kostenlos.
>>>
>>> ...und vor allem fchals.
>>>
>>> Wenn, dann eher etwas wie:
>>>
>>> <?php
>>> echo
>>> 'http://validator.w3.org/check?uri=http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
>>> ?>
>>>
>>> (Ungetestet!)
>> Auf meinem Server (lighttp) geben Deine und meine Zeile Identisches
>> aus.
>
> Ich nehme an, Du hast Deinen Testcase im Browser direkt aufgerufen?

Ja, wenn auch nur in einem Text-Browser.

Eben sehe ich erst, dass erst bei einem Reload identisch Ausgaben
erfolgen. Ich hatte also Unrecht, dass die Ausgabe (beim ersten Aufruf)
identisch ist. Hier mal die Datei. Erst meine falschen Zeilen, nach dem
<br> Deine Richtige:

<?php
echo "http://validator.w3.org/check?uri=" . $_SERVER['HTTP_REFERER'];
?>
<br>
Zu sehen auf <http://23.233.245.78/referertesting.php> für 48 Stunden.

>> Wenn meine falsch wäre, hätte der Server sich beschweren sollen. Apache
>> oder so habe ich zum Testen nicht zur Verfügung.
>
> RTFM[1]:
>
> | [...]
> | 'HTTP_REFERER'
> | The address of the page (if any) which referred the user agent to
> | the current page. This is set by the user agent. Not all user
> | agents will set this, and some provide the ability to modify
> | HTTP_REFERER as a feature. In short, it cannot really be trusted.
> | [...]
>
> IOW: Deine Zeile schickt baut nicht die URL von Alex' Seite in den
> Validator-Link ein, sondern den Referer, von dem aus der Bersucher auf
> Alex' Seite gekommen ist. Das kann eine andere Seite von Alex sein,
> das kann Google sein...
> Und warum die Verwendung von $_SERVER['HTTP_REFERER'] an sich keine
> gute Idee ist, ist auch angedeutet.

Hast Recht; habe zu kurz gedacht, und nur nach "Referer" gegoogelt.

> PS: XP & f'up2 de.comp.lang.php

Okay, wenn ich aber nur unregelmäßig rein schaue. Bin kein
PHP-Programmierer, bzw. habe nur an der Oberfläche gekratzt.
--
Andreas

PGP fingerprint 952B0A9F12C2FD6C9F7E68DAA9C2EA89D1A370E0
Reply all
Reply to author
Forward
0 new messages