Closed AlexDicy closed 5 years ago
@HAlex In realtà la problematica è leggermente più complessa da affrontare, e stiamo considerando le possibili migliorie da applicare alla gestione di queste query... Di fatto applicare questa modifica bloccherebbe tutte le tabelle che utilizzano una query per il campo di ricerca.
Capisco, potresti spiegarmi meglio l'ultima frase? Non ho riscontrato questa problematica
Un semplice esempio può essere il codice degli Interventi: per permettere il corretto ordinamento, la query necessaria è CAST(in_interventi.codice AS UNSIGNED)
, che diventerebbe `CAST(in_interventi.codice AS UNSIGNED)`
provocando un errore.
Di fatto, abbiamo riscontrato il problema inverso nei campi per la personalizzazione della ricerca (_searchinside), dove la presenza degli apici automatici può provocare malfunzionamenti in determinate condizioni.
L'utilizzo del metodo prepare() dovrebbe essere limitato all'aggiunta dei valori di input all'interno delle query, che comunque dovrebbe essere evitato in favore di altri sistemi più sicuri (Prepared Statements #160, ORM #102).
Grazie per l'informazione, non avevo notato l'ordinamento degli impianti avendolo modificato
@HAlex Con il commit d255b538e353c5c4ac6f94544c384bbc3493c513 il problema dovrebbe essere stato risolto. Ora anche i campi _searchinside devono essere gestiti completamente dal programmatore (come _orderby).
@devcode-it/openstamanager Ho inoltre automatizzato l'aggiunta dei permessi per le nuove Viste.
fare un prepare sull'alias non porta purtrippo a nulla. attualmente questa problematica l'ho risolta così:
$as = $total['order_by'][$order['column']];
$record = $dbo->fetchArray("SELECT query FROM zz_views WHERE name='$as'");
$module_query = implode('ORDER', $pieces).' ORDER BY '.$record[0]['query'].' '.$order['dir'];
Sono andato a recuperare l'effettivo nome della colonna tramite l'alias e sono andato a inserirlo al posto del suddetto. Attualmente a me funziona anche per altre viste e per altri campi come Città, che andando a prendere l'alias con la 'à' dava comunque errore
Quando viene utilizzata la funzione search del DataTable per le Anagrafiche, la ricerca tramite Ragione sociale causa dei problemi, ovvero, la query SQL non è valida perché nella parte
ORDER BY Ragione sociale
mancano le virgolette, può essere risolto molto facilmente utilizzando la funzioneprepare
in questo modo https://github.com/devcode-it/openstamanager/blob/6c0cd2a8cf788917c445d85491a1e263aeb81877/ajax_dataload.php#L76 Dovrebbe essere rimpiazzato con(notare il prepare
prepare($total['order_by'][$order['column']])
)