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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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?