Bonjour,
j'éssaie d'installer un switch en vain !
http://creatif-web.be/port_folio/index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<head>
<link rel="stylesheet" type="text/css" media="screen" title="Style de l'utilisateur" href="<?php echo (isset($_COOKIE['feuilleStyle'])) ? $_COOKIE['feuilleStyle'] : 'style' ; ?>.css" />
<link rel="stylesheet" type="text/css" media="screen" title="Style de l'utilisateur" href="<?php echo (isset($_COOKIE['feuilleStyle'])) ? $_COOKIE['feuilleStyle'] : 'vert' ; ?>.css" />
</head>
XHTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<form action="/switch.php" method="post" class="lestyle">
 <!-- vous pouvez choisir d'utiliser la méthode GET, le fonctionnement en sera le même -->
 <fieldset>
   <legend>Changez de style...</legend>
   <select name="style">
    <option value="style1"<?php if ($_COOKIE['feuilleStyle'] == 'style') { echo ' selected="selected"'; } ?>>Style simple</option>
    <option value="vert"<?php if ($_COOKIE['feuilleStyle'] == 'vert') { echo ' selected="selected"'; } ?>>Style forêt</option>
</select>
   <input type="hidden" name="redirection" value="http://<?=htmlspecialchars($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])?>" />
   <input type="submit" value="Changer" />
 </fieldset>
</form>
La création du cookies je l'ai mises dans un fichier "switch.php" à la racine du site
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
<?php
  $validite = time() + 60 * 60 * 24 * 31 * 2; // deux mois en secondes
 
  // on considère que register_globals est désactivée, ainsi ce script fonctionnera quel que soit la configuration
  if (isset($_GET['style'])) {
    /* le style a été passé en méthode GET, dans l'URL */
    $style = $_GET['style'];
  }
  else if (isset($_POST['style'])) {
    /* le style a été passé en méthode POST, dans les entêtes HTTP */
    $style = $_POST['style'];
  }
 
  if (isset($_GET['redirection'])) {
    /* l'adresse de la page en cours est passée en méthode GET, dans l'URL */
    $redirection = $_GET['redirection'];
  }
  else if (isset($_POST['redirection'])) {
    /* l'adresse de la page en cours a été passée en méthode POST, dans les entêtes HTTP */
    $redirection = $_POST['redirection'];
  }
 
  // protection contre les petits malins qui tenteraient de pirater le site
  // le nom du style ne peut contenir que des caractères alpha-numériques et les caractères _ et -
  $style = preg_replace('#[^a-zA-Z0-9_-]#', '', $style);
 
  // on vérifie qu'il s'agit bien d'un lien interne
  // il doit commencer par http://monsite.com/ 
  if (strpos($redirection, 'http://'.$_SERVER['SERVER_NAME'].'/') === false || strpos($redirection, 'http://'.$_SERVER['SERVER_NAME'].'/') != 0) {
    /* tentative de piratage ? on remplace par la racine du site */
    $redirection = 'http://'.$_SERVER['SERVER_NAME'].'/';
  }
 
  setcookie('feuilleStyle', $style, $validite, '/', 'http://creatif-web.be/', 0);
 
  // on n'utilise pas le HTTP_REFERER car ce n'est pas fiable et les proxy ne l'envoyent pas
  header("Location: $redirection");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
 
<body>
</body>
</html>
Le problème c'est que c'est le vert qui s'affiche, alors que celui par défault ne fonctionne pas.
Merci d'avance
sur mon serveur en tapant php(infos)
j'ai sa :
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
Sa viens peut être de là aussi, j'héberge mes sites !