Salut,

suite à une question toute bête sur un autre forum où j'avais orienté la personne vers le tuto d'Olivier :
a écrit :

Est-il possible de passer par autre chose que des cookies ?


et bien je viens d'avoir une illumation illuminante Smiley lol

Oui c'est possible, et en plus c'est tout simple Smiley biggrin

Donc voilà, ça fait un peu teasing mais je n'ai pas fini de rédiger la technique. Seulement je suis tellement trop content que je n'ai pas pu résister à l'envie de poster Smiley confused
Salut,

Je tente ma chance : en transmettant le paramètre systématiquement dans les URLs ?

Sinon, je ne vois pas comment tu peux faire ça.
Salut,

déplacé dans le salon des tutos, tu compléteras le moment venu Smiley cligne

Tu es par ailleurs invité à modifier le tutoriel en conséquence si tu veux bien, compléter ou modifier, peu importe, le tutoriel appartient au collectif Alsacréations, pas à moi.

Une petite mise à jour, une version avec JavaScript uniquement pourquoi pas aussi na ?

Voilà, je te laisse faire ce que tu veux Smiley cligne
On attend ta version Smiley smile
++
Ah ben zut vous n'avez pas laissé le sujet dans le bar...

Et puis ah ben zut, zut, zut ça marche pas bien mon affaire.

En fait j'arrive à changer le style de manière permanente mais non personnalisée, donc quand ça change ben ça change pour tout le monde et pas seulement tel visiteur.

donc tout faux, je me suis enthousiasmé trop vite...
Oui, pourquoi pas...

dans le head de tous les document je met une include php

<?php
include ('chemin_relatif/include/switch_style.php')
?>


j'ai donc un dossier include, avec deux fichiers :

. switch_style.php

<?php
$nom_style='fond_blanc';
include ('link_style.php');
?>


. link_style.php

<link rel="stylesheet" type="text/css" media="screen, projection" href="/chemin_vers_dossiers_style/<?php echo $nom_style; ?>/style.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" media="screen" href="/chemin_vers_dossiers_style/<?php echo $nom_style; ?>/pour_IE.css" />
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="screen" href="/chemin_vers_dossiers_style/<?php echo $nom_style; ?>/pour_ltIE7.css" />
<![endif]-->


J'ai par ailleurs les différents dossiers fond_blanc, fond rouge, fond_bleu comprenant les fichiers css style.css, pour_IE.css, pour_ltIE7.css

Enfin, dans une page styleswitcher.php j'ai le formulaire suivant, je l'ai piqué à Olivier :

<div id="style_switcher">
    <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
        <fieldset>
            <legend>Choisissez un style de page</legend>
            <select name="style">
                <option value="fond_blanc" selected="selected">Fond blanc</option>
                <option value="fond_rouge">Fond rouge</option>
                <option value="fond_bleu">Fond bleu</option>
            </select>
            <input type="submit" name="change_style" value="Changer le style" />
        </fieldset>
    </form>
</div>


Auquel j'associe le traitement php

<?php
if(isset($_POST['change_style']))
// On vérifie que le formulaire a été soumis
{
if(isset($_POST['style'])) {
$new_style=$_POST['style'];	

$new_style_link=fopen("include/switch_style.php","w+");
                    
/* On remplit ce fichier ligne par ligne, l'astuce c'est qu'il est très court ! */
fputs($new_style_link,"<?php \n");
fputs($new_style_link,"$"."nom_style=".$new_style."; \n");
fputs($new_style_link,"?> \n");
fputs($new_style_link,"<?php \n");
fputs($new_style_link,"include ('link_style.php'); \n");
fputs($new_style_link,"?> \n");
fclose($new_style_link);
                    
echo '<p><strong>Le style '.$new_style.' est maintenant prêt, pour voir le résultat cliquez ici : <a href="styleswitcher.php">nouveau design</strong></a></p>';
}
}
?>


Voilà, le dernier paragraphe généré par echo c'est parce que le changement de code source ne se produit pas directement après le traitement php. Il faut encore un rafraichissement de la page, pas compris pourquoi.

mais le sujet n'est pas là. Ce ne peut être finalement qu'une petite fantaisie pour un éventuel administrateur de site et pas du tout une fonctionalité personnalisée pour un visiteur.
Modérateur
Salut,

A priori, j'aurais pensé que tu serais passé par les sessions mais bon, est-ce bien judicieux de remplacer un cookie par une session ? Je ne pense pas vu que l'aspect sécurité ne me semble pas indispensable...
Par la méthode post, c'est effectivement une autre solution mais dans le cas d'un styleswitcher, un get m'aurait semblé plus approprié.

Sinon, le fait de combiner un styleswitcher en JS avec celui existant en PHP permet d'éviter la multiplication des requêtes.
Modifié par koala64 (05 Jan 2007 - 10:02)