Newsgroup: it.comp.www.php
Titolo: Settare variabile di Sessione su un link <a>

Salve,
io vorrei settare una variabile di sessione allorchč si clicchi su un 
classico link <a href="">.
Per ora faccio andare a una pagina che setta la variabile di sessione e poi 
tramite l'header rimanda alla pagina precedente; esiste il modo di variare 
tale variabile senza uscire dalla pagina (ma semplicemente ricaricandola). 
Pensavo a riempire campi di form fittizie con javascript ma spero esista 
qualche soluzione piů immediata :)
Grazie!
-- 
=============== Totň alias J_Zanetti ===============
            Tessera #5 25 maggio: you'll never walk alone
                     Tessera #9 "Nel segno di Cruz"
============== toto...@SPAMtin.it ==============

Secondo me potresti fare così...
metti che la pagina si chiama prova.php
imposti quest'url: <a href="prova.php?act=session">Crea sessione</a>
e a inizio dello script:
if($_GET['act']=="session")
 {
  //imposti la sessione...
 }
Era questo che cercavi?

 ha scritto
Era questo che cercavi?
Mmm...si potrebbe funzionare.
Un modo senza usare il get invece? In modo da rendere il tutto invisibile 
all'utente? (mi viene in mente un form col post....)
-- 
=============== Totò alias J_Zanetti ===============


Secondo me il metodo migliore è il GET, perchè il più pratico e
semplice (la semplicità è l'obiettivo della programmazione, sebbene
io ne sia un ignorante...).
Ovviamente l'azione è visibile, ma anche se un utente richiamasse
direttamente l'url per l'azione significherebbe che vuole comunque
impostare quella sessione.
In ogni caso va bene anche un form... così:
<form action="$_SERVER[PHP_SELF]" method="POST">
<input type="Submit" name="sessione" value="Imposta sessione">
E nella pagina...
if($_POST['sessione'] == "Imposta sessione")
 {
  //Imposta la sessione
 }
Ovviamente avrai un bottone... se vuoi il link, credo che l'unico
metodo possibile sia utilizzare l'array $_GET (il $_COOKIE non avrebbe
senso, perchè è comunque visibile e più complicato nella sua
semplicità ;p). Io ti consiglio comunque il $_GET...
Fai tu :D

Mirko ha scritto:

Io invece ti consiglio di usare il metodo POST, in questa maniera:
<?php
session_start()
if ($_POST["unascelta"] == "tuovalore")
{
    $_SESSION["tua_variabile"] = "Quello che ti pare";
}
?>
<--! Sopra questa riga Tutta la parte iniziale HTML --->
<form name="bel_form" action="" method="POST">
<input name="unascelta" type=hidden >
</form>
<b>Il valore in sessione è: <?php echo $_SESSION["tua_variabile"] ?><br>
<a 
onclick="javascript:bel_form.unascelta.value='tuo_valore';bel_form.submit();return 
false;"  >Ho scelto questo.</a>
<--! Sotto questa riga Tutta la parte finale HTML --->
-- 
Cordialmente.
Melus.
dal mio e-mail togli i simboli di Zorro.

Potresti inviare una richiesta asincrona con javascript (per inteso non AJAX 
ma qualcosa di veramente semplice, senza XML e artifici vari) alla pagina 
php che setta la sessione. Così non ricarichi la pagina e tutto è 
completamente trasparente all'utente.
Tuttavia dovresti accertarti che l'utente abbia javascript attivato e che, 
se il browser è IE, abbia attivato anche gli ActiveX (questo non so se si 
può fare vagliando la richiesta HTTP con PHP; eventualmente puoi farlo da 
javascript. Ti consiglio di rivolgrti al newsgroup di javascript).
Se javascript non è attivato ti tocca usare GET come dice Mirko oppure un 
form con POST a patto di voler usare bottoni o link grafici. 

Troppo complicato: se poi il client non ha attivato javascript non ti
setta la sessione.
Ripeto: magari mi sbaglio, ma secondo me utilizzando GET si fa prima e
meglio...

 meglio...
Sono d'accordo ma a quanto pare a j_zanetti non piace molto il get. ciao 

Con complicato intendevo dire che c'è la possibilità che l'utente non
abbia attivo javascript ;) bisognerebbe quindi prima controllare questo
e, in questo caso, utilizzare il Get. Allora a questo punto tanto tale
utilizzarlo a priori :)