input filter op $_SERVER

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arnold C

Arnold C

19/09/2009 21:03:00
Quote Anchor link
Hallo mensen,

Ik zit nu de hele avond al te staren naar een paar regels code. Ik probeer een inlogscriptje te bouwen dat gebruik maakt van header authenticatie. Het werkt. Ik heb het uit de voorbeelden op php.net.

Nu wil ik dat de gebruiker zijn mail-adres gebruikt als username. Daarom wil ik een filter_input doen op $_SERVER['PHP_AUTH_USER']....er komt niets door.

Waar zit mn denkfout?

Als ik invoer:

$username = "[email protected]";

en dan:

$sExternalUsername = filter_input(INPUT_SERVER, 'PHP_AUTH_USER', FILTER_VALIDATE_EMAIL);

Als ik dan doe:
echo $sExternalUsername;

Is er niets doorgekomen.....wat doe ik fout?
 
PHP hulp

PHP hulp

26/04/2024 04:36:59
 
Eddy E

Eddy E

20/09/2009 08:33:00
Quote Anchor link
Wat zorgt ervoor dat PHP_AUTH_USER opeens $username wordt?
Dat met je dan wel opgeven natuurlijk.... en kijk eens wat PHP_AUTH_USER geeft?

Waarschijnlijk is dat iets als je gebruikersnaam bij je hosting oid.
 
Arnold C

Arnold C

20/09/2009 08:49:00
Quote Anchor link
Die naamgeving is tijdelijk om te controleren.

Als ik doe:
echo $_SERVER['PHP_AUTH_USER'];
output: [email protected]

Dus ik weet zeker dat er iets in die $_SERVER['PHP_AUTH_USER'] zit.

En dan:
$sExternalUsername = filter_input(INPUT_SERVER, 'PHP_AUTH_USER', FILTER_VALIDATE_EMAIL);

echo $sExternalUsername;
output: niets!

@Eddy: $_SERVER['PHP_AUTH_USER'] bevat de gebruikersnaam die ingevoerd is door de gebruiker, bij het gebruik van header authenticatie.

Om niet te bumpen: EDIT (1):
Ik lees nog eens op php.net:
FastCGI seems to cause strange side-effects with unexpected null values when using INPUT_SERVER and INPUT_ENV with this function. You can use this code to see if it affects your server:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
var_dump($_SERVER);
foreach ( array_keys($_SERVER) as $b ) {
    var_dump($b, filter_input(INPUT_SERVER, $b));
}

echo '<hr>';
var_dump($_ENV);
foreach ( array_keys($_ENV) as $b ) {
    var_dump($b, filter_input(INPUT_ENV, $b));
}

?>

If you want to be on the safe side, using the superglobal $_SERVER and $_ENV variables will always work. You can still use the filter_* functions for Get/Post/Cookie without a problem, which is the important part!

Iemand een idee wat dit betekent? Wat is FastCGI?
In de vardump laat ie de waarden nog gewoon zien......gefilterd is ie opeens NULL.

Nog een advies?

EDIT (2):
Mn voorlopige 'workaround':
$sExternalUsername = filter_var($_SERVER['PHP_AUTH_USER'], FILTER_VALIDATE_EMAIL);

Maar ik hoor nog steeds graag goed advies!
Gewijzigd op 01/01/1970 01:00:00 door Arnold C
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.