2008-10-09 36 views
7

Mobile Safari là một trình duyệt rất có khả năng, và nó có thể xử lý trang web của tôi vì nó là hoàn hảo. Tuy nhiên, có một vài yếu tố trên trang của tôi có thể được tối ưu hóa để duyệt bằng thiết bị này; chẳng hạn như phân phối hình thu nhỏ cụ thể nhỏ hơn so với các đối tác máy tính để bàn để giúp phù hợp với nhiều nội dung hơn vào màn hình.Làm thế nào để phát hiện phía máy chủ Mobile Safari bằng cách sử dụng PHP?

Tôi muốn biết làm thế nào tôi có thể phát hiện Mobile Safari (tất cả các phiên bản, tốt hơn) bằng cách sử dụng PHP, vì vậy sau đó tôi có thể phục vụ a) tệp css cụ thể và b) hình thu nhỏ có kích thước khác nhau.

Trả lời

4

Hãy so sánh chuỗi tác nhân người dùng với một trong Safari Mobile sử dụng:

Safari Mobile User Agent String

+2

Liên kết này dường như không đi đúng nơi nữa. – Nosredna

+0

liên kết của bạn dường như không còn hợp lệ nữa .. nó chỉ chuyển hướng đến trang đầu của safari dành cho nhà phát triển. – matdumsa

+1

Đây là liên kết được cập nhật cho thông tin: http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html –

3
$_SERVER['HTTP_USER_AGENT'] 

Điều đó sẽ cung cấp cho bạn chuỗi tác nhân người dùng mà bạn có thể so sánh với safari di động.

p.s. http://wurfl.sourceforge.net/ WURFL có thể giúp bạn xác định UA nào bạn muốn.

+0

DeviceAtlas là một giải pháp thay thế cho WURFL –

7

Cảm ơn Joe, tôi đọc trang đó và tìm thấy WebKit detection library (trong JavaScript). Tôi đã thay đổi mã cho phù hợp với nhu cầu của mình.

Đối với bất kỳ ai quan tâm, đây là giải pháp của tôi.

<?php 

/* detect Mobile Safari */ 

$browserAsString = $_SERVER['HTTP_USER_AGENT']; 

if (strstr($browserAsString, " AppleWebKit/") && strstr($browserAsString, " Mobile/")) 
{ 
    $browserIsMobileSafari = true; 
} 

?> 
+0

Nhưng nếu JavaScript bị tắt thì sao? –

+1

@Matt - Việc phát hiện được thực hiện phía máy chủ, bạn đã không đọc bài viết của tôi đúng - Tôi đã thay đổi mã để phù hợp với nhu cầu của tôi, như trong việc tìm kiếm các chuỗi "AppleWebKit /" và "Mobile /". – different

0

tôi đã xuất bản một chế độ mới để phát hiện các thiết bị trong bất kỳ ngôn ngữ lập trình (JSP, PHP, Perl, Python .....), nó được gọi là Apache Mobile Filter là một module Apache (http://modules.apache.org/search.php?id=1787) phát hiện điện thoại di động thiết bị và cũng có thể điều chỉnh hình ảnh với kích thước màn hình của thiết bị.

Để biết thêm thông: http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html

0

Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, như Gecko) Version/1.0 Safari/525.27.1 Pre/1.0 mà là trình duyệt cho cọ Pre, và từ 'Mobile' không có ở đó.

Tôi đang làm việc để phát hiện công việc của mình hoàn toàn với tất cả các trình duyệt có khả năng mới hơn. Sau khi nhìn vào mytouch, G1, Palm Pre, droid và những người khác, (nhưng không phải tất cả) Tôi bây giờ tự tin điều này là hoàn toàn khả thi cho tất cả các điện thoại mới:

if (preg_match ("/ applewebkit/i", $ _SERVER [ 'HTTP_USER_AGENT']) & & preg_match ("/ (di động | trước)/i", $ _SERVER ['HTTP_USER_AGENT'])) tiêu đề ("Vị trí: http://simplefoodie.com/iphone/?carryover=" .urlencode ($ _ SERVER [REQUEST_URI]));

0
<?php 

// detect Safari only! 

$string = $_SERVER['HTTP_USER_AGENT']; 

if (strstr($string, " AppleWebKit/") && strstr($string, " Safari/") && !strstr($string, " CriOS")) 
    { 
     echo 'See in Safari only'; 
    } 

?> 
Các vấn đề liên quan