Blondeamon Δημοσ. 28 Μαρτίου 2009 Δημοσ. 28 Μαρτίου 2009 Καλησπέρα πειραματίζομαι τελευταία με διάφορα και σε συζήτηση με ένα φιλαράκι μου είπε οτι καλό θα ήτανε να μπορεί να κατεβάζει και απτο κινητό του κάποια βίντεο που έχω στο forum μου αλλά σε μικρότερη ανάλυση. Ξέρετε κάποιον τρόπο που να μπορώ να ανιχνέυω αν μπαίνει απο desktop ή απο κινητό και να αλλάζω το βίντεο που του στέλνω. Για δοκιμή πχ ας πούμε οτι έχω μια απλή σελίδα με ενα link για download ενος μονάχα βίντεο και τπτ άλλο. Αλλά πώς θα το κάνω να στέλνει πχ 1280χ1024 σε υπολογιστή και 120χ100 πχ σε κινητό ?
Maniakos Δημοσ. 28 Μαρτίου 2009 Δημοσ. 28 Μαρτίου 2009 Ενδιαφέρον το ερώτημά σου. Δεν έχει τύχει ποτέ να κάνω κάτι αντίστοιχο αλλά μου έρχονται 3 λύσεις στο μυαλό αυτή την στιγμή: 1η λύση, που μου έρχεται (και δεν μου αρέσει) είναι να έχεις κάτω από το Video, "View for mobile devices" και να ξαναφορτώνει η σελίδα με το low resolution video. 2η λύση, μπορείς να ελέγχεις το $_SERVER['HTTP_USER_AGENT'] variable πριν φορτώσεις το site. Βρήκα ένα έτοιμο implementation (με PHP δεν ασχολήσε; ή θυμάμαι λάθος; ) εδώ: http://www.russellbeattie.com/blog/mobile-browser-detection-in-php Δεν με τρελλαίνει και πολύ γιατί η λίστα θα χρειάζεται *ίσως* σχετικά συχνά updates, αλλά you get the idea. 3η λύση λύση, είναι να έφτιαχνα ένα subdomain http://mobiles.mysite.gr και στο κώδικά μου να έλεγχα το $_SERVER['HTTP_HOST'] οπότε άμα κάποιος έρχεται από το 'mobiles' subdomain να φόρτωνα απευθείας τα low resolution videos. Μάλλον αυτή μου αρέσει και περισσότερο από τις άλλες 2 προς το παρόν. Αν μου έρθει και κάτι άλλο θα σου πω.
Blondeamon Δημοσ. 29 Μαρτίου 2009 Μέλος Δημοσ. 29 Μαρτίου 2009 Πωπω με έψησες τώρα απίστευτα , είσαι τρομερός. Θα τα δοκιμάσω και θα σου πώ. Προς το παρόν ψήνομαι να δοκιμάσω την 2 και βλέπω και για 3.
Maniakos Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Μάλλον και εγώ με την 2η θα ξεκίναγα, έτσι να δω από περιέργεια πως θα πάει αλλά στο τέλος μου φαίνεται ο καλύτερος συνδυασμός θα ήταν (2) + (3) εκτός φυσικά άμα υπάρχει και καμία καλύτερη λύση που δεν αναφέραμε. Πες μας και εμάς τα αποτελέσματα
Blondeamon Δημοσ. 29 Μαρτίου 2009 Μέλος Δημοσ. 29 Μαρτίου 2009 Έτσι θα σε άφηνα? Μου έδωσες τα φώτα σου και μπόρεσα και πήρα μπρός. λοιπόν, αυτη ειναι η σελίδα που το σήκωσα και δουλεύει υπέροχα! http://blondeamon.kamenos.gr/Files/maniakos_rules.php Aν μπεις απο pc σου εμφανιζει μονο τα αποτελεσματα της $_SERVER['HTTP_USER_AGENT'] με μια echo αν ομως μπεις απο mobile θα σου εμφανιζει "MOBILE VERSION". Δοκίμασε το με: http://www.opera.com/mini/demo/ Ο κώδικας ειναι: <?php echo $_SERVER['HTTP_USER_AGENT']; >$isMobile = false; $isBot = false; $op = strtolower($_SERVER['HTTP_X_OPERAMINI_PHONE']); $ua = strtolower($_SERVER['HTTP_USER_AGENT']); $ac = strtolower($_SERVER['HTTP_ACCEPT']); $ip = $_SERVER['REMOTE_ADDR']; $isMobile = strpos($ac, 'application/vnd.wap.xhtml+xml') !== false || $op != '' || strpos($ua, 'sony') !== false || strpos($ua, 'symbian') !== false || strpos($ua, 'nokia') !== false || strpos($ua, 'samsung') !== false || strpos($ua, 'mobile') !== false || strpos($ua, 'windows ce') !== false || strpos($ua, 'epoc') !== false || strpos($ua, 'opera mini') !== false || strpos($ua, 'nitro') !== false || strpos($ua, 'j2me') !== false || strpos($ua, 'midp-') !== false || strpos($ua, 'cldc-') !== false || strpos($ua, 'netfront') !== false || strpos($ua, 'mot') !== false || strpos($ua, 'up.browser') !== false || strpos($ua, 'up.link') !== false || strpos($ua, 'audiovox') !== false || strpos($ua, 'blackberry') !== false || strpos($ua, 'ericsson,') !== false || strpos($ua, 'panasonic') !== false || strpos($ua, 'philips') !== false || strpos($ua, 'sanyo') !== false || strpos($ua, 'sharp') !== false || strpos($ua, 'sie-') !== false || strpos($ua, 'portalmmm') !== false || strpos($ua, 'blazer') !== false || strpos($ua, 'avantgo') !== false || strpos($ua, 'danger') !== false || strpos($ua, 'palm') !== false || strpos($ua, 'series60') !== false || strpos($ua, 'palmsource') !== false || strpos($ua, 'pocketpc') !== false || strpos($ua, 'smartphone') !== false || strpos($ua, 'rover') !== false || strpos($ua, 'ipaq') !== false || strpos($ua, 'au-mic,') !== false || strpos($ua, 'alcatel') !== false || strpos($ua, 'ericy') !== false || strpos($ua, 'up.link') !== false || strpos($ua, 'vodafone/') !== false || strpos($ua, 'wap1.') !== false || strpos($ua, 'wap2.') !== false; $isBot = $ip == '66.249.65.39' || strpos($ua, 'googlebot') !== false || strpos($ua, 'mediapartners') !== false || strpos($ua, 'yahooysmcm') !== false || strpos($ua, 'baiduspider') !== false || strpos($ua, 'msnbot') !== false || strpos($ua, 'slurp') !== false || strpos($ua, 'ask') !== false || strpos($ua, 'teoma') !== false || strpos($ua, 'spider') !== false || strpos($ua, 'heritrix') !== false || strpos($ua, 'attentio') !== false || strpos($ua, 'twiceler') !== false || strpos($ua, 'irlbot') !== false || strpos($ua, 'fast crawler') !== false || strpos($ua, 'fastmobilecrawl') !== false || strpos($ua, 'jumpbot') !== false || strpos($ua, 'googlebot-mobile') !== false || strpos($ua, 'yahooseeker') !== false || strpos($ua, 'motionbot') !== false || strpos($ua, 'mediobot') !== false || strpos($ua, 'chtml generic') !== false || strpos($ua, 'nokia6230i/. fast crawler') !== false; if($isMobile){ echo "MOBILE VERSION"; // header('Location: http://m.mowser.com/web/' . urlencode($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'])); exit(); } ?> Αν κάποιος εχει κινητο που μπορει να μπει online και το δοκιμάσει θα ήμουν ευγνωμων.
Maniakos Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Τι με ευχαριστείς, δεν το έγραψα εγώ το script Άντε να δούμε και το τελικό αποτέλεσμα με το καλό!
Blondeamon Δημοσ. 29 Μαρτίου 2009 Μέλος Δημοσ. 29 Μαρτίου 2009 Mέχρι αύριο θα είναι έτοιμο, ευχαριστώ και πάλι για την βοήθεια και τις υποδέιξεις! Υ.Γ Μάλλον θα υλοποίησω και το νο3, just in case.
fromaz Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Τη javascript γιατί την αποκλείσατε, αν επιτρέπεται? Μπορεί να σου πει την ανάλυση της οθόνης ή/και του παραθύρου, που είναι και το ζητούμενο. Το browser sniffing είναι μεγαααλη ιστορία χωρίς τελειωμό. Το browscap.ini έχει φτάσει στα 325KB! Επί της συγκεκριμένης λύσης, θα ήθελα να προτείνω και έναν (έξτρα) έλεγχο του στυλ preg_match('~.*\(d{3})x(\d{3}).*~', $ua, $M) καθώς πολλοί mobile browsers περιέχουν και την ανάλυση στο user agent string, κάτι που δε συμβαίνει στους desktop.
Blondeamon Δημοσ. 29 Μαρτίου 2009 Μέλος Δημοσ. 29 Μαρτίου 2009 Τη javascript γιατί την αποκλείσατε, αν επιτρέπεται? Μπορεί να σου πει την ανάλυση της οθόνης ή/και του παραθύρου, που είναι και το ζητούμενο. Το browser sniffing είναι μεγαααλη ιστορία χωρίς τελειωμό. Το browscap.ini έχει φτάσει στα 325KB! Επί της συγκεκριμένης λύσης, θα ήθελα να προτείνω και έναν (έξτρα) έλεγχο του στυλ preg_match('~.*\(d{3})x(\d{3}).*~', $ua, $M) καθώς πολλοί mobile browsers περιέχουν και την ανάλυση στο user agent string, κάτι που δε συμβαίνει στους desktop. Θα μπορούσες να προτείνεις κάποιο τρόπο για την ανίχνευση αν ειναι απο κινητο ipod ή pda πχ?
fromaz Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Με με μπερδεύεις με gadgets, ούτε κινητό δεν έχω Απ' ότι κατάλαβα το ζητούμενο είναι περιεχόμενο με βάση την ανάλυση. Αυτό μπορεί να γίνει κάπως έτσι (untested): > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Test Page</title> <?php if (empty($_GET['stp'])) { ?> <script type="text/javascript"> var wid,hgt; if (typeof(window.innerWidth) != 'undefined') { wid = window.innerWidth; hgt = window.innerHeight; } else if (document.documentElement && document.documentElement.clientWidth) { wid = document.documentElement.clientWidth; hgt = document.documentElement.clientHeight; } else if (document.body && document.body.clientWidth) { wid = document.body.clientWidth; hgt = document.body.clientHeight; } else { wid = 0; hgt = 0; } window.location.href = window.location.href+'?stp=1&wid='+wid+'&hgt='+hgt; </script> <?php } ?> </head> <body> <?php if (empty($_GET['stp'])) { echo "no js, use browser sniffing..."; } else { $wid = @$_GET['wid']; $hgt = @$_GET['hgt']; echo "You are viewing this at {$wid}x{$hgt}!"; } ?> </body> </html> Ρίξε τη σελίδα κάπου και δες αν σου δουλεύει. Τίποτα δεν σε εμποδίζει να συνδυάσεις την πληροφορία της ανάλυσης και με browser sniffing, ή να προσαρμόσεις το js να σου επιστρέφει και άλλες πληροφορίες. Για παράδειγμα, υπάρχει το screen object που σου δίνει την ανάλυση της οθόνης και όχι του viewport, αν το προτιμάς. Πιθανόν το προτιμάς γιατί είναι ισχυρότερη ένδειξη συσκευής mobile (δεδομένου ότι μπορεί κάποιος να έχει κάνει resize τον browser). Τώρα, αν κατάλαβα λάθος αυτό που θέλεις να κάνεις, ζητώ συγγνώμη - είμαι και γέρος άνθρωπος
Maniakos Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Εγώ δεν απέκλεισα τίποτα Απλά με την Javascript θα πρέπει να έχει φορτώσει ήδη το site για να κάνει αυτό το detection και μετά κάνεις reload την σελίδα για να τα στείλεις με GET στην PHP. Θα μπορούσες βέβαια να τα βάλεις σε μια σελίδα πριν μπει ο χρήστης στο κεντρικό site όπου θα κάνει αυτό το detection μόνο και κάνει μετά redirect στην main page όπου θα στείλει και τα width & height με GET. Σίγουρα είναι πιο elegant το detection με Javascript απλά πάλι πρέπει να πάρεις μερικές αποφάσεις.
fromaz Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Για πρόσεξε λίγο καλύτερα τον κώδικα.. Είναι automagic, όπως λένε και στην php!
Maniakos Δημοσ. 29 Μαρτίου 2009 Δημοσ. 29 Μαρτίου 2009 Μάλλον είμαι χαζός και δεν καταλαβαίνω τι εννοείς =/ Εννοείς ότι δεν γίνεται re-submit; Δεν γίνεται να στείλει τα GET άμα δεν κάνει re-submit την σελίδα. Πάντως παίζει, το έτρεξα στα γρήγορα
Blondeamon Δημοσ. 29 Μαρτίου 2009 Μέλος Δημοσ. 29 Μαρτίου 2009 Τώρα στο αρχείο php που διαχωρίζει αν είναι mobile ή όχι πως να βάλω το download link προς την μια αναλυση και την άλλη? Με html μέσα στο php αρχείο ή κάπως με php?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.