27-04-2010, 12:25 AM
Καταρχάς, χρόνια και ζαμάνια LP!
Τον τελευταίο καιρό (δηλαδή σχεδόν ένα χρόνο ) ασχολούμουν λίγο με τον προγραμματισμό και για αυτό δεν έμπαινα συχνά (δηλαδή ποτέ ). Ασχολήθηκα κυρίως με C++. Έφτιαξα νέο thread λόγο "πολυπλοκότητας" των ερωτήσεων.
Στο θέμα: Δημιουργώ σε C++ ένα quiz το οποίο θέλω να έχει online scoreboard (ο.Ο). Επέλεξα να χρησιμοποιήσω ως server (τουλάχιστον προσωρινά) τον υπολογιστή μου. Μετά από πολύ ψάξιμο, εγκατέστησα το xampp και (μέσω αυτού) το apache. Έφτιαξα ένα server στον οποίο μπορώ να ανεβάζω τα αρχεία μου αλλά μόνο από τους υπολογιστές του δικτύου μου, κι όχι απ’ το διαδίκτυο. Μετά χρειαζόμουν ένα τρόπο να ανεβάσω τα αρχεία. Βρήκα μία library σε C++ (curl) την εγκατέστησα (τρομερά χρονοβόρο λόγο link errors) και μετά προσπάθησα να κάνω upload μερικά αρχεία στον ftp server μου. Δυστυχώς όμως έλαβα το παρακάτω error όταν έτρεξα το πρόγραμμα στο debug mode “_CrtIsValidHeapPointer(pUserData)”. Δεν βρήκα λύση, οπότε έψαξα τρόπο για να κάνω τη δουλεία μέσω php. Εκεί κάτι βρήκα. Δουλεύει μία χαρά, αλλά θέλω να το τροποποιήσω λίγο: δεν θέλω ο χρήστης να επιλέγει τι αρχείο θα ανεβάσει, αλλά μόλις μπαίνει στη συγκεκριμένη ιστοσελίδα, ένα συγκεκριμένο αρχείο από τον υπολογιστή του να ανεβαίνει αυτόματα στον server μου (το txt με τα score) ή να μπορώ εγώ μέσω της C++ να ελέγξω τον browser και να τον κάνω να ανεβάσει το αρχείο που θέλω (αν γίνεται, σίγουρα δεν θα είναι εύκολο).
Συνοψίζω:
Α) Πως κάνω τον server μου διαθέσιμο στο internet και όχι μόνο στο τοπικό δίκτυο, π.χ. μέσω του apache (btw, πρέπει να κάνω την ip μου static);
Β) Τι αλλαγές πρέπει να γίνουν στους παρακάτω κώδικες ώστε μόλις ο χρήστης εισέλθει στην ιστοσελίδα μου να ανεβαίνει κατευθείαν από τον υπολογιστή του το αρχείο “C:/quiz/score.txt”, και όχι να του ζητείται τι αρχείο θα ανεβάσει;
(main.html)
<html>
<body>
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
(uploader.php)
<?php
// Where the file is going to be placed
$target_path = "uploads/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>
Τον τελευταίο καιρό (δηλαδή σχεδόν ένα χρόνο ) ασχολούμουν λίγο με τον προγραμματισμό και για αυτό δεν έμπαινα συχνά (δηλαδή ποτέ ). Ασχολήθηκα κυρίως με C++. Έφτιαξα νέο thread λόγο "πολυπλοκότητας" των ερωτήσεων.
Στο θέμα: Δημιουργώ σε C++ ένα quiz το οποίο θέλω να έχει online scoreboard (ο.Ο). Επέλεξα να χρησιμοποιήσω ως server (τουλάχιστον προσωρινά) τον υπολογιστή μου. Μετά από πολύ ψάξιμο, εγκατέστησα το xampp και (μέσω αυτού) το apache. Έφτιαξα ένα server στον οποίο μπορώ να ανεβάζω τα αρχεία μου αλλά μόνο από τους υπολογιστές του δικτύου μου, κι όχι απ’ το διαδίκτυο. Μετά χρειαζόμουν ένα τρόπο να ανεβάσω τα αρχεία. Βρήκα μία library σε C++ (curl) την εγκατέστησα (τρομερά χρονοβόρο λόγο link errors) και μετά προσπάθησα να κάνω upload μερικά αρχεία στον ftp server μου. Δυστυχώς όμως έλαβα το παρακάτω error όταν έτρεξα το πρόγραμμα στο debug mode “_CrtIsValidHeapPointer(pUserData)”. Δεν βρήκα λύση, οπότε έψαξα τρόπο για να κάνω τη δουλεία μέσω php. Εκεί κάτι βρήκα. Δουλεύει μία χαρά, αλλά θέλω να το τροποποιήσω λίγο: δεν θέλω ο χρήστης να επιλέγει τι αρχείο θα ανεβάσει, αλλά μόλις μπαίνει στη συγκεκριμένη ιστοσελίδα, ένα συγκεκριμένο αρχείο από τον υπολογιστή του να ανεβαίνει αυτόματα στον server μου (το txt με τα score) ή να μπορώ εγώ μέσω της C++ να ελέγξω τον browser και να τον κάνω να ανεβάσει το αρχείο που θέλω (αν γίνεται, σίγουρα δεν θα είναι εύκολο).
Συνοψίζω:
Α) Πως κάνω τον server μου διαθέσιμο στο internet και όχι μόνο στο τοπικό δίκτυο, π.χ. μέσω του apache (btw, πρέπει να κάνω την ip μου static);
Β) Τι αλλαγές πρέπει να γίνουν στους παρακάτω κώδικες ώστε μόλις ο χρήστης εισέλθει στην ιστοσελίδα μου να ανεβαίνει κατευθείαν από τον υπολογιστή του το αρχείο “C:/quiz/score.txt”, και όχι να του ζητείται τι αρχείο θα ανεβάσει;
(main.html)
<html>
<body>
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
(uploader.php)
<?php
// Where the file is going to be placed
$target_path = "uploads/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>