input filter op $_SERVER
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?
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.
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)
1
2
3
4
5
6
7
8
9
10
11
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));
}
?>
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