Διαχείρισις HTMLInputElement τύπου File.

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

Διαχείρισις HTMLInputElement τύπου File.

Δημοσίευση από nikirtsi » 03 Νοέμ 2007 11:27

Χθές μού ήρθε μια ιδέα όπου όσο μέ παραξένεψε άλλο τόσο με έριξε στα ποιό βαθεία τής
μελέτης τής.

Άς πούμε πώς έχουμε τόν παρακάτω κώδικα...

Κώδικας: Επιλογή όλων

<html>
	<head><title>Can auto upload file?</title></head>
	<body>
		<form>
			text&#58; <input type="text" name="dataText" size="40" /> <br/>
		</form>

		<script type="text/javascript">
			document.forms&#91;0&#93;.dataText.value = "A DataText value";			
		</script>
	</body>
</html>
Πρόκειτε για ένα πολλή απλό παράδειγμα αυτοματοποιημένεης εισαγωγής τιμής
σε ένα πεδίο της άνωθιν φόρμας.

Όλα καλώς..
Έν παραδείγματι θα μπορούσα σε αυτό τό πεδίο να έβαζα
αυτοματοποιημένως τήν τοπική ώρα τού χρήστου,
νά πραγματοποιούσα αυτοματοποιημένα αποστολλή.

Κώδικας: Επιλογή όλων

<script type="text/javascript"> forms&#91;0&#93;.submit; </script>
καί κατ' επέκτασιν νά εμφάνιζα τήν διαφορά ώρας (τού χρήστου) από τόν διακομιστή μου.

Νά άς πούμε ένα παράδειγμα μιάς καλής ιδέας γιά αυτοματοποιημένες αποστολλές πληροφοριών από τό περιβάλλον τού χρήστου.

Ώς εδώ η ιδέα ακούγεται θαυμάσια.
(Άν και θα μπορούσε να υλοποιηθεί ποιό απλα, άς μείνουμε σε αυτήν τήν λογική)


Μέσα στόν υγιή νηρμό τής σκέψεως μου,μπαίνει ένα διαβολάκι και μου τα ανατρέπει όλα.
Τί γίνετε άν τό HTMLInputElement δέν είναι ώς αναφέρω ένα πεδίο κειμένου, αλλά ένα όνομα αρχείου (τύπου file);
Δηλαδή θα μπορούσα με τήν ίδια λογική να πραγματοποιήσω μια αυτοματοποιημένη αποστολλή μίας φόρμας με multipart/form-data enctype
και ακόμα χειρότερως να καθορίσω εγώ (ως προγραμματιστής) αυτοματοποιημένως τό περιεχόμενο τού πεδίου τύπου file ;

Αυτό θα δημιουργούσε ώς καταλαβένετε ουσιαστικά προβλήματα ασφαλείας αφού θα είχα τήν ικανότητα νά "ανεβάζω" ότι προσωπικό αρχείο του ήθελα, χωρίς τήν άδεια τού χρήστου....

Βρίσκω έναν υπολογιστή και αρχίζω να βάζω τήν ιδέα στό μικροσκόπιο...
Προς έκπληξιν μου διαπίστωσα πώς
Η οποιαδήποτε επεξεργασία HTMLInputElement τύπου file από Javascript
δέν επιτρέπεται καί προκαλλεί εξαίρεσι στήν εκτέλεσι του λοιπού κώδικα.

O Firefox 2.x απαντά μέ μιά εξαίρεση
Σφάλμα: uncaught exception: [Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "file:///C:/test/FileUpload.html Line: 14"]

Καί κάπου εκεί πέφτω μέ έναν αποτυχημένο έλεγχό για ύπνο.
Άν θέλη κάποιος να παραδειγματίση τά όσα αναφέρω άς ρίξει μιά ματιά στόν εξής κώδικα.

Κώδικας: Επιλογή όλων

<html>
	<head><title>Can auto upload file?</title></head>
	<body>
		<form enctype="multipart/form-data" method="post">
			file&#58; <input type="file" name="dataFile" size="40" /> <br/>
			text&#58; <input type="text" name="dataText" size="40" /> <br/>
		</form>

		<script type="text/javascript">
			document.writeln &#40;"Form WITH multipart/form-data enctype<hr/>"&#41;;
			document.writeln &#40;"<strong>Set values of this form</strong><br/>"&#41;;
			document.writeln &#40;"dataFile.value= A DataFile value<br/> "&#41;;
			document.writeln &#40;"dataText.value= A DataText value<br/> "&#41;;
			//document.forms&#91;0&#93;.dataFile.value = "A DataFile value";
			document.forms&#91;0&#93;.dataText.value = "A DataText value";
			document.writeln &#40;"<strong>Get values of this form</strong><br/>"&#41;;
			document.writeln &#40;"dataFile.value= " + document.forms&#91;0&#93;.dataFile.value + "<br/>"&#41;;
			//document.writeln &#40;"dataFile.value=" + document.forms&#91;0&#93;.dataFile.value + "<br/>" &#41;;
			document.writeln &#40;"dataText.value=" + document.forms&#91;0&#93;.dataText.value + "<br/>" &#41;;
		</script>
	</body>
</html>
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Διαχείρισις HTMLInputElement τύπου File.

Δημοσίευση από skeftomilos » 04 Νοέμ 2007 15:57

Για τη διαφορά ώρας δε χρειάζεται να γίνει submit ώστε να υπολογιστεί η διαφορά στον server. Μπορεί να σταλεί εξαρχής η ώρα του server και να γίνει ο υπολογισμός στον client:

Κώδικας: Επιλογή όλων

<script>var SERVER_TIME = new Date&#40;'<%=DateTime.Now.ToString&#40;"R"&#41;%>'&#41;</script>
Η τιμή των στοιχείων <input type="file"> είναι readable αλλά όχι writable με scripting, για λόγους ασφαλείας.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες