Hej er der en som kan hjælpe med at konfigurerer min file uploader?? som den er nu kan brugeren uploade et logo el.efter at brugeren er logget ind... den uploader billede filnavnet i databasen og lægger selve billedefilen i en mappe.. problemet er at jeg ikke kan få billedet tilknyttet den bruger som har uploadet billedet hvilket er ganske upraktisk da billedet skal tilknyttes en profil tekst smil...Min uploader ser sådan her ud<?php
if (isset($_FILES['filnavn'])) {print "Fil der er blevet overført:{$_FILES['filnavn']['name']}<p>\n";
$query = "INSERT INTO medlemmer SET billede='".$_FILES['filnavn']['name']."'";
$Result1 = mysql_query($query, $cms) or die(mysql_error());
}
{
$tempfile = $_FILES['filnavn']['tmp_name'];
$destination = "kundelogo/{$_FILES['filnavn']['name']}";
copy($tempfile, $destination);
}
?>
<form id="form1" name="form1" enctype="multipart/form-data" method="POST">
<label for="filnavn"></label>
<input type="file" name="filnavn" id="filnavn" />
<br />
<label for="Upload Logo"></label>
<input type="submit" name="Upload Logo" id="Upload Logo" value="Upload Logo" />
<input name="id" type="hidden" id="id" value="<?php echo $row_rsuser['id']; ?>" />
</form>
Jeg har lige siddet og leget lidt med det. For at sikre dig selv i hoved og numse for fejl og andet skrammel skal du først og fremmest have nogle valideringer på. Du er vel ikke så interesseret i at en exe fil bliver lagt op på din server???
Desuden vil det vel ikke gøre noget hvis brugerens billede opdateres. I dit tilfælde vil den bare indsætte en ny række - og ikke opdatere det gamle. Samtidig med det vil du have en stor stak ubrugelige billeder på din server som ikke er i brug. Det træls!
Jeg er i mit lidt gode hjørne i dag og har derfor siddet og "videreudviklet" lidt på dit script.
function upload_kundelogo() {
// Definerer filen
$file_name = $_FILES['file']['name'];
$random_digit=rand(000000,999999);
// Omdøber filnavnet til noget unikt
$new_file_name=$random_digit.$file_name;
// Angiver placeringen til filen
$upload_path = "kundelogo/".$new_file_name;
// Tjekker om filen eksisterer
if (!file_exists($upload_path)) {
// Går ud fra brugeren har en session eller andet du kan genkende brugeren på. I mit eksempel har brugeren en Session som hedder medlemsID.
$query ="SELECT * FROM medlemmer WHERE medlemsID = '{$_SESSION[medlemsID]}' LIMIT 1";
$result = mysql_query($query);
$eksisterende_file = mysql_fetch_array($result);
$file_path = $eksisterende_file['billede'];
// Jeg har som standard valgt at angive at brugeren skal have et "Kommer Snart" billede. Dette er defineret i databasen.
if ($file_path == 'images/Billede_kommer_snart.jpg') {
} else {
//Hvis filen eksisterer skal den slettes. Den skal alligevel ikke bruges mere.
unlink($file_path);
}
// Tjekker lige om filen er al for stor.
if ($_FILES['file']['size'] < 200000000 && $_FILES['filnavn']['size'] > 0) {
if ($_FILES['filnavn']['error']) {
echo "Error: " . $_FILES['file']['error'];
} else {
// Flyt filen til destinationsmappen
move_uploaded_file($_FILES['filnavn']['tmp_name'], $upload_path);
// Opdater brugerens billede
$query = "UPDATE medlemmer SET billede = '{$upload_path}' WHERE medlemsID = '{$_SESSION[medlemsID]}'";
// Logo er nu opdateret!";
$result = mysql_query($query);
// Hvis handlingen blev udført korrekt skal den da lige sige Super godt!
if (mysql_affected_rows() == 1) {
print "Super Godt!";
} else {
print "Kunne ikke opdatere billedet";
}
}
// Hvis filtypen ikke understøttes : Filen er for stor skal den lige fejlmeddele.
} else {
print $_FILES['filnavn']['size'] < 1 ? 'Ukorrekt filnavn.' : 'Filen er for stor';
}
}
else {
// Hvis filen allerede eksisterer skal dette meddeles
print "Filen eksisterer allerede.";
}
}
Mit eksempel er så lavet efter at brugeren allerede er oprettet, siden funktionen skal kunne opdatere efter en SESSION. Håber det er en hjælp. Har ikke lige fået angivet tilladte filtyper, men det skulle være en smal sag...
Hilsner Lasse