Επιστροφή στο Forum : Random Image
Έχω δει κάποιον που έχει ένα avatar, το οποίο σε κάθε refresh αλλάζει http://www.myphone.gr/forum/image/smilies/w00t.gif Λογικά, θα έχει επιλέξει 10-15 εικόνες, και σε κάθε refresh, μία από αυτές τυχαία έρχεται... Ξέρει κανείς πως γίνεται; http://www.myphone.gr/forum/image/smilies/redface.gif
Ρώτησα και σε ένα άλλο φόρουμ, αλλά άρχισαν να με δουλεύουν... :evil: :ork :dwarf
Αυτό μπορεί να γίνει εύκολα με php κώδικα. Έχεις μια σελίδα php της οποίας το content-type το ορίζεις σε image/gif για παράδειγμα κι έχεις μια σειρά από εικόνες τις οποίες φορτώνεις μέσω μια συνάρτησης php. Κάθε φορά που καλείς τη σελίδα, βάζεις και κώδικα για να φορτώνει κάθε φορά διαφορετική εικόνα από το filesystem. Οπότε ο χρήστης αυτό που βλέπει καλώντας κάθε φορά τη σελίδα είναι διαφορετική εικόνα. Είναι αρκετά εύκολο, αν θέλεις πες να σου πω ακριβώς πως γίνεται.
Ο κώδικας της σελίδας:
<?php
header("Content-type: image/gif"); // <--
$num = 2;
$filename = "avatar.txt";
$filep = fopen($filename, "r+");
if ($filep)
{
$num = fscanf($filep, "%d");
$im = imagecreatefromgif(your image); // <--
if ($num[0] == 4)
$num[0] = 1;
else
$num[0]++;
rewind($filep);
fwrite($filep, "$num[0]");
fclose($filep);
imagegif($im);
}
else
{
$im = imagecreatefromgif(default image); // <--
imagegif($im);
}
?>Οι γραμμές που σε ενδιαφέρουν στο τέλος έχουν το // <--, ενώ στη γραμμή
$im = imagecreatefromgif(your image);βάζεις το όνομα του αρχείου σου της εικόνας (μπορείς να έχεις μια σειρά από αρχεία, για παράδειγμα image1.gif, image2.gif, κ.ο.κ. και με μια μεταβλητή να σχηματίζεις το κατάλληλο string). Παραπάνω χρησιμοποιείται κι ένα αρχείο στο για την "τυχαιοποίηση" της εικόνας που θα χρησιμοποιηθεί.
To filename που ανοίγει είναι εκεί που θα αποθηκεύσει την εικόνα; Γιατί όμως είναι .txt?
Έτσι το επέλεξε o GoofyX!
Εσύ πεστο .asc ή .whatever
Μόνο φρόντισε στο ίδιο φάκελο με το php να βρίσκονται τα αρχεία εικόνων, το όνομα των οποίων εμπεριέχεται στο txt ;)
gramps... Μπερδεύτηκα λιγάκι :what: OK, αυτό το .php θα το ανεβάσω στο hosting μου μέσω FTP, πως θα το βάλω ως υπογραφή/avatar? Αυτά με το βελάκι // <----- δεν πολυκαταλαβαίνω τι κάνουν, μπορείτε να μου πείτε τι κάνει το καθένα; Δεν ξέρω σχεδόν καθόλου php...
AΑναλογως την γλωσσα προγραματισμου υπαρχουν καποια συμβολα για σχολια.
Για την πολυ παλια basic και για batch αρχεια ειναι η εντολη rem απο το remark.
Στις νεωτερες γλωσσες χρησημοποιουνται συμβολα οπως // και ; (αν θυμαμαι καλα)
Οτιδηποτε γραφεται μετα απο αυτα (rem ,// ) αγνοειται απο το συστημα και εξηπηρετει μονο στο να θυμηθεις - εξηγησεις ενα κοματι κωδικα.
Άλλος ένας κώδικας για random avatar...
<?php
$d = opendir('.');
$i=0;
while ($f = readdir($d))
(stristr($f,'jpg') || stristr($f,'gif') || stristr($f,'png')) ?
($a[] = $f) && ($i++) : 0;
srand ( (float) microtime() * 1010101975);
fpassthru (fopen ($a{rand(0, $i-1)}, "rb"));
closedir($d);
?>
Δημιουργείς ένα .php αρχείο με τον παρπάνω κώδικα μέσα και το βάζεις στο folder με τα avatars που θέλεις να δείχνει.
Είσαι έτοιμος ;)
To filename που ανοίγει είναι εκεί που θα αποθηκεύσει την εικόνα; Γιατί όμως είναι .txt?Μέσα στο .txt filename αποθηκεύω απλά έναν αριθμό (1, 2, 3 ή 4). Διαβάζω τον αριθμό αυτό σε μια μεταβλητή και στον ίδιο κατάλογο υπάρχουν αντίστοιχα 4 αρχεία για avatar με την ονομασία image1.gif, image2.gif, κτλ. Κάθε φορά που διαβάζω τον αριθμό από το αρχείο, τον αυξάνω κατά ένα (μέχρι να ξεπεράσει το 4, οπότε γίνεται 1 πάλι) και τον αποθηκεύω στο αρχείο πάλι. Με αυτό τον τρόπο οι εικόνες εμφανίζονται όχι τυχαία, αλλά με round-robin σειρά (1 -> 2 -> 3 -> 4 -> 1 κ.ο.κ).
gramps... Μπερδεύτηκα λιγάκι :what: OK, αυτό το .php θα το ανεβάσω στο hosting μου μέσω FTP, πως θα το βάλω ως υπογραφή/avatar? Αυτά με το βελάκι // <----- δεν πολυκαταλαβαίνω τι κάνουν, μπορείτε να μου πείτε τι κάνει το καθένα; Δεν ξέρω σχεδόν καθόλου php...Αυτά με το βελάκι //<-- τα έβαλα επίτηδες για να μαρκάρω τις εντολές σε php που ουσιαστικά κάνουν τη δουλειά.
ΟΚ, τα δοκίμασα αυτά, παίζουν κανονικά (Yngwiedis ξέχασες το header("Content-type: image/gif"); ;) )
Πως όμως θα τα βάλω ως άβαταρ/υπογραφή...; :what:
Σε κάποια site (για παράδειγμα το adslgr.com δεν το υποστηρίζει) μπορείς για άβαταρ να βάλεις url, αντί για image, οπότε θα δώσεις το παραπάνω url σου που είναι μια php σελίδα (εννοείται ότι πρέπει να υπάρχει σε κάποιο web server με php στημμένο για να το εκτελέσει).
Σε κάποια site (για παράδειγμα το adslgr.com δεν το υποστηρίζει) μπορείς για άβαταρ να βάλεις url, αντί για image, οπότε θα δώσεις το παραπάνω url σου που είναι μια php σελίδα (εννοείται ότι πρέπει να υπάρχει σε κάποιο web server με php στημμένο για να το εκτελέσει).
Αν το url είναι κάποιο script και όχι κάποια εικόνα μπορεί να υπάρξουν security issues...οπότε συνήθως δεν επιτρέπεται...
Αν όμως έχεις πρόσβαση σε δικό σου Apache, μπορείς να το κάνει να "επεξεργάζεται" τα gif αρχεία σαν να είναι php αρχεία, βάζοντας στο .htaccess του σχετικού dir το παρακάτω:
<FilesMatch "^.*\.gif">
SetHandler application/x-httpd-php
</FilesMatch>
Οπότε βάζοντας "http://www.xxx.gr/file.gif" στο avatar σου θα εκτελείται το αντίστοιχο php script.
Τα καταφεραααααα :yahoo:
chatasos, thanks man! :thumb_dup Ένα θενκς και στα παιδιά που βοήθησαν :clap :ork :dwarf
ΟΚ, τα δοκίμασα αυτά, παίζουν κανονικά (Yngwiedis ξέχασες το header("Content-type: image/gif"); ;) )
Πως όμως θα τα βάλω ως άβαταρ/υπογραφή...; :what:
Εγώ το χρησιμοποιώ όπως είναι. Χωρίς να βάλω header η τίποτα άλλο.
Άλλος ένας κώδικας για random avatar...
<?php
$d = opendir('.');
$i=0;
while ($f = readdir($d))
(stristr($f,'jpg') || stristr($f,'gif') || stristr($f,'png')) ?
($a[] = $f) && ($i++) : 0;
srand ( (float) microtime() * 1010101975);
fpassthru (fopen ($a{rand(0, $i-1)}, "rb"));
closedir($d);
?>
Δημιουργείς ένα .php αρχείο με τον παρπάνω κώδικα μέσα και το βάζεις στο folder με τα avatars που θέλεις να δείχνει.
Είσαι έτοιμος ;)
Χμμ... Μάλλον βιάστηκα να χαρώ.. Μερικές φορές δεν βγάζει τίποτα...
http://avalanche.scshost.co.uk/stuff/mpe/random_image.gif
Χμμ... Μάλλον βιάστηκα να χαρώ.. Μερικές φορές δεν βγάζει τίποτα...
http://avalanche.scshost.co.uk/stuff/mpe/random_image.gifΤο δοκίμασα πάντως με Firefox εδώ και παίζει μια χαρά.
Voldemort...
Εγώ χρησιμοποιώ τον κώδικα που σου έδωσα κάνοντας το εξής :
Δημιουργώ ένα νέο αρχείο .txt
Βάζω μέσα τον κώδικα.
Κάνω save.
Μετονομάζω το .txt σε .php ( παράδειγμα avatar.php ).
Το ανεβάζω στο folder με τα avatars που θέλω να δείχνει.
Από εκεί και πέρα στο profile μου στο forum δηλώνω σαν URL για το avatar το :
http://www.mydomain.com/foldername/avatar.php
Αυτά :)
@ ADSLgr.com All rights reserved.