PHP switch

  • Créateur du sujet Créateur du sujet Vince71
  • Date de début Date de début
A

Anonyme

Invité
Salut à tous !
Je débute et j'essaye de faire un petit script PHP me permettant de choisir le style de ma page web. Pour ça j'ai utiliser un "switch" mais une erreur de type T_BREAK perciste . :mad: :mad: :mad:
Pouvez m'aider ?

Voici le script :

<?php

switch ($color)
{
case '...' : $choix = defaut
break;

case 'noir' : $choix = noir
break;

case 'rouge' : $choix = rouge
break;

case 'vert' : $choix = vert
break;

default : $choix = defaut
break;
}

?>

merci d'avance !

( utile : http://astronomiedebutant.free.fr/choix.html )
 
Moi je le vois plutot comme ça :rolleyes:
Bloc de code:
<?php

function choisicouleur()
{
$randoume=mt_rand(1,2);
if($randoume=='1'){$couleur='rouge';}
if($randoume=='2'){$couleur='verte';}
return $couleur;
}

echo choisicouleur();
?>
 
Il me semble que tu oublies les ";" à la fin de tes instructions.

Donc, si tu fais comme ça ?

Bloc de code:
<?php
  switch ($color) 
  { 
    case '...' :
  	  $choix = defaut;
 	  break;
    
     /* ... */
  
    default :
  	  $choix = defaut;
 	  break;
  } 
  ?>

En plus de ça, il doit avoir un autre problème. Le "defaut" c'est quoi ?! si c'est une chaîne de caractère, mets là entre guillemets, ou alors si c'est une variable, tu oublies le $.
 
Cyril, ton script c'est pour choisir une couleur aléatoire, ce qui ne semble pas être le problème de Vince. En plus de ça, ton code serait bien plus propre si tu créais un tableau avec toutes tes couleurs et qu'ensuite tu utilisais la fonction array_rand() pour sélectionner un élément du tableau de manière pseudo-aléatoire.
 
molgow a dit:
Cyril, ton script c'est pour choisir une couleur aléatoire, ce qui ne semble pas être le problème de Vince. En plus de ça, ton code serait bien plus propre si tu créais un tableau avec toutes tes couleurs et qu'ensuite tu utilisais la fonction array_rand() pour sélectionner un élément du tableau de manière pseudo-aléatoire.

Oui tu as entièrement raison
Je suis étourdi parfois :rolleyes:
 
En fait c'est bon ça marche, j'avais oublié les ";" à la fin :rolleyes:
J'utilise un menu déroulant et "switch" histoire de tester.
Mon script permet de changer de feuille de style et pas de mettre de couleurs aléatoire
merci à tous :up:
Vince
 
Bonjour bonjour :D
Enfin, bonsoir xD

Bon voil&#224;, j'ai copi&#233; (oui j'ai honte ... mais la flemme, vous connaissez :rose: ) un code de switch php pour l'appliquer chez moi ...
Il fonctionne bien, mais le seul probl&#232;me que j'aie, c'est que le cookie cr&#233;&#233; par le code (et qui existe, il a bien &#233;t&#233; cr&#233;&#233;, j'ai v&#233;rifi&#233; ... et il contenait la bonne donn&#233;e) n'est apparament pas lu quand je reviens sur la page apr&#232;s m'&#234;tre promen&#233; ailleurs :/

Je vous donne les codes :
Le code dans le head pour faire appel aux feuilles de style ...
Bloc de code:
        <link rel="stylesheet" type="text/css" media="screen" title="v1" href="styles/<?php echo (isset($_COOKIE['Cookie'])) ? $_COOKIE['Cookie'] : 'v1' ; ?>.css" />
        <link rel="stylesheet" type="text/css" media="screen" title="v2" href="styles/<?php echo (isset($_COOKIE['Cookie'])) ? $_COOKIE['Cookie'] : 'v2' ; ?>.css" />
Le code pour choisir le style :
Bloc de code:
                    <form action="switch.php" method="post">
                                <select name="style">
                                    <option value="v1"<?php if ($_COOKIE['Cookie'] == 'v1') { echo ' selected="selected"'; } ?>>La version originale !</option>
                                    <option value="v2"<?php if ($_COOKIE['Cookie'] == 'v2') { echo ' selected="selected"'; } ?>>La version noire !</option>
                                </select>
                            <input type="hidden" name="redirection" value="http://<?=htmlspecialchars($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])?>" />
                            <input type="submit" value="Changer" />
                    </form>
Et enfin la page switch.php :
Bloc de code:
<?php
  $validite = time() + 60 * 60 * 24 * 31 * 12; // douze mois en secondes

  // on consid&#232;re que register_globals est d&#233;sactiv&#233;e, ainsi ce script fonctionnera quel que soit la configuration
  if (isset($_GET['style'])) {
    /* le style a &#233;t&#233; pass&#233; en m&#233;thode GET, dans l'URL */
    $style = $_GET['style'];
  }
  else if (isset($_POST['style'])) {
    /* le style a &#233;t&#233; pass&#233; en m&#233;thode POST, dans les ent&#234;tes HTTP */
    $style = $_POST['style'];
  }

  if (isset($_GET['redirection'])) {
    /* l'adresse de la page en cours est pass&#233;e en m&#233;thode GET, dans l'URL */
    $redirection = $_GET['redirection'];
  }
  else if (isset($_POST['redirection'])) {
    /* l'adresse de la page en cours a &#233;t&#233; pass&#233;e en m&#233;thode POST, dans les ent&#234;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&#232;res alpha-num&#233;riques et les caract&#232;res _ et -
  $style = preg_replace('#[^a-zA-Z0-9_-]#', '', $style);

  // on v&#233;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('Cookie', $style, $validite, '/', $_SERVER['SERVER_NAME'], 0);

  // on n'utilise pas le HTTP_REFERER car ce n'est pas fiable et les proxy ne l'envoyent pas
  header("Location: $redirection");
?>
(vous remarquerez que j'ai pouss&#233; la faignantise jusqu'&#224; laisser les commentaires originaux et du code inutile ^^)

Alors docteurs ? :)

Edit : tiens, le sujet avait 1 an et demi :D