Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    come stampare una variabile

    Ciao a tutti, domanda da ..

    all mio file .php definisco delle variabili ed il relativo valore... ($var1="ciao"; ecc...)

    successivamente, recupero dal campo di una tabella il nome stesso della variabile che devo stampare.. e dopo la query e il fetch ho qualcosa così:


    codice:
    print"$row[variabile]"; //stampa $var1
    io invece dovrei ottenere

    codice:
    print"$row[variabile]"; //stampa ciao
    chi mi aiuta ?
    aquatimer2000

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    ${$row[variabile]}, ecco la documentazione: http://php.net/manual/en/language.va...s.variable.php

  3. #3
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    ${$row[variabile]}, ecco la documentazione: http://php.net/manual/en/language.va...s.variable.php

    non funziona, se utilizzo, come da te indicato:

    codice:
    $var="ciao";
    
    // ... query .. e $row=mysql_fetch_array($res);
    
    print"$row[variabile] : ${$row[variabile]} ,$var"; // stampa $var : ,ciao
    invece dovrebbe stampare:

    codice:
    //$var: ciao,ciao
    Ultima modifica di aquatimer2000; 31-12-2015 a 10:38
    aquatimer2000

  4. #4
    ulteriore informazione, in effetti sono stato poco chiaro:

    nella mia tabella, il valore contenuto nel campo "variabile" è: $var (così come scritto .. dollarovar), di conseguenza se stampo $row[variabile] ottengo:

    codice:
    print"$row[variabile]"; //mi stampa $var
    invece dovrei stampare il valore assegnato a $var precedentemente;
    spero di essere stato un po' più chiaro
    Ultima modifica di aquatimer2000; 31-12-2015 a 12:32
    aquatimer2000

  5. #5
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    nella mia tabella, il valore contenuto nel campo "variabile" è: $var (così come scritto .. dollarovar)
    Allora devi usare eval
    codice:
    eval("echo ".$row['variabile'].";");
    ma... non farlo. Se ti trovi ad usare eval è perché stai facendo qualcosa che potresti fare diversamente. Qual'è il problema che stai cercando di risolvere?

  6. #6
    ho del codice php salvato in una tabella, e nel caso di variabili, non devo stampare $var ma il valore settato precedentemente nello script php
    aquatimer2000

  7. #7
    così sono più chiaro

    codice:
    //setto la mia variabile $var
    
    $var = $_POST['valore_postato']; //ho postato ciao
    
    /*
    campi della mia tabella:
    tipo_input - name - variabile
    
    la prima riga ha valori:  text - nome_input - ciao
    
    
    query ..  poi mysql_fetch_array..
    
    */
    
    print"<input type=\"$row[tipo_input]\" name=\"$row[name]\" value=\"$row[variabile]\" />";
    
    
    /*
    vorrei avere questo html:
    
    <input type"text" name="nome_input" value="ciao" />
    */
    Ultima modifica di aquatimer2000; 31-12-2015 a 13:13
    aquatimer2000

  8. #8
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    ho del codice php salvato in una tabella, e nel caso di variabili, non devo stampare $var ma il valore settato precedentemente nello script php
    Questa è il problema che ti sei dato. Iniziamo a fare qualche considerazione sull'utilizzo di eval: eseguire il codice php che c'è nella tua tabella non è il massimo. Se l'utente ha la possibilità di inserire il proprio form, potrà eseguire arbitrariamente del codice. Ed è qualcosa di disastroso. E prima che tu dica "non è il mio caso, solo io posso aggiungere form", ti rispondo subito: non ha importanza. Magari tu non vorresti, ma per 1000 diverse ragioni (un bug nel login del pannello amministrativo, una sql injection, csrf, problemi con la configurazione di xyz, etc.) l'utente potrebbe inserire il proprio form con allegato codice php, e se succede quello che era un "problemino da poco" si trasforma in qualcosa di più grave. Inoltre è difficile da leggere, complicato da riusare altrove, e rende il debug più complesso di quanto non dovrebbe.

    TL;DR: Non usare eval.

    Ora che ti ho spiegato i motivi per cui non dovresti farlo, possiamo iniziare a pensare a soluzioni alternative. Le prima potrebbe essere quella dei placeholder:
    codice:
    $row['variabile'] = '<input type="text" name="variabile" value="$var"></input>';
    $var = $_POST['valore_postato'];
    $data = array(
        '$var' => $var
    );
    echo strtr($row['variabile'], $data);
    In questo caso puoi anche evitare di usare $var nella stringa, ma, ad esempio, chiamarla {{var}}
    codice:
    $row['variabile'] = '<input type="text" name="variabile" value="{{var}}">';
    così
    codice:
    $data = array(
        '{{var}}' =>  $_POST['valore_postato'];
    );
    
    echo strtr($row['variabile'], $data);
    Se c'è altro di cui tenere conto, scrivilo e penseremo alle appropriate soluzioni. Ma prima di farlo, scrivi cosa hai provato.
    Ultima modifica di .Kurt; 31-12-2015 a 13:14

  9. #9
    perfetto, in effetti non avevo pensato a questa serie di problemi.

    comunque la soluzione che segue mi va bene:

    In questo caso puoi anche evitare di usare $var nella stringa, ma, ad esempio, chiamarla {{var}}
    codice:
    $row['variabile']='<input type="text" name="variabile" value="{{var}}">';

    così
    codice:
    $data = array(
    '{{var}}'=> $_POST['valore_postato'];
    );

    echo strtr
    ($row['variabile'], $data);
    in questo caso, sono un po' più "al sicuro" ?!
    aquatimer2000

  10. #10
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    in questo caso, sono un po' più "al sicuro" ?!
    Dall'esecuzione di codice, si. Da xss no. Usa http://php.net/manual/it/function.htmlspecialchars.php su $_POST['valore_postato'];.

    Se ti servono soluzioni a problemi più avanzati ricordati che puoi utilizzare template engine come twig: http://twig.sensiolabs.org/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.