Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

PHP: problema con variabili di sessione

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

PHP: problema con variabili di sessione

Postdi Zhuco » 06/07/05 01:10

Ho un problema di cui non trovo la soluzione.
Ho un piccolo script che esegue una query a mysql, attraverso quattro variabili passate per url. Immediatamente dopo fatta la query salvo nella session il valore delle variabili passate.
Ora mi capita che una volta salvate le variabili nella session anche se passo nuovi valori diversi tramite url lo script esegue la query facendo riferimento ai valori salvati nella session e non al valore delle variabili passate per url!!!
Tutto questo anche se nel codice della query si fà riferimento alle varibili passate e non a quelle salvate nella session!!!
Perchè mai accade ciò?
Thanks From .:°J@zZ°:.
Zhuco
Utente Senior
 
Post: 234
Iscritto il: 12/08/02 00:17
Località: Ciociaria

Sponsor
 

Postdi archimede » 06/07/05 07:20

Difficile a dirsi senza vedere il codice.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Zhuco » 06/07/05 14:04

archimede ha scritto:Difficile a dirsi senza vedere il codice.
Alessandro

Hai perfettamente ragione ;)

Per spiegarti meglio, il problema è il seguente:
Quando eseguo il codice sotto stante da nuovo tutto ok (gli passo solo $tip), non ho problemi, tutto và come deve, il problema è che la funzione "createlink" che genera una serie di link che mi permetterebbero di navigare all'interno di alcuni nodi di un grafo, (il codice generato dalla funzione è perfetto) aggiornando i valori delle varibili $tip, $stip, $row ed $pgn non funziona!!! O meglio se elimino le variabili di session funziona tutto perfettamente... (La funzione non è il problema)
Solo che le varibili di session non posso eliminarle, perché le uso per tornare indietro, quando tramite il form modifico alcuni valori per rigenerare le immagini...
Ho rilevato che nell'url i valori passati sono sempre corretti e vengono correttamente formattati ma lo script esegue sempre la stessa query e cioè è come se lo script prendesse i valori da associare alle variabili dalla session e non dall'url!!!
Ho anche provato a monitorizzare il file della session nella cartella temp di apache e mi sono accorto che i valori non vengono aggiornati con quelli passati nell'url, ma rimangono sempre gli stessi!!!
Ho rivisto il tutto più volte ma non riesco a trovare l'inghippo!!!
Questo è il codice:
<?php
include 'gest/datauserdb.inc';
include 'gest/errorreport.inc';
include 'createlink.inc';
include 'createselect.inc';
session_start();
setcookie ("on", "");
if(!$row)
{
$row = 0;
}
if(!$pgn)
{
$pgn = 0;
}
$_con = mysql_connect($_server_db, $_user_db, $_password_db) or die (errorreport("Connection Failed From GRAFO - MySQL Error: ".mysql_error(), "404"));
mysql_select_db ('prodottidyade', $_con) or die (errorreport("Connection Failed For Selection Table Prodotti From GRAFO - MySQL Error: ".mysql_error(), "404"));
if(isset($stip))
{
$query = "SELECT * FROM dati WHERE tipo="".$tip."" and sottotipo="".$stip.""";
$_SESSION["tip"]=$tip;
$_SESSION["stip"]=$stip;
}
else
{
$query = "SELECT * FROM dati WHERE tipo="".$cat.""";
$_SESSION["tip"]=$cat;
}
$resquery = mysql_query($query) or die (errorreport("Query Error From GRAFO - Query Sent: ".$query." - MySQL Error: ".mysql_error(), "404"));
$numrowdb = mysql_num_rows ($resquery);
$link= createlink($numrowdb, $pgn);
$_SESSION["row"]=$row;
$query = $query." ORDER BY nome LIMIT ".$row.",4";
$resquery = mysql_query($query) or die (errorreport("Query Error From GRAFO - Query Sent: ".$query." - MySQL Error: ".mysql_error(), "404"));
$numrowdb = mysql_num_rows ($resquery);
if ($numrowdb >= 1)
{
$clr="clr";
$tgl="tgl";
$i=0;
while ($rows = mysql_fetch_assoc($resquery))
{
$_product.="
<div class="prd">
<div class="inf">
<div class="immprd">
<a href="javascript:void(0)" onclick="openimg('".$rows["codice"]."')" title=""><img src="rdimg.php?pti=".$rows["grafico"]."&amp;rf=6&amp;qlt=70" alt="".$rows["nome"]."" /></a>
</div>
<div class="cat">
<div class="inte">
&nbsp;&nbsp;Tipo:
</div>
<div class="inte2">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$rows["tip"]."
</div>
</div>
<br />
<div class="tp">
<div class="inte">
&nbsp;&nbsp;SottoTipo:
</div>
<div class="inte2">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$rows["stip"]."
</div>
</div>
<br />
<div class="nm">
<div class="inte">
&nbsp;&nbsp;Nome:
</div>
<div class="inte2">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$rows["nome"]."
</div>
</div>
</div>
<div class="dsc">
<div class="inte">
&nbsp;&nbsp;Formula:
</div>
<div class="inte2">
&nbsp;&nbsp;".$rows["formula"]."
</div>
</div>
<div class="dsc">
<div class="inte">
&nbsp;&nbsp;Energia:
</div>
<div class="inte2">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&euro;&nbsp;".$rows["energia"]." (∂W, ∇I)
</div>
</div>
<div class="frm">
<div class="inte">
&nbsp;&nbsp;Imposta Valori:
</div>
<div class="inte2">
<form name="form_prod_".$i."" action="createGrafo.php?num=".$i."" method="post">
<input type="hidden" name="cod_".$i."" value="".$rows["codice"]."" />
<input type="hidden" name="name_".$i."" value="".$rows["nome"]."" />
<input type="hidden" name="energia_".$i."" value="".$rows["prezzo"]."" />
<label>&nbsp;Inizio:&nbsp;".createselect($rows["start"], $col, $i)."</label>
<label>&nbsp;Fine:&nbsp;".createselect($rows["finish"], $tgl, $i)."</label>
<label for="qta">&nbsp;Quantit&agrave;:&nbsp;</label><input type="text" name="qta_".$i."" size="2" />&nbsp;
<a href="javascript:void(0)" onclick="controljoule('".$i."')" onfocus="this.blur()" title="Modifica Valori"> <img src="immagini/energia_1.gif" alt=""/></a>
</form>
</div>
</div>
</div>";
$i++;
}
}
else
{
$no_row=" ";
$css ="<link rel="stylesheet" href="css/niente.css" type="text/css"/>";
}
mysql_close($_con);
mysql_free_result ($resquery);
?>
Thanks From .:°J@zZ°:.
Zhuco
Utente Senior
 
Post: 234
Iscritto il: 12/08/02 00:17
Località: Ciociaria

Postdi Triumph Of Steel » 06/07/05 18:22

prima di ogni query, prova a riprendere dall'url le variabili.

evidentemente è settato il PHP.INI in modo che le variabili vengano prese prima da sessione... suppongo.

prova così:

Codice: Seleziona tutto
<?php
$tip = (isset($_REQUEST['tip']) && $_REQUEST['tip'] != "") ? $_REQUEST['tip'] : "";
?>

al posto delle virgolette finali, puoi mettere un altro valore di default (ad esempio, $_SESSION['tip']) se ti serve avere un altro valore.

Nota: ricorda che è sempre meglio controllare le stringhe che arrivano dall'URL, per evitare qualsiasi hack, visto che fai anche delle query.

credo ci sia anche una funzione apposta per questo (addslashes mi pare).. basta controllare su http://www.php.net
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi Zhuco » 07/07/05 21:32

Triumph Of Steel ha scritto:prima di ogni query, prova a riprendere dall'url le variabili.

evidentemente è settato il PHP.INI in modo che le variabili vengano prese prima da sessione... suppongo.

prova così:

Codice: Seleziona tutto
<?php
$tip = (isset($_REQUEST['tip']) && $_REQUEST['tip'] != "") ? $_REQUEST['tip'] : "";
?>

al posto delle virgolette finali, puoi mettere un altro valore di default (ad esempio, $_SESSION['tip']) se ti serve avere un altro valore.

Nota: ricorda che è sempre meglio controllare le stringhe che arrivano dall'URL, per evitare qualsiasi hack, visto che fai anche delle query.

credo ci sia anche una funzione apposta per questo (addslashes mi pare).. basta controllare su http://www.php.net


Ho provato di tutto e non sono arrivato a niente,
ho capito solo che se non uso la session è tutto Ok...
Credo che a questo punto uso il javascript per passare i valori che mi interesano...
O almeno ci provo!!!
Thanks From .:°J@zZ°:.
Zhuco
Utente Senior
 
Post: 234
Iscritto il: 12/08/02 00:17
Località: Ciociaria

Postdi Zhuco » 07/07/05 22:55

Ho trovato la soluzione, forse...
Ho tolto tutti i riferimenti alla session immerse nel codice, e le ho aggiunte tutte insieme a fine script in questo modo:
Codice: Seleziona tutto
 
<?php
    include 'gest/datauserdb.inc';
    include 'gest/errorreport.inc';
    include 'createlink.inc';
    include 'createselect.inc';
    setcookie ("on", "");
    if(!$row)
        {
            $row = 0;
        }
    if(!$pgn)
        {
            $pgn = 0;
        }         
    $_con = mysql_connect($_server_db, $_user_db, $_password_db) or die (errorreport("Connection Failed From GRAFO - MySQL Error: ".mysql_error(), "404"));
    mysql_select_db ('prodottidyade', $_con) or die (errorreport("Connection Failed For Selection Table Prodotti From GRAFO - MySQL Error: ".mysql_error(), "404"));
    if(isset($stip))
        {
            $query = "SELECT * FROM dati WHERE tipo=\"".$tip."\" and sottotipo=\"".$stip."\"";

        }
    else
        {
            $query = "SELECT * FROM dati WHERE tipo=\"".$cat."\"";
        }
    $resquery = mysql_query($query) or die (errorreport("Query Error From GRAFO - Query Sent: ".$query." - MySQL Error: ".mysql_error(), "404"));
    $numrowdb = mysql_num_rows ($resquery);
    $link= createlink($numrowdb, $pgn);
    $query = $query." ORDER BY nome LIMIT ".$row.",4";
    $resquery = mysql_query($query) or die (errorreport("Query Error From GRAFO - Query Sent: ".$query." - MySQL Error: ".mysql_error(), "404"));
    $numrowdb = mysql_num_rows ($resquery);
    if ($numrowdb >= 1)
        {
            $clr="clr";
            $tgl="tgl";
            $i=0;
            while ($rows = mysql_fetch_assoc($resquery))
                {   
                    $_product.="
                <div class=\"prd\">
                    <div class=\"inf\">
                        <div class=\"immprd\">
                            <a href=\"javascript:void(0)\" onclick=\"openimg('".$rows["codice"]."')\" title=\"\"><img src=\"rdimg.php?pti=".$rows["grafico"]."&amp;rf=6&amp;qlt=70\" alt=\"".$rows["nome"]."\" /></a>
                        </div>
                        <div class=\"cat\">
                            <div class=\"inte\">
                                &nbsp;&nbsp;Tipo:
                            </div>
                            <div class=\"inte2\">
                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$rows["tip"]."
                            </div>
                        </div>
                        <br />
                        <div class=\"tp\">
                            <div class=\"inte\">
                                &nbsp;&nbsp;SottoTipo:
                            </div>
                            <div class=\"inte2\">
                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$rows["stip"]."
                            </div>
                        </div>
                        <br />
                        <div class=\"nm\">
                            <div class=\"inte\">
                            &nbsp;&nbsp;Nome:
                            </div>
                            <div class=\"inte2\">
                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$rows["nome"]."
                            </div>
                        </div>                       
                    </div>
                    <div class=\"dsc\">
                        <div class=\"inte\">
                            &nbsp;&nbsp;Formula:
                        </div>
                        <div class=\"inte2\">
                            &nbsp;&nbsp;".$rows["formula"]."
                        </div>
                    </div>
                    <div class=\"dsc\">
                        <div class=\"inte\">
                            &nbsp;&nbsp;Energia:
                        </div>
                        <div class=\"inte2\">
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&euro;&nbsp;".$rows["energia"]." (?W, ?I)
                        </div>
                    </div>
                    <div class=\"frm\">
                        <div class=\"inte\">
                            &nbsp;&nbsp;Imposta Valori:
                        </div>
                        <div class=\"inte2\">
                            <form name=\"form_prod_".$i."\" action=\"createGrafo.php?num=".$i."\" method=\"post\">
                                <input type=\"hidden\" name=\"cod_".$i."\" value=\"".$rows["codice"]."\" />
                                <input type=\"hidden\" name=\"name_".$i."\" value=\"".$rows["nome"]."\" />
                                <input type=\"hidden\" name=\"energia_".$i."\" value=\"".$rows["prezzo"]."\" />
                                <label>&nbsp;Inizio:&nbsp;".createselect($rows["start"], $col, $i)."</label>
                                <label>&nbsp;Fine:&nbsp;".createselect($rows["finish"], $tgl, $i)."</label>
                                <label for=\"qta\">&nbsp;Quantit&agrave;:&nbsp;</label><input type=\"text\" name=\"qta_".$i."\" size=\"2\" />&nbsp;
                                <a href=\"javascript:void(0)\" onclick=\"controljoule('".$i."')\" onfocus=\"this.blur()\" title=\"Modifica Valori\"> <img src=\"immagini/energia_1.gif\" alt=\"\"/></a>
                            </form>
                        </div>
                    </div>
                </div>";
                $i++;
                }
        }
    else
        {
            $no_row=" ";
            $css ="<link rel=\"stylesheet\" href=\"css/niente.css\" type=\"text/css\"/>";
        }
    mysql_close($_con);
    mysql_free_result ($resquery);
    session_start();
    $_SESSION['tipo']=$tip;
    $_SESSION['sottotipo']=$subtip;
    $_SESSION['pagina']=$pgn;
    $_SESSION['riga']=$row;
?>

In questo modo pare che tutto funziona...
Non chiedetemi perché...
Non lo sò neanche io!!!
Basta che funzioni :lol: :lol: :lol:
Thanks From .:°J@zZ°:.
Zhuco
Utente Senior
 
Post: 234
Iscritto il: 12/08/02 00:17
Località: Ciociaria


Torna a Programmazione


Topic correlati a "PHP: problema con variabili di sessione":

Problema Windows 10
Autore: asso1998
Forum: Software Windows
Risposte: 1

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti