2011-01-13 4 views
1

현재 'FORCE DOWNLOAD'가 아니라 브라우저에서 'OPEN'파일로 구입 한 스크립트를 수정하려고합니다. 나는 코드를 붙여 넣었다.PHP> 강제 다운로드 대신 열기 파일

현재 작동 방식은 다음과 같습니다. 다운로드 링크

  1. 사용자의 구매 블랙 베리 응용 프로그램
  2. 이메일 클릭합니다.
  3. URL을 클릭하면 이 아닌 'DOWNLOADS'파일을 열거 나 실행합니다.

다운로드를 강요하는 대신 사용자 모바일 브라우저에서 URL> OPEN을 만들고 싶습니다. 사용자가 링크를 수신하는 경우는 다음과 같습니다

http://example.com/delivery/ds-download.php?auth=bKKun8%2BFqpqjo56j1G5SaWNjg3Sgopah2NGf05iXop2k26SRzMlyiXaDiXmWZ2Rwd2aXaaOWamSkpGmqaWqommWUbWaonnVqanVucJWlqKaUnMVznsufk8rPccWll9bGp5Gek9HNlaqklad0zZ6RoaFhxKTPomGXzsSc0HVvzdWV0JWg2NKWmqNuiXm5hWxnnqfGosHUp5%2FDyKWic5rJz5XVl6bIyXJmY2lpbZpnZm5qb5Ccx9SXpMLXmMh1b8nZoMyol6GWZm5mYGhnlmdldGSY2aXL2JdwnZKX066h0NCRx3Q%3D&file=install

은 누구도 날이 너무 대신 힘 다운로드 OPENS 업데이트 도와 주실 수 있습니까?

다음
<?php 
require_once('ds-config.php'); 

if (isset($_GET['auth']) === TRUE && isset($_GET['file']) === TRUE) { 

    if (($product = is_valid_download_request($_GET['auth'])) !== FALSE) { 
     header('Pragma: public'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Cache-Control: private', FALSE); 
     header('Content-Type: application/force-download'); 
     header('Content-Disposition: attachment; filename="' . basename($product[3]) . '"'); 
     header('Content-Transfer-Encoding: binary'); 

     if (strcmp(substr($product[3], 0, 7), 'http://') !== 0) { 

      header('Content-Length: ' . filesize($product[3])); 

     } 

     readfile($product[3]); 

     exit; 
    } 
} 
?> 

는 PHP 파일입니다 다운로드 링크가 가리키는. 아래의 위대한 의견을 따른 후, 이제 파일을 열 때이 오류가 나타납니다. 좋은 소식은 더 이상 강제 다운로드가 아니라는 것입니다. 지금까지 주셔서 감사합니다!

<?php 

/* SETTINGs */ 

$url_pcmac = "http://www.example.com"; 
$url_iphone = "http://itunes.apple.com/us/app/"; 
$url_otherphones = "http://example.com"; 

$url_bb_42 = $url_otherphones; 
$url_bb_43 = $url_otherphones; 
$url_bb_45 = "http://example.mobi/F45/i.jad"; 
$url_bb_46 = "http://example.mobi/F46/i.jad"; 
$url_bb_47 = "http://example.mobi/F46/i.jad"; 
$url_bb_50 = "http://example.mobi/F50/i.jad"; 
$url_bb_60 = "http://example.mobi/F50/i.jad"; 


/* ************************************* */ 
/* DO NOT TOUCH ANYTHING UNDER THIS LINE */ 
/* ************************************* */ 
/* *UNLESS YOU KNOW WHAT YOU ARE DOING** */ 
/* ************************************* */ 




function checkPhone($str) { 
    $check = stripos($_SERVER['HTTP_USER_AGENT'], $str); 
    if ($check === false) { 
     return false; 
    } else { 
     return true; 
    } 
} 

/* REDIRECT IPHONE AND IPODS */ 
if(checkPhone("iPhone") || checkPhone("iPod")){ 
    header("Location: ".$url_iphone); 
    exit(); 
} 

/* REDIRECT BLACKBERRY */ 
if(checkPhone("BlackBerry")){ 

    $agent = $_SERVER['HTTP_USER_AGENT']; 
    $osdir = ''; 

    if (eregi("BlackBerry", $agent)) { 

     if (eregi("6.0", $agent)) 
      header("Location: ".$url_bb_60); 
     if (eregi("5.0", $agent)) 
      header("Location: ".$url_bb_50); 
     if (eregi("4.7", $agent)) 
      header("Location: ".$url_bb_47); 
     if (eregi("4.6", $agent)) 
      header("Location: ".$url_bb_46); 
     if (eregi("4.5", $agent)) 
      header("Location: ".$url_bb_45); 
     if (eregi("4.3", $agent)) 
      header("Location: ".$url_bb_43); 
     if (eregi("4.2", $agent)) 
      header("Location: ".$url_bb_42); 
    } 

    exit(); 
} 

/* REDIRECT ALL OTHER PHONES */ 
$user_agent = $_SERVER['HTTP_USER_AGENT']; 
$accept = $_SERVER['HTTP_ACCEPT']; 

if(checkPhone("opera mini") 
|| checkPhone("android") 
|| preg_match('/(pre\/|palm os|palm|hiptop|avantgo|fennec|plucker|xiino|blazer|elaine)/i',$user_agent) 
|| preg_match('/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/i',$user_agent) 
|| preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i',$user_agent) 
|| isset($_SERVER['HTTP_X_WAP_PROFILE']) 
|| isset($_SERVER['HTTP_PROFILE']) 
|| (strpos($accept,'text/vnd.wap.wml')>0) 
|| (strpos($accept,'application/vnd.wap.xhtml+xml')>0)){ 
    header("Location: ".$url_otherphones); 
    exit(); 
} 

/* REDIRECT TO PC and MAC */ 
header("Location: ".$url_pcmac); 
exit(); 

?> 
+0

수 없습니다. 브라우저가 다운로드를 처리하는 방법은 mime 유형에 등록 된 핸들러가 있는지 여부에 관계없이 사용자가 구성합니다. 그러나'application/force-download' 또는'application/octet-stream'과 같은 MIME 형식을 사용하면 항상 다운로드가 발생합니다. –

+0

@ nikc.org 더 좋은 (그리고 유효한) 다운로드 방법은'Content-Disposition : attached'입니다. – TRiG

답변

3

적절한 Content-Type을 설정하기 만하면 나머지는 브라우저에서 처리해야합니다. 예를 들어

, 현재 사용하고있는 ...

header('Content-Type: application/force-download'); 

이 올바른 MIME 타입으로 변경해야합니다 (아마도 "응용 프로그램/vnd.rim.cod"하지만이 추측).

N.B .: "Content-Disposition"줄도 제거해야합니다.

+0

파일을 가리켜 주셔서 감사합니다. PHP 파일입니다. PHP 파일은 BB OS를 탐지하고 설치를 위해 .jad/cod 파일로 보냅니다. ---- 귀하의 지시가 작동하지만 PHP 파일이 열리면 다른 오류가 나타납니다 (참고 :이 오류는 직접 액세스 할 때 발생하지 않습니다). – 90Meatballs

+0

0) || (strpos ($ accept, 'application/vnd.wap.xhtml + xml')> 0)) {header ("Location :". $ url_otherphones); 출구(); }/* PC와 MAC */header로 리다이렉트 ("Location :". $ url_pcmac); 출구(); ?> – 90Meatballs

+0

@ 90Meatballs 원래 질문 끝 부분에 업데이트를 추가해야합니다. –

2

콘텐츠 처리 : 첨부 파일입니다. 브라우저에 다운로드하라는 메시지가 표시됩니다.

보십시오 : 대신

header('Content-Disposition: inline; filename="' . basename($product[3]) . '"'); 

.

+0

도움 주셔서 감사합니다. 나는 그것을 시도했지만 실패했다. (- 내가 말하고자하는 것을 잊어 버린 것은 다운로드하려는 파일이 사용자 인 Blackberry OS 버전을 탐지하고 올바른 downlaod로 안내하는 파일이다. – 90Meatballs

관련 문제