passare da un link a una funzione

la cosa che voglio realizzare è un pochetto complicata....ma si può fare in modo che da un link:

scambio.php?act=DOWNLOAD

nella pagina SCAMBIO.PHP succeda questo :

function valore del link [in questo caso DOWNLOAD]()

{

query per estrarre il codice dal db dove il link è il nome della categoria

}

io avrei bisogno che il valore dopo .php?act= VALORE

diventi il nome della funzione.....spero di essere stato chiaro in teoria la cosa è complicatuccia....

inviato 11 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

più che complicata, la cosa è pericolosa. Realizzando questo sistema chiunque potrebbe giocare con l'URL e creare funzioni nello script. Che controllo potresti avere?

Credo che qualunque risultato si potrebbe ottenere in un altro modo, più sicuro.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

be se la funzione [la veriabile del link] nn corrisponde al nome che c'è nel database nn può mostrare nulla....

risposto 11 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

perché non mi spieghi quale risultato vuoi ottere?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

in pratica io tramite la pagina di admin metto il codice o testo nel database,scelgo la categoria e i permessi [admin,pubblico,membri]

la tabella è così

moduli

////////////////////////////////////////////////

modulo---------+ download                //

codice-----------+ codice html o testo //

permessi-------+ members                 //

////////////////////////////////////////////////

in pratica,io vogli fare una pagina con questo codice

----------------------------------[approssimativamente ora nn mi va di scrivere tutto il codice x bene]------------

modulo.php

function $variabile()

{

q = "SELECT code FROM `moduli` WHERE modulo='$variabile'";

ecc esegue la query...

printa la query...

...

controlla i permessi per la visione del codice [del contenuto del campo code]

}

$variabile è la parte che nn so trovare e sarebbe questa:

moduli.php?act=download

ho usato download ma nel database ci potrebbe essere news o qualunque altra

cosa,come nel campo codice

in pratica SECONDO ME questo dovrebbe estrarre i dati riferiti a lla parte dopo act= nell'url

se io metto news mostra le news

se metto link mostra link

e via dicendo....

ma se quello che metto dopo act= non si trova come nome del campo modulo nel database mi deve dare errore 404

e quindi se act=.... è = a un nome del campo "modulo" mostra Il codice riferito al quel record altrimenti 404

si capisce??

risposto 11 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Quindi vuoi fare in modo che la query ti restituisca il codice abbinato ad un parametro passato via URL, giusto?

Perché dunque vuoi che il nome della funzione cambi di volta in volta? Perché non creare una semplice funzione "mostra_codice" a cui viene passato il parametro $_GET['act'] ?

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

beh nn sapevo si pottessee fare così ma come devo fare a fare come dici tu?cioè come prendo il valore dopo act=?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

semplicemente usando $_GET['act']

forse è il caso che tu dia un'occhiata qui:

http://www.phpnews.it/content/view/253/107/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

come sono imbranato  :uglystupid: cioè la soluzione al problema che nmi affligge da 4 mesi èera $_GET[act];

omg lol che stupido avrei dovuto pensarci prima

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

dovrebbe andare bene così?

<?php

      $db_user = "root";

      $db_pass = "*****";

      $db_name = "test";

      $db_host = "localhost";

      $prefix  = "rvk_";

      

    $conn = mysql_connect("$db_host","$db_user","$db_pass") or die (mysql_error());    

    $db = mysql_select_db("$db_name", $conn) or die(mysql_error());

   

      $module_data = $_GET['module'];

      $query = "SELECT * FROM `modules` WHERE module='$module_data'";

      $select = mysql_query($query);      

      while ($data = mysql_fetch_array($select))

      {

      function $module_data()

      {

      echo "$data[codice]";

      }

      }

      

?>
risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

il codice che hai riportato dovrebbe funzionare, anche se non ho capito esattamente il tuo scopo, pertanto non so dirti se questo è il metodo migliore.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

la funzione deve avere il nome del campo del database module_name e deve printare il contenuto del campo module_code..

con il codice che ho postato mi dice:

Parse error: parse error, unexpected T_VARIABLE, expecting T_STRING in C:\Programmi\Apache Group\Apache2\htdocs\modules.php on line 19

linea 19 : function $module_data()
risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Ma perché ti serve una funzione per fare tutto ciò?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

 :D beh non ha un motivo vero e proprio .... voglio switchare i contenuti rimanendo nella stessa pagina,ma non mettendo il codice nelle funzioni [es 1 funzione download,1funzione link ecc]ma una funzione che prende il nome di $_GET[module] e estrae il codice dal db solo se il nome nella query string è == a un record nel campo module_name

 :idiot: solo una mente contorta come la mia poteva arrivare a questo!

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

scusami, non avevo prestato attenzione a come dichiari la funzione: così non è corretto.

Non credo sia possibile dichiarare una funzione con un determinato nome a runtime  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si ho notato che non posso chiamare una funzione con una variabile :( ..... :lol: se metto un nome normale funziona.... dai troverò il modo prima o poi! ;D

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

gianni scusami  :o :o :o :o RIGIRANDO HO capito che NON USANDO UNA FUNZIONE potevo OTTENERE IL RISULTATO  :uglystupid: :uglystupid: :uglystupid: FUNZIONA sono un mito!!!! GRAZIE!!!!!!!!!!!!!!

ecco il codice beffardo

<?php

      $db_user = "root";

      $db_pass = "******";

      $db_name = "test";

      $db_host = "localhost";

      $prefix  = "rvk_";

      

    $conn = mysql_connect("$db_host","$db_user","$db_pass") or die (mysql_error());    

    $db = mysql_select_db("$db_name", $conn) or die(mysql_error());

   

      $module_data = $_GET['module'];

      $query = "SELECT * FROM `modules` WHERE module_name='$module_data'";

      $select = mysql_query($query);      

      while ($data = mysql_fetch_array($select))

      {

      global $data;

      echo "$data[module_code]";

      }

      

?>

SIIII PUOOOOO FAAAAREEEEEEE lool grazie sei il mio idolo

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

global $data non serve

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda