`` php
Php
// Database -legitimasjon
$ servername ="localhost";
$ brukernavn ="brukernavn";
$ passord ="passord";
$ dbname ="myDatabase";
// Opprett tilkobling
$ conn =new mysqli ($ servernavn, $ brukernavn, $ passord, $ dbname);
// Kontroller tilkobling
if ($ conn-> connect_error) {
die ("Forbindelse mislyktes:". $ conn-> connect_error);
}
// Filopplastningsdetaljer
$ Target_Dir ="Uploads/";
$ Target_File =$ Target_Dir. basename ($ _ filer ["filetoUpload"] ["name"]);
$ uploadok =1;
$ ImageFileType =StrTolower (PathInfo ($ Target_File, PathInfo_Extension));
// sjekk om bildefil er et faktisk bilde eller et falskt bilde
if (isset ($ _ post ["send"])) {
$ check =getImageSize ($ _ filer ["filetoUpload"] ["tmp_name"]);
if ($ sjekk! ==falsk) {
Echo "-fil er et bilde -". $ sjekk ["mime"]. ".";
$ uploadok =1;
} annet {
ekko "-fil er ikke et bilde.";
$ uploadok =0;
}
}
// sjekk om filen allerede eksisterer
if (file_exists ($ target_file)) {
ekko "Beklager, filen eksisterer allerede.";
$ uploadok =0;
}
// sjekk filstørrelse
if ($ _files ["filetoUpload"] ["størrelse"]> 500000) {
ekko "Beklager, filen din er for stor.";
$ uploadok =0;
}
// Tillat visse filformater
if ($ imagefiletype! ="jpg" &&$ imagefiletype! ="png" &&$ imagefiletype! ="jpeg"
&&$ imagefiletype! ="gif") {
Echo "Beklager, bare JPG, JPEG, PNG &GIF -filer er tillatt.";
$ uploadok =0;
}
// sjekk om $ uploadok er satt til 0 med en feil
if ($ uploadok ==0) {
ekko "Beklager, filen din ble ikke lastet opp.";
// Hvis alt er i orden, kan du prøve å laste opp fil
} annet {
if (move_uploaded_file ($ _ files ["filetoUpload"] ["tmp_name"], $ target_file)) {
ekko "filen". basename ($ _files ["filetoUpload"] ["name"]). "Har blitt lastet opp.";
// Sett inn fildetaljer i databasen
$ filnavn =basename ($ _ filer ["filetoUpload"] ["name"]);
$ file_path =$ Target_file;
$ sql ="Sett inn i filer (filnavn, file_path) verdier ('$ filnavn', '$ file_path')";
if ($ conn-> spørring ($ sql) ===true) {
ekko "ny plate opprettet vellykket";
} annet {
ekko "Feil:". $ sql. ""
". $ conn-> feil;
}
} annet {
ekko "Beklager, det var en feil som lastet opp filen din.";
}
}
$ conn-> close ();
?>
`` `
Forklaring:
1. Databaseoppsett:
- Etabler en forbindelse til MySQL -databasen din ved å bruke `MySQLI` -utvidelsen.
- Bytt ut plassholdere som `brukernavn`,` passord` og `mydatabase` med din faktiske databaseopplysning.
2. Filopplasting Håndtering:
- Bruk Superglobal -matrisen `$ _Files` for å få tilgang til informasjon om den opplastede filen.
- Sett opp en målkatalog (`$ Target_Dir`) der filen vil bli lagret.
- Utfør grunnleggende validering:
- Sjekk om den opplastede filen er et faktisk bilde (ved hjelp av `getImageSize`).
- Sjekk om filen allerede finnes i målkatalogen.
- Kontroller om filstørrelsen er innenfor tillatte grenser.
- Tillat bare visse filformater (f.eks. JPG, PNG, GIF).
3. Fillagring:
- Hvis validering passerer, bruk `move_uploaded_file` for å flytte den midlertidige opplastede filen til målkatalogen.
4. Databaseinnsetting:
- Etter å ha lagret filen, utarbeide en SQL -spørring for å sette inn filinformasjonen i databasen din.
- Dette inkluderer vanligvis filnavnet og banen til filen.
- Bruk metoden `$ conn-> spørring` for å utføre SQL-spørringen.
Viktige merknader:
- Sikkerhet: Valider alltid brukerinngang og filopplastinger for å forhindre sikkerhetsproblemer som XSS -angrep eller filinjeksjon.
- Databasetabell: Forsikre deg om at du har en passende databasetabell for å lagre filinformasjon (f.eks. `Files` -tabell med kolonner som` filnavn`, `file_path`,` file_size`, etc.).
- Feilhåndtering: Håndter potensielle feil under filopplasting og innsetting av database. Vis passende meldinger til brukeren.
- Filstørrelsesgrenser: Vurder å angi passende filstørrelsesgrenser for å forhindre overbelastning av server.
- filtyper: Du kan endre de tillatte filtypene basert på applikasjonens krav.
- Data Sanitisering: Sanitiser filnavnet og andre data før du lagrer den i databasen for å forhindre SQL -injeksjonsangrep.
- Store filer: For å håndtere store filer, bør du vurdere å bruke teknikker som chunking eller streamingopplastinger.
Husk å tilpasse dette kodebiten til det spesifikke databaseskjemaet og filopplastingskravene.