Bonjour,
J'ai un script de détection de l'acceptation des cookies intégré dans une page index.php.
J'essaie de mettre cette partie de code dans une fonction et ma page n'est plus trouvée.
Ancien code intégré dans la page:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $cookiesActivated = false; // Default value
if (isset($_COOKIE["test_cookie"]))
{
$cookiesActivated = true;
}
else
{
if (isset($_REQUEST["test"]))
{
$cookiesActivated = false;
}
else
{
setcookie("test_cookie", "1", 0, "/");
header('Location: '.URL_SITE.basename($_SERVER['PHP_SELF']).'?test=1'); // A modifier si les données serveur ne sont pas disponibles
}
} |
Nouveau code page index.php:
1 2 3
| require_once("classes/moimp/StdFunctions.php");
use StdFunctions\StdFunctions;
$cookiesActivated = StdFunctions::acceptCookies($_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']); // Même remarque que dans le code précédent |
Code de la classe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| namespace StdFunctions;
class StdFunctions
{
/**
* Check if cookies are activated
*
* @param string $testPath
* @static
* @return bool $accepted
*/
public static function acceptCookies($fullpath)
{
$activated = false; // Default value
if (isset($_COOKIE["test_cookie"]))
{
$activated = true;
}
else
{
if (isset($_REQUEST["test"]))
{
$activated = false;
}
else
{
setcookie("test_cookie", "1", 0, "/");
header("Location: $fullpath?test=1");
}
}
return $activated;
}
} |
Si à des fins de test, j'ajoute la ligne unset($_COOKIE['test_cookie']); setcookie("test_cookie", "", 0, "/"); avant l'appel de la fonction, mon url n'est pas trouvée car elle devient égale à $_SERVER['SERVER_NAME'] . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']
avec répétition du nom du serveur. POURQUOI?
Partager