Χριστοφορίδης Ιωάννης Ραφαήλ
Σχεδιασμός πληροφοριακού συστήματος διαχείρισης μητρώου
υλικών
53
Καταρχάς, στο html μέρος του κώδικα, η φόρμα πρέπει να έχει την μορφή
enctype="multipart/form-data", ώστε να μπορεί να δεχθεί δεδομένα (εικόνα). Όταν ο χρήστης
ανεβάσει την εικόνα μπορούμε να την επεξεργαστούμε. Αρχικά ελέγχουμε αν αυτό που
έστειλε ο χρήστης είναι εικόνα από τον υπολογιστή του ή url με την εικόνα (εκεί δεν την
ανεβάζουμε στον server). Αφού γίνει αυτό ελέγχουμε αν είναι αποδεκτός τύπος εικόνας. Οι
αποδεκτοί τύποι είναι: gif, jpeg, bmp, jpg, png
Εφόσον γίνουν οι απαραίτητοι έλεγχοι, ορίζουμε το όνομα με το οποίο θα ανέβει η
εικόνα. Το format που χρησιμοποιεί το σύστημα είναι dximage + ένα αλφαριθμιτικό που
εξάγει η php ανάλογα με την ώρα + ένα κομμάτι από το hash του ονόματος του πεδίου που
είναι να μπει. Αυτό γίνεται για να μην υπάρχουν 2 εικόνες με το ίδιο όνομα. Στην συνέχεια
αποθηκεύεται με την κατάληξη n (normal) και προχωράμε στην δημιουργία thumbnail. Ο
κώδικας αναλύει προσεκτικά τις διαστάσεις και αναλογίες της εικόνας. Ανάλογα με το ύψος
και το μήκος της, την διαμορφώνει κατάλληλα, ώστε να έχει μέγιστο ύψος 100 pixels και
μέγιστο μήκος 100 pixels. Τέλος αποθηκεύει και το thumbnail με κατάληξη t. Το thumbnail
δημιουργείται για να γίνεται γρηγορότερη η φόρτωση των εικόνων όταν ο χρήστης βλέπει ένα
ή περισσότερα αντικείμενα. Βέβαια, αν ο χρήστης θελήσει να δει ολόκληρη την εικόνα μπορεί
να πατήσει πάνω στο thumbnail και να μεταβεί εκεί που βρίσκεται η κανονική εικόνα. Σε
περίπτωση που ο χρήστης βάλει κάποιο λάθος πεδίο, όλες οι ανεβασμένες εικόνες στην
φόρμα αυτή πρέπει να διαγραφούν, από όπου βγαίνει και η συνάρτηση learntoread:
function learntoread(){global $damnnoob,$nowihavetodeletethem;
if($damnnoob==0){return;}
for($x=1;$x<=$damnnoob;$x++){$todelete=$nowihavetodeletethem[$x];
$pieces = explode(".", $todelete);
if($pieces[1]=="zip"){unlink('files/'.$todelete);}else{$proxnormal=$pieces[0]."n.".$pieces[1];
$proxthumb=$pieces[0]."t.jpeg";
unlink('upload/'.$proxnormal);
unlink('upload/'.$proxthumb);}}return;}
Εδώ χρησιμοποιούνται οι global μεταβλητές που σε αυτές είναι αποθηκευμένες τα
στοιχεία των εικόνων που μόλις ανέβηκαν. Ο κώδικας τις διαγράφει με την εντολή unlink.