PHP, uppladdningsskript
Jag var en gång i tiden riktigt vass på PHP, dock märkte jag i dag, när jag skulle göra ett uppladdningsskript, hur förbannat snabbt kunskaperna försvinner om man inte sysslar med det regelbundet.
Skulle någon kunna snygga upp den här otroligt fula PHP-koden som jag har knåpat ihop nu under kvällen? Det vore guld värt.
<?php
$upload_dir = 'uploaded_files/';
$chosen_file = $_FILES['chosen_file']['name'];
$file_type = explode('.', $chosen_file);
$file_type = $file_type[count($file_type)-1];
$allowed_file_types = array('png', 'jpg', 'jpeg');
$file_size = $_FILES['chosen_file']['size'];
$max_size = (1024*25000);
$submit = $_POST['upload_submit'];
$new_filename = rand(0, 9) . rand(0, 9) . rand(0, 9) . rand(0, 9) . '.' . $file_type;
if (isset($submit))
{
if (empty($chosen_file))
{
$message = 'Du valde <strong>INTE</strong> en fil.';
}
else
{
if (empty($chosen_file))
{
$message = 'Filens filtyp kunde <strong>INTE</strong> utläsas.';
}
else
{
if (!in_array($file_type, $allowed_file_types))
{
$message = 'Filtypen ' . $file_type . ' är <strong>INTE</strong> tillåten.';
}
else
{
if ($file_size > $max_size)
{
$message = 'Filen är <strong>FÖR STOR</strong>.';
}
else
{
move_uploaded_file($_FILES['chosen_file']['tmp_name'], $upload_dir.$new_filename);
$message = 'Filen är uppladdad och finns <a href="uploaded_files/' . $new_filename . '">här</a>!';
}
}
}
}
}
if (!empty($message))
{
$message = '<div id="message_area">' . $message . '</div>' . "\n";
}
?>
Funderingar:
Vad jag minns, från dagarna då jag faktiskt var någorlunda duktig på att koda, är att jag inte alls skrev en massa else-satser efter varandra på det här viset – utan då hade jag någon array, har jag för mig, som fylldes med värden utifall att filtypen inte accepterades, eller dylikt, och i slutändan visades alla meddelanden, ifall arrayen inte var tom givetvis. Någon som förstår vad jag syftar på, och kan demonstrera ett exempel?
Vad skriver man för att slumpa fram en bokstav mellan a-zA-Z?
EDIT:
För att slumpa fram en bokstav mellan A-Z: chr(rand(65,90))
För att slumpa fram en bokstav mellan a-z: chr(rand(97,122))