[PHP]Creare cookie utilizzato per cambiare sfondo e colore carattere di un altra pagina php

tonya_atrox

Nuovo Utente
18 Set 2016
15
0
1
39
Buonasera a tutti, :)
ho creato due file php
HomePage.php
personalizzaHomePage.php

Dalla pagina HomePage apro il sito con file personalizzaHomePage.php dove all'interno ho creato una form di personalizzazione , dove l'utente, dopo aver scelto uno schema di colore tramite radiobutton, deve cliccare sul pulsante Personalizza; così facendo vorrei invocare uno script PHP che crea un cookie dove all’interno sarà salvata la personalizzazione selezionata.
Poi ritornare all'home page HomePage.php, che questa volta dovrà avere lo schema di colore appena scelto dall'utente.

Ho allegato anche il sito in questione con dentro i file citati.
Grazie anticipatamente :)

codice del file HomePage.php

HTML:
<!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=UTF-8" />
<title>Documento senza titolo</title>
</head>

<body>
<h1>Titolo della Home Page</h1>
<p>
Questo è il corpo del testo della home page
</p>
<p><a href="personalizzaHomePage.php">personalizza home page</a> </p></body>
</html>

codice del file personalizzaHomePage.php

HTML:
<!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=UTF-8" />
<title>Documento senza titolo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="333">
    <tr>
      <td colspan="2" align="center">Scegli lo schema di colore che preferisci e prema il pulsante personalizza in basso</td>
    </tr>
    <tr>
      <td width="305" bgcolor="#0033CC">Sfondo blu, testo bianco, <font color="yellow">link giallo</font></td>
      <td width="16"><label>
        <input type="radio" name="RadioGroup1" value="1" id="RadioGroup1_0" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FF0000">Sfondo rosso, testo bianco, <font color="999999">link grigio</font></td>
      <td><label>
        <input type="radio" name="RadioGroup1" value="2" id="RadioGroup1_1" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#00FF00">Sfondo verde, testo bianco, <font color="ff00ff">link fucsia</font></td>
      <td><label>
        <input type="radio" name="RadioGroup1" value="3" id="RadioGroup1_2" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#999999">Sondo grigio chiaro, testo nero, <font color="FF0000">link rosso</font></td>
      <td><label>
        <input type="radio" name="RadioGroup1" value="4" id="RadioGroup1_3" />
      </label></td>
    </tr>
  </table>
  <p>
      <input type="submit" name="personalizzabutton" id="personalizzabutton" value="Personalizza" />
  </p>
</form>
</body>
</html>
 

Allegati

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
Ciao, prova così.

Homepage.php
PHP:
<?php

if(isset($_COOKIE['color-schema'])) {
    $schema = $_COOKIE['color-schema'];

    switch ($schema) {
        case '1':
            $class = 'uno';
            break;
        case '2':
            $class = 'due';
            break;
        case '3':
            $class = 'tre';
            break;
        case '4':
            $class = 'quattro';
            break;
        default:
            $class = 'default';
            break;
    }
}


?>

<!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=UTF-8" />
<title>Documento senza titolo</title>

<style type="text/css">
   
.uno {
    background-color: #0033CC;
    color: #fff;
}

.uno a {
    color: #ff0;
}

.due {
    background-color: #f00;
    color: #fff;
}

.due a {
    color: #999;
}

.tre {
    background-color: #0f0;
    color: #fff;
}

.tre a {
    color: #f0f;
}

.quattro {
    background-color: #999;
    color: #000;
}

.quattro a {
    color: #f00;
}

.default {
    background-color: #fff;
    color: #000;
}

.default a {
    color: #00c;
}


</style>
</head>

<body class="<?php echo $class; ?>">
<h1>Titolo della Home Page</h1>
<p>
Questo è il corpo del testo della home page
</p>
<p><a href="personalizzaHomePage.php">personalizza home page</a> </p></body>
</html>

personalizzaHomePage.php
PHP:
<?php

if(isset($_POST['personalizzabutton']) && isset($_POST['RadioGroup1'])) {
    $nome_cookie = "color-schema";
    $value_cookie = $_POST['RadioGroup1'];
    $scadenza_cookie = time()+86400*365;
    $path = '/';

    if (setcookie($nome_cookie,$value_cookie,$scadenza_cookie,$path)) {
        echo "<div><h2>Modifiche salvate</h2></div>";
    }
}
 ?>


<!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=UTF-8" />
<title>Documento senza titolo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="333">
    <tr>
      <td colspan="2" align="center">Scegli lo schema di colore che preferisci e prema il pulsante personalizza in basso</td>
    </tr>
    <tr>
      <td width="305" bgcolor="#0033CC">Sfondo blu, testo bianco, <font color="yellow">link giallo</font></td>
      <td width="16"><label>
        <input type="radio" required checked name="RadioGroup1" value="1" id="RadioGroup1_0" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FF0000">Sfondo rosso, testo bianco, <font color="999999">link grigio</font></td>
      <td><label>
        <input type="radio" name="RadioGroup1" value="2" id="RadioGroup1_1" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#00FF00">Sfondo verde, testo bianco, <font color="ff00ff">link fucsia</font></td>
      <td><label>
        <input type="radio" name="RadioGroup1" value="3" id="RadioGroup1_2" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#999999">Sondo grigio chiaro, testo nero, <font color="FF0000">link rosso</font></td>
      <td><label>
        <input type="radio" name="RadioGroup1" value="4" id="RadioGroup1_3" />
      </label></td>
    </tr>
  </table>
  <p>
      <input type="submit" name="personalizzabutton" id="personalizzabutton" value="Personalizza" />
  </p>
</form>
<a href="HomePage.php">Torna alla homepage</a>
</body>
</html>
 
  • Like
Reactions: tonya_atrox

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
Il valore (unico) proveniente dal form è conservato all'interno di $_POST['RadioGroup1'], quindi lo memorizzo come $value_cookie e creo il cookie (che si chiama 'color-schema' con scadenza a un anno) con tale valore.

Nella homepage viene controllato se esiste tale cookie nella macchina dell'utente e, se lo trova, ne estrapola il valore, il quale viene salvato all'interno della variabile $schema. A questo punto viene creata la variabile $class che assume valore diverso a seconda del valore assunto dal cookie.

Il valore della variabile $class diviene la classe (linguaggio html) del body a cui è associato un particolare stile, definito a livello di CSS.
 
  • Like
Reactions: tonya_atrox

tonya_atrox

Nuovo Utente
18 Set 2016
15
0
1
39
Ciao AdeKnite innanzitutto grazie , essendo ancora alle prime armi, credo che senza il tuo aiuto non ce l'avrei mai fatta.
Ho provato il codice e funziona alla perfezione.
La spiegazione mi è stata molto d'aiuto , sopratutto per comprendere il funzionamento.
Grazie ancora alla prossima :)