fopen ritorna false in caso non riesca ad aprire il puntatore.Posso chiedere quali controlli sarebbe utile fare?
Per essere pignoli bisognerebbe fare un check e gestire l'errore, comunque hai fatto strlen sui dati caricati dal file, quindi il problema non è sulla lettura del file.
Da quello che vedo potresti avere altri due problemi.
Vuoi caricare file da 64MB ma php ha massimo 64MB a disposizione.
Ma se guardi lo script ti accorgerai che potresti trovarti con una variabile $content di 64MB, che poi vai ad inserire su un altra variabile (la query) che quindi a sua volta avrà bisogno di 64MB + extra.
Questo è un errore, perchè c'è la possibilità che php non riesca ad allocare abbastanza memoria per terminare lo script.
Poi noto altri "errori".
Vedo che prendi parametri get e post e li controlli in modo insufficiente.
Visto che usi mysql ti consiglio vivamente di usare mysql_real_escape_string che è la funzione specifica per poter inserire tranquillamente una stringa in una query. Anche mysql_escape_string potrebbe risultare insufficiente se si sta utilizzando una codifica particolare per le comunicazioni.
Questo problema di sicurezza tra l'altro può essere la causa dei tuoi mali.
In un file binario è molto probabile che prima o poi si incontri un char strano, in grado di mandare in errore la query.
Con
$content = " bla bla bla data='".mysql_real_escape_string($content,$dbresou rce)."' bla bla;";
vai tranquillo.
Non potrebbe esistere niente di meglio.
L'unica cosa da tener presente è che mysql_real_escape_string non fa l'escape dei caratteri % ed _.
Ma quello riguarda i pattern di confronto, non è il caso di un insert, quindi in questo caso non va fatto l'escape.
Poi ti consiglio di usare la stessa variabile dei dati binari per costruire la stringa come ho fatto nell'esempio sopra.
Così eviti di istanziare due variabili praticamente identiche che ti occupano memoria per niente.
![]()


Rispondi quotando