Ricerche sui campi di un form

Salve a tutti, vorrei chiedere, in quanto inesperto di Rails, il metodo
più appropriato per utilizzare i campi di un form come criteri di una
query, senza dover compormi l’SQL da passare al metodo ‘find_by_sql’
(che credo sia anche un metodo vulnerabile all’sql injection ).
Da premettere che non tutti i campi del form devono essere
obbligatoriamente compilati.

Lobo C. wrote:

Salve a tutti, vorrei chiedere, in quanto inesperto di Rails, il metodo
più appropriato per utilizzare i campi di un form come criteri di una
query, senza dover compormi l’SQL da passare al metodo ‘find_by_sql’
(che credo sia anche un metodo vulnerabile all’sql injection ).
Da premettere che non tutti i campi del form devono essere
obbligatoriamente compilati.

ciao,

puoi fare una cosa del genere, i punti interrogativi servono proprio per
seistemare l’ sql injection, praticamente così facevo i parametri prima
di andare alla query vengono controllati(nn ricordo come).

params[] è il vettore contenente i dati della form

@travels = Travel.find(:all,
                       :include => [:user,:location],
                       :conditions => ["travels.date < ? AND

travel_departure >= CURDATE()",params[“travel_date”]],
:order => “travel_departure
ASC,locations.seq”)

Andrea(Q) wrote:

Lobo C. wrote:

Salve a tutti, vorrei chiedere, in quanto inesperto di Rails, il metodo
pi� appropriato per utilizzare i campi di un form come criteri di una
query, senza dover compormi l’SQL da passare al metodo ‘find_by_sql’
(che credo sia anche un metodo vulnerabile all’sql injection ).
Da premettere che non tutti i campi del form devono essere
obbligatoriamente compilati.

ciao,

puoi fare una cosa del genere, i punti interrogativi servono proprio per
seistemare l’ sql injection, praticamente cos� facevo i parametri prima
di andare alla query vengono controllati(nn ricordo come).

params[] � il vettore contenente i dati della form

@travels = Travel.find(:all,
                       :include => [:user,:location],
                       :conditions => ["travels.date < ? AND

travel_departure >= CURDATE()",params[“travel_date”]],
:order => “travel_departure
ASC,locations.seq”)

Quindi posso passare direttamente l’hash params come parametro a find.
Ma come si comporta con i campi non compilati?
Nel senso che, riferendomi all’esempio che mi hai mandato, se il campo
della form travel_date non venisse compilato, significa che dovrò
modificare la stringa sql, e conseguentemente, eliminare il parametro
travel_date dall’interno dell’hash ?

Lobo C. wrote:

                       :include => [:user,:location],

modificare la stringa sql, e conseguentemente, eliminare il parametro
travel_date dall’interno dell’hash ?

puoi mettere delle condizioni, una cosa del tipo params[“travel_date”] |
“2007-11-11”
non è proprio così ma giusto per capirci

ciao ragazzi

qualcuno di voi usa rjb con windows? su linux non da nessun problema,
perche ci sono le variabili d’ambiente JAVA_HOME e LD_LIBRARY_PATH, ma
su windows non riesco a fargli “agganciare” la jvm e tutto quello che
ottengo è sempre un tristissimo

can’t create Java VM (RuntimeError)

:frowning:

ciao
jeko

scusate ma ho risolto il problema e posto la soluzione :slight_smile:

la variabile di ambiente JAVA_HOME va impostata anche su windows, e va
fato senza punto e virgola alla fine (non era richeisto ma l’avevo fatto
un po come se fosse il path) e senza virgolette di sorta

inoltre, gli script che usano rjb misteriosamente non mi funzionano se
eseguiti da scite, ma funzionano solo se richiamati da command line

detto questo, rjb è una ficata.

nel prossimo post (dopo pranzo) vi dico cosa ci faccio

baci
jeko


Da: [email protected] per conto di Stefano G.
Inviato: lun 10/12/2007 12.41
A: ruby-it
Oggetto: Ruby, windows e rjb

ciao ragazzi

qualcuno di voi usa rjb con windows? su linux non da nessun problema,
perche ci sono le variabili d’ambiente JAVA_HOME e LD_LIBRARY_PATH, ma
su windows non riesco a fargli “agganciare” la jvm e tutto quello che
ottengo è sempre un tristissimo

can’t create Java VM (RuntimeError)

:frowning:

ciao
jeko

la mia esigenza era di fare trasformazioni xml+xsl su una piattaforma
windows

ovviamente ho scelto ruby come linguaggio (quella era la costante :slight_smile: )

la soluzione ruby xslt su windows è scamuffa e poco performante, allora
ho passato in rassegna varie alternative e sono giunto alla soluzione
seguendo questi passi

  1. installare rjb (ruby-java binding)

gem install rjb

  1. scaricare xalan
    http://mirror.nohup.it/apache/xml/xalan-j/binaries/xalan-j_2_7_1-bin.zip

  2. impostare la variabile di sistema JAVA_HOME (per il mio sistema
    C:\Programmi\Java\jdk1.5.0_03)… ovviamnete il jdk deve essere
    installato e funzionante

lo script che uso è stato scopiazzato da
http://www.ruby-forum.com/topic/95050

ho seguito i consigli del tipo e l’ho adattato in modo da leggere un un
file xsl statico e una stringa come input xml
viene restituita una stringa (non ho delegato a java la responsabilitÃ
di scrivere l’out su disco… )

----------- XalanSupport.rb -------------

require ‘rjb’
module XalanSupport
def XalanSupport.load_Xalan_libraries
classpath = ‘’
[‘serializer.jar’, ‘xml-apis.jar’, ‘xercesImpl.jar’,
‘xalan.jar’].each do |lib_name|
classpath << “#{lib_name};”
end
Rjb::load(“#{classpath}”, [‘-Xmx512M’])
end
def XalanSupport.do_XSL_transform(instring, xsl_file_name)
XalanSupport.load_Xalan_libraries
string_reader_class = Rjb::import(‘java.io.StringReader’)
string_writer_class = Rjb::import(‘java.io.StringWriter’)
stream_source_class =
Rjb::import(‘javax.xml.transform.stream.StreamSource’)
stream_result_class =
Rjb::import(‘javax.xml.transform.stream.StreamResult’)
transformer_factory_class =
Rjb::import(‘javax.xml.transform.TransformerFactory’)
input_string_reader = string_reader_class.new(instring)
output_string_writer = string_writer_class.new
source = stream_source_class.new(input_string_reader)
result = stream_result_class.new(output_string_writer)
transformer_factory = transformer_factory_class.newInstance
transformer =
transformer_factory.newTransformer(stream_source_class.new(xsl_file_name))
transformer.transform(source, result)
result.getWriter.getBuffer.toString
end
end

--------- end XalanSupport.rb ------------

lo potete usare cosi

out = XalanSupport.do_XSL_transform(input_xml, ‘test.xsl’)
File.open(‘test.html’, ‘w’) do |f|
f.write out
end

bella!!!
jeko

  1. scaricare xalan http://mirror.nohup.it/apache/xml/xalan-j/binaries/xalan-j_2_7_1-bin.zip

A proposito, ci stavo giocando giusto oggi, e devo dire che sono un
po’ deluso. Ha messaggi di errore del tutto incomprensibili e/o
irrilevanti, e non sono mai riuscito a farlo funzionare. Poi,
xsltproc mi sembra piu` completo e veloce in ogni caso. Risultato: mi
tengo xsltproc, anche se qualcosa in Java mi sarebbe stato comodo.


David N. Welton

http://www.welton.it/davidw/

http://www.dedasys.com/

agree 100% con i messaggi di errore… brutti e incomprensibili…
purtroppo su win32 mi è difficile usare xsltproc e avrei potuto usare
msxml con win32 (che alla fine non si comporta per niente male) solo che
volevo una soluzione piu portabile…

confermo anche che dal punto di vista prestazionale, passare per java
non è niente di che… anzi… però mi sono divertito a farla in barba a
tutti i javisti che sono accanto a me che ad ogni modifica devono
ricompilare tutto :slight_smile:

jeko


Da: [email protected] per conto di David W.
Inviato: lun 10/12/2007 16.31
A: ruby-it
Oggetto: Re: [ruby-it] Trasformazioni xml + xsl con Ruby,rjb e un
pizzico di java (xalan)

  1. scaricare xalan http://mirror.nohup.it/apache/xml/xalan-j/binaries/xalan-j_2_7_1-bin.zip

A proposito, ci stavo giocando giusto oggi, e devo dire che sono un
po’ deluso. Ha messaggi di errore del tutto incomprensibili e/o
irrilevanti, e non sono mai riuscito a farlo funzionare. Poi,
xsltproc mi sembra piu` completo e veloce in ogni caso. Risultato: mi
tengo xsltproc, anche se qualcosa in Java mi sarebbe stato comodo.


David N. Welton

http://www.welton.it/davidw/

http://www.dedasys.com/


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml