`` `php
PHP
// Database -referenties
$ serverName ="localhost";
$ gebruikersnaam ="gebruikersnaam";
$ wachtwoord ="wachtwoord";
$ dbName ="myDatabase";
// verbinding maken
$ conn =new mysqli ($ serverName, $ gebruikersnaam, $ wachtwoord, $ dbName);
// Controleer de verbinding
if ($ conn-> connect_error) {
Die ("Verbinding mislukt:". $ conn-> connect_error);
}
// Bestand upload details
$ target_dir ="uploads/";
$ target_file =$ target_dir. basename ($ _ bestanden ["filetoupload"] ["naam"]);
$ uploadok =1;
$ imageFiletype =strtolower (Pathinfo ($ target_file, pathinfo_extension));
// Controleer of het afbeeldingsbestand een daadwerkelijke afbeelding of nep -afbeelding is
if (isset ($ _ post ["indienen"])) {
$ check =getImagesize ($ _ bestanden ["filetoupload"] ["tmp_name"]);
if ($ check! ==false) {
Echo "Bestand is een afbeelding -". $ check ["mime"]. ".";
$ uploadok =1;
} else {
echo "bestand is geen afbeelding.";
$ uploadok =0;
}
}
// Controleer of het bestand al bestaat
if (file_exists ($ target_file)) {
echo "sorry, bestanden bestaat al.";
$ uploadok =0;
}
// Controleer het bestandsgrootte
if ($ _files ["filetoupload"] ["size"]> 500000) {
echo "Sorry, uw bestand is te groot.";
$ uploadok =0;
}
// Sta bepaalde bestandsindelingen toe
if ($ imageFiletype! ="jpg" &&$ imageFiletype! ="png" &&$ imageFiletype! ="jpeg"
&&$ imageFiletype! ="gif") {
Echo "Sorry, alleen JPG, JPEG, PNG &GIF -bestanden zijn toegestaan.";
$ uploadok =0;
}
// Controleer of $ uploadok is ingesteld op 0 door een fout
if ($ uploadok ==0) {
echo "Sorry, uw bestand is niet geüpload.";
// Als alles in orde is, probeer dan het bestand te uploaden
} else {
if (move_uploaded_file ($ _ bestanden ["filetoupload"] ["tmp_name"], $ target_file)) {
echo "het bestand". basename ($ _files ["filetoupload"] ["naam"]). "is geüpload.";
// Details invoegen in database
$ bestandsnaam =basename ($ _ bestanden ["filetoupload"] ["name"]);
$ file_path =$ target_file;
$ sql ="invoegen in bestanden (bestandsnaam, bestand_path) waarden ('$ bestandsnaam', '$ file_path')";
if ($ conn-> query ($ sql) ===true) {
echo "Nieuw record met succes gemaakt";
} else {
echo "error:". $ SQL. " ". $ conn-> fout;
}
} else {
echo "Sorry, er was een foutmelding die uw bestand uploadde.";
}
}
$ conn-> close ();
?>
`` `
Verklaring:
1. Database -instelling:
- Leg een verbinding tot stand met uw MySQL -database met behulp van de `mysqli` -extensie.
- Vervang tijdelijke aanduidingen zoals `gebruikersnaam ',` wachtwoord' en `myDatabase` door uw werkelijke database -referenties.
2. Bestand uploadafhandeling:
- Gebruik de `$ _files` Superglobal Array om toegang te krijgen tot informatie over het geüploade bestand.
- Stel een doelmap (`$ target_dir`) in waar het bestand wordt opgeslagen.
- Voer basisvalidatie uit:
- Controleer of het geüploade bestand een daadwerkelijke afbeelding is (met behulp van `getImagesize`).
- Controleer of het bestand al bestaat in de doelmap.
- Controleer of de bestandsgrootte binnen toegestane limieten ligt.
- Sta alleen bepaalde bestandsindelingen toe (bijv. JPG, PNG, GIF).
3. Bestandsopslag:
- Als de validatie voorbijgaat, gebruikt u `Move_Uploaded_File` om het tijdelijke geüpload bestand naar de doelmap te verplaatsen.
4. Insertie van database:
- Nadat u het bestand succesvol hebt opslaan, kunt u een SQL -query voorbereiden om de bestandsinformatie in uw database in te voegen.
- Dit omvat meestal de bestandsnaam en het pad naar het bestand.
- Gebruik de methode `$ conn-> query` om de SQL-query uit te voeren.
belangrijke opmerkingen:
- Beveiliging: Valideer altijd gebruikersinvoer en bestandsuploads om beveiligingskwetsbaarheden zoals XSS -aanvallen of bestandsinjectie te voorkomen.
- Databasetabel: Zorg ervoor dat u een geschikte databasetabel hebt om bestandsinformatie op te slaan (bijv. 'Bestanden' Tabel met kolommen zoals `bestandsnaam ',` File_Path`, `File_Size`, enz.).
- Foutafhandeling: Behandel potentiële fouten tijdens het uploaden van bestand en database -invoeging. Geschikte berichten weergeven aan de gebruiker.
- Limieten voor bestandsgrootte: Overweeg de juiste limieten voor bestandsgrootte in te stellen om serveroverbelasting te voorkomen.
- Bestandstypen: U kunt de toegestane bestandstypen wijzigen op basis van de vereisten van uw applicatie.
- Gegevensinvoering: Saniteer de bestandsnaam en andere gegevens voordat u deze in de database opslaat om SQL -injectieaanvallen te voorkomen.
- Grote bestanden: Overweeg voor het hanteren van grote bestanden technieken zoals chunking of streaming uploads.
Vergeet niet om dit codefragment aan te passen aan uw specifieke databaseschema en vereisten voor het uploaden van bestand. |