Php
// credenziali del database
$ serverName ="localhost";
$ username ="nome utente";
$ password ="password";
$ dbname ="mydatabase";
// Crea connessione
$ Conn =new Mysqli ($ serverName, $ username, $ password, $ dbname);
// Controlla la connessione
if ($ conn-> connect_error) {
die ("connessione non riuscita:". $ Conn-> connect_error);
}
// Dettagli di caricamento del file
$ target_dir ="uploads/";
$ target_file =$ target_dir. basename ($ _ files ["filetoupload"] ["nome"]);
$ uploadok =1;
$ ImageFileType =StrTOLower (pathInfo ($ target_file, pathinfo_extension));
// Controlla se il file di immagine è un'immagine effettiva o un'immagine falsa
if (ISSET ($ _ POST ["Invia"]) {
$ check =getImageSize ($ _ files ["FileToupload"] ["tmp_name"]);
if ($ check! ==false) {
Echo "Il file è un'immagine -". $ check ["mime"]. ".";
$ uploadok =1;
} altro {
echo "Il file non è un'immagine.";
$ uploadok =0;
}
}
// controlla se il file esiste già
if (file_exists ($ target_file)) {
echo "scusa, il file esiste già.";
$ uploadok =0;
}
// Controlla la dimensione del file
if ($ _files ["FileToupload"] ["dimensione"]> 500000) {
echo "Mi dispiace, il tuo file è troppo grande.";
$ uploadok =0;
}
// Consenti determinati formati di file
if ($ ImageFileType! ="JPG" &&$ ImageFileType! ="Png" &&$ ImageFileType! ="JPEG"
&&$ ImageFileType! ="GIF") {
Echo "Sormati, sono consentiti solo i file JPG, JPEG, PNG e GIF.";
$ uploadok =0;
}
// controlla se $ uploadok è impostato su 0 con un errore
if ($ uploadok ==0) {
echo "Mi dispiace, il tuo file non è stato caricato.";
// Se tutto è ok, prova a caricare il file
} altro {
if (move_uploaded_file ($ _ files ["filetoupload"] ["tmp_name"], $ target_file)) {
Echo "il file". basename ($ _files ["filetoupload"] ["nome"]). "è stato caricato.";
// Inserisci i dettagli del file nel database
$ fileName =basename ($ _ files ["filetoupload"] ["nome"]);
$ file_path =$ target_file;
$ sql ="Insert in files (fileName, file_path) valori ('$ nome file', '$ file_path')";
if ($ conn-> query ($ sql) ===true) {
echo "nuovo record creato correttamente";
} altro {
Echo "Errore:". $ SQL. "
". $ Conn-> Errore;
}
} altro {
echo "Mi dispiace, c'è stato un errore di caricare il tuo file.";
}
}
$ Conn-> chiust ();
?>
`` `
Spiegazione:
1. Impostazione del database:
- Stabilisci una connessione al tuo database MySQL utilizzando l'estensione `mysqli`.
- Sostituisci segnaposto come `nome utente`,` password` e `myDatabase` con le credenziali effettive del database.
2. Gestione del caricamento del file:
- Utilizzare l'array superglobal `$ _files` per accedere alle informazioni sul file caricato.
- Imposta una directory target (`$ target_dir`) in cui il file verrà salvato.
- Eseguire la convalida di base:
- Controlla se il file caricato è un'immagine effettiva (usando `getImageSize`).
- Controlla se il file esiste già nella directory di destinazione.
- Controllare se la dimensione del file è nei limiti consentiti.
- Consenti solo determinati formati di file (ad es. JPG, PNG, GIF).
3. Archiviazione di file:
- Se la convalida passa, utilizzare `move_uploaded_file` per spostare il file caricato temporaneo nella directory di destinazione.
4. Inserimento del database:
- Dopo aver memorizzato correttamente il file, preparare una query SQL per inserire le informazioni sul file nel database.
- Questo in genere include il nome file e il percorso del file.
- Utilizzare il metodo `$ Conn-> query` per eseguire la query SQL.
Note importanti:
- Sicurezza: Convalidare sempre gli input dell'utente e i caricamenti di file per prevenire vulnerabilità di sicurezza come attacchi XSS o iniezione di file.
- Tabella del database: Assicurati di avere una tabella di database adatta per archiviare le informazioni sui file (ad es. Tabella `Files` con colonne come` fileName`, `file_path`,` file_size`, ecc.).
- Gestione degli errori: Gestire potenziali errori durante il caricamento dei file e l'inserimento del database. Visualizza messaggi appropriati all'utente.
- Limiti della dimensione del file: Prendi in considerazione l'impostazione dei limiti di dimensione del file appropriati per impedire il sovraccarico del server.
- Tipi di file: È possibile modificare i tipi di file consentiti in base ai requisiti dell'applicazione.
- Signitizzazione dei dati: Sanitare il nome del file e altri dati prima di memorizzarlo nel database per prevenire gli attacchi di iniezione di SQL.
- File di grandi dimensioni: Per la gestione di file di grandi dimensioni, considerare l'utilizzo di tecniche come il chunking o lo streaming carichi.
Ricorda di adattare questo frammento di codice ai requisiti specifici dello schema e del caricamento del database e dei file.
Programmazione © www.354353.com