Results 1 to 9 of 9

Thread: Problema PHP

  1. #1
    Chief Petty Officer [Crilin]'s Avatar
    Join Date
    Apr 2004
    Location
    Roma
    Posts
    1.494

    Default Problema PHP

    Non riesco a venire a capo di questo problema... Premetto che tutto ciò mi serve per passare un valore tra due pagine (un ID di una determinata riga di tabella presa da un DB in SQL).
    Nella pagina da cui devo estrapolare l'informazione da mandare all'altra pagina il codice è questo:

    Code:
    while ( $valori = mysql_fetch_array($result) )
    {
    if($cnt<5)
    {
    echo"  <tr> ";
    echo"    <td bgcolor='#FFE991'><div align='center'><span class='style16'>$valori[data] <a href='mostra_evento.php?indice=$valori[0]' target='_self' class='aLink style17 style18'>$valori[titolo]</a></span></div></td> ";
    echo"  </tr> ";
    echo"  <tr> ";
    echo"    <td bgcolor='#FFFFFF'><div align='center'><font color='#FFFFFF'>.</font><span class='style16'></span></div></td> ";
    echo"  </tr> ";
    $cnt++;
    }
    }		}
    Premetto che su questa pagina funziona tutto, infatti, quando vado con il mouse sul link, in basso a sinistra mi compare esattamente il link che dovrebbe apparire (es: 'mostra_evento.php?indice=2, o 'mostra_evento.php?indice=3).

    Il problema si pone sull'altra pagina (mostra_evento.php) perchè, quando provo ad usare la variabile $indice non la riconosce, quando provo a stamparla non la stampa.
    Quel valore mi serve per poter fare la query al DB:

    Code:
    $query = "SELECT * FROM eventi WHERE id='$indice'";
    Probabilmente mi son spiegato male, spero che qualcuno capisca comunque e mi risponda, grazie in anticipo!

  2. #2
    Lieutenant Commander Alkabar's Avatar
    Join Date
    Feb 2004
    Location
    Netherlands.
    Posts
    19.975

    Default

    Quote Originally Posted by [Crilin]
    Non riesco a venire a capo di questo problema... Premetto che tutto ciò mi serve per passare un valore tra due pagine (un ID di una determinata riga di tabella presa da un DB in SQL).
    Nella pagina da cui devo estrapolare l'informazione da mandare all'altra pagina il codice è questo:

    Code:
    while ( $valori = mysql_fetch_array($result) )
    {
    if($cnt<5)
    {
    echo"  <tr> ";
    echo"    <td bgcolor='#FFE991'><div align='center'><span class='style16'>$valori[data] <a href='mostra_evento.php?indice=$valori[0]' target='_self' class='aLink style17 style18'>$valori[titolo]</a></span></div></td> ";
    echo"  </tr> ";
    echo"  <tr> ";
    echo"    <td bgcolor='#FFFFFF'><div align='center'><font color='#FFFFFF'>.</font><span class='style16'></span></div></td> ";
    echo"  </tr> ";
    $cnt++;
    }
    }		}
    Premetto che su questa pagina funziona tutto, infatti, quando vado con il mouse sul link, in basso a sinistra mi compare esattamente il link che dovrebbe apparire (es: 'mostra_evento.php?indice=2, o 'mostra_evento.php?indice=3).

    Il problema si pone sull'altra pagina (mostra_evento.php) perchè, quando provo ad usare la variabile $indice non la riconosce, quando provo a stamparla non la stampa.
    Quel valore mi serve per poter fare la query al DB:

    Code:
    $query = "SELECT * FROM eventi WHERE id='$indice'";
    Probabilmente mi son spiegato male, spero che qualcuno capisca comunque e mi risponda, grazie in anticipo!

    eh le variabili hanno il loro scope, fai conto che da una pagina all'altra sia tabula rasa ok ? Sempre. ora se ti vuoi passare una variabile da una pagina all'altra hai 3 modi :

    Serializzi la variabile e fai una var di sessione, te la passi con post, te la passi con get.

    nel primo caso devi poi settare accuratamente il php.ini perchè da quel che ricordo ci sono dei problemi, ad ogni modo lo fai con le variabili di session

    (ora io sono un po' antiquato ma register globals non mi piace)

    $HTTP_SESSION_VARS[];

    oppure credo $_SESSION[] ...

    nel secondo caso devi avere un form che gestisca l'evento post e usi

    $HTTP_POST_VARS per riprendere il valore dai campi che ti interessano (i campi intendo quelli in html)

    oppure $_POST

    nel terzo la variabile la metti direttamente nel link all'altra pagina :

    decifra da qui:

    "<a href=VisualizzaSchedePerCategoria.php?numero=$coun ter&Pagine=$Pagine&NumeroCategoria=$NumeroCategori a>$VarVis</a>"


    e poi recuperi quello che ti serve con

    $SARCAZZILIQUEDACE = $HTTP_GET_VARS["numero"]

    $SARCAZZILIQUEDACE = $HTTP_POST_VARS["numero"]

    $SARCAZZILIQUEDACE = $HTTP_SESSION_VARS["numero"] .


    Nel caso delle variabili di sessione, quando le setti li restano fino a che non ci riscrivi sopra :

    $HTTP_SESSION_VARS['id]=$id;

    poi ci puoi accedere da ogni pagina il valore rimane quello per tutta la sessione.

    Direi che dovresti essere a posto.

    EDIT: non si sa mai, ma preferisco specificare che questi tre affari ($HTTP_SESSION_VARS; $HTTP_POST_VARS .... ecc) sono dei vettori e dentro ai vettori ci metti quello che ti serve .
    Last edited by Alkabar; 5th October 2005 at 13:53.

  3. #3
    Lieutenant Commander San Vegeta's Avatar
    Join Date
    Oct 2003
    Location
    Bologna
    Posts
    12.153

    Default

    esistono due metodi più semplici:
    1 - crei una variabile statica (non ho mai provato ma mi pare che continui a esistere finchè non la si elimina esplicitamente)
    (edit) no, non è vero, non funziona. Però sono sicuro di aver letto un metodo per creare variabili che restano nella memoria del webserver, senza appoggiarsi alla sessione.

    2 - passi la variabile all'altro script tramite l'url, come si passano tutte le variabili..
    Last edited by San Vegeta; 5th October 2005 at 14:26.
    I rubinetti a casa di Chuck Norris non perdono, vincono.

    In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said "Get a job". That is the story of the universe.

    Quote Originally Posted by Wolfo View Post
    Concordo e propongo ban temporanei per chi critica la topa , la topa non si critica , dal trombabile in su non si commenta in modo sgradevole.
    la tua ignoranza in materia e' raccapricciante
    -cit. Estrema, 2022

  4. #4
    Chief Petty Officer [Crilin]'s Avatar
    Join Date
    Apr 2004
    Location
    Roma
    Posts
    1.494

    Default

    Grazie mille per le risposte, soprattutto ad Alkabar che si è lanciato in una spiegazione chilometrica!! Ho apprezzato

    Cmq ho risolto. Praticamente ho lasciato tutto come stava, con la differenza che, nella seconda pagina (quella in cui mi serviva il dato della prima insomma), ho dovuto aggiungere:

    $indice=$_GET['indice'];

    che, da quanto ho capito, serve per recuperare la variabile. In realtà non ho capito bene come funziona... per ora mi basta sapere che funziona cmq!

    Grazie ancora!!

  5. #5
    Lieutenant Commander San Vegeta's Avatar
    Join Date
    Oct 2003
    Location
    Bologna
    Posts
    12.153

    Default

    $_GET è l'array di sistema che memorizza tutti i parametri passati col metodo GET

    il metodo GET consiste nel passare parametri nell'url
    esempio
    pippo.php?nomevariabile1=valore1&nomevariabile2=va lore2
    in $_GET[nomevariable1] ci sarà valore1 e in $_GET[nomevariable2] ci sarà valore2

    il metodo POST consiste nel passare dati tramite pacchetti separati, per cui nell'url non si vedrà nulla
    similmente nell'array $_POST ci saranno i dati inviati, con leggere differenze nel caso si sia postato uno o più file.

    $_GET e $_POST vengono resettati ad ogni esecuzione di uno script php, per cui la permanenza dei dati memorizzati in precedenza non è garantita a meno di passarli ad ogni esecuzione
    I rubinetti a casa di Chuck Norris non perdono, vincono.

    In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said "Get a job". That is the story of the universe.

    Quote Originally Posted by Wolfo View Post
    Concordo e propongo ban temporanei per chi critica la topa , la topa non si critica , dal trombabile in su non si commenta in modo sgradevole.
    la tua ignoranza in materia e' raccapricciante
    -cit. Estrema, 2022

  6. #6
    Chief Petty Officer [Crilin]'s Avatar
    Join Date
    Apr 2004
    Location
    Roma
    Posts
    1.494

    Default

    Quote Originally Posted by San Vegeta
    $_GET è l'array di sistema che memorizza tutti i parametri passati col metodo GET

    il metodo GET consiste nel passare parametri nell'url
    esempio
    pippo.php?nomevariabile1=valore1&nomevariabile2=va lore2
    in $_GET[nomevariable1] ci sarà valore1 e in $_GET[nomevariable2] ci sarà valore2

    il metodo POST consiste nel passare dati tramite pacchetti separati, per cui nell'url non si vedrà nulla
    similmente nell'array $_POST ci saranno i dati inviati, con leggere differenze nel caso si sia postato uno o più file.

    $_GET e $_POST vengono resettati ad ogni esecuzione di uno script php, per cui la permanenza dei dati memorizzati in precedenza non è garantita a meno di passarli ad ogni esecuzione
    Ah, perfetto: molto chiaro!!
    Grazie della spiegazione...

  7. #7
    Lieutenant Commander Alkabar's Avatar
    Join Date
    Feb 2004
    Location
    Netherlands.
    Posts
    19.975

    Default

    Quote Originally Posted by San Vegeta
    esistono due metodi più semplici:
    1 - crei una variabile statica (non ho mai provato ma mi pare che continui a esistere finchè non la si elimina esplicitamente)
    (edit) no, non è vero, non funziona. Però sono sicuro di aver letto un metodo per creare variabili che restano nella memoria del webserver, senza appoggiarsi alla sessione.

    2 - passi la variabile all'altro script tramite l'url, come si passano tutte le variabili..

    1) Le variabili di sessione, l'ho scritto con $_SESSION o $HTTP_SESSION_VARS. Oppure register globals, ma è insicuro ed essendo tale non mi sono mai preoccupato di usarlo. Le var di sessione, oppure anche i cookie, sono simili a variabili globali.

    2) $HTTP_GET_VARS serve per recuperare dall'url il valore della variabile.

    $_GET e $_POST sono versioni più recenti di $HTTP_POST_VARS e $HTTP_GET_VARS .

    $var = $_GET['NomeVar'] è relativamente insicuro

    meglio $var = $_SESSION['NomeVar']

    se vedono il nome delle tue variabili sei in potenziale pericolo, non è paranoia.

    Ricorda inoltre, se gli utenti del tuo sito possono inserire dei dati, di utilizzare l'apposita funzione per impedire che i tag html vengano riconosciuti, la dove i contenuti cambiano dinamicamente.

  8. #8

    Default

    Anche io come Alka prediligo la creazione di una $_SESSION e quindi l'utilizzo delle variabili legate alla sessione: prima di tutto perché sono persistenti, e quindi le utilizzi dove e quanto vuoi nel sito, secondo perché sono piu' sicure, essendo agganciate alla sessione, non c'è rischio che siano provenienti da pc diversi da quello che ha aperto la sessione stessa.
    Jarsil, the Nervous Admin of [W] Forums
    Quote Originally Posted by Ipnotik
    non gli bastava averci tolto il nostro caro PD, ora ci tolgono pure l'ASD. Manca solo una coalizione di centrosx in italia chiamata LOL, e poi siamo al completo.

    Quote Originally Posted by spinoza.it
    Il premier: “L’Italia è vittima di un passato che non passa”. E di un dittatore con una ditta.

  9. #9
    Lieutenant Commander San Vegeta's Avatar
    Join Date
    Oct 2003
    Location
    Bologna
    Posts
    12.153

    Default

    Se vuoi porcheggiare con le variabili non devi per forza manovrare quelle del computer di un altro, basta aprire una sessione col sito
    I rubinetti a casa di Chuck Norris non perdono, vincono.

    In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said "Get a job". That is the story of the universe.

    Quote Originally Posted by Wolfo View Post
    Concordo e propongo ban temporanei per chi critica la topa , la topa non si critica , dal trombabile in su non si commenta in modo sgradevole.
    la tua ignoranza in materia e' raccapricciante
    -cit. Estrema, 2022

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
[Output: 80.90 Kb. compressed to 69.45 Kb. by saving 11.44 Kb. (14.15%)]