2011-01-13 7 views
1

J'essaie de modifier un script que j'ai acheté dans un fichier 'OPEN' dans un navigateur plutôt que 'FORCE DOWNLOAD' comme c'est le cas actuellement. J'ai collé le code avant.PHP> Ouvrir le fichier au lieu de forcer Télécharger

Voici comment cela fonctionne actuellement.

  1. achats de l'utilisateur de l'application Blackberry
  2. Email avec un lien de téléchargement est cliquez dessus.
  3. En cliquant sur l'URL, le fichier 'DOWNLOADS' au lieu de s'ouvre ou s'exécute.

Je voudrais faire l'URL> OUVRIR dans le navigateur mobile de l'utilisateur au lieu de forcer le téléchargement. Lorsque l'utilisateur reçoit le lien, il ressemble à ceci:

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

Quelqu'un peut-il s'il vous plaît aidez-moi mettre à jour ce donc il OUVRE au lieu de le téléchargement de force?

<?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; 
    } 
} 
?> 

Voici le fichier PHP que les points de lien de téléchargement. Après avoir suivi les commentaires ci-dessous, je reçois maintenant cette erreur lorsque le fichier s'ouvre. La bonne nouvelle est que ce n'est plus un téléchargement forcé. Merci pour ça!

<?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

Vous ne pouvez pas. La façon dont les navigateurs gèrent les téléchargements est configurée par l'utilisateur, que le type mime ait ou non un gestionnaire enregistré. Mais utiliser un type mime tel que 'application/force-download' ou' application/octet-stream' provoquera toujours un téléchargement. –

+0

@ nikc.org. Une meilleure façon (et valide) de forcer le téléchargement est «Content-Disposition: attached». – TRiG

Répondre

3

Vous avez simplement besoin de définir le type de contenu approprié et le navigateur doit gérer le reste.

Par exemple, vous utilisez actuellement ...

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

Cela doit être changé le type MIME correct (peut-être "application/vnd.rim.cod", mais qui est une supposition). NB: Vous devrez également supprimer la ligne "Content-Disposition".

+0

Merci le fichier son pointage est un fichier PHP. Le fichier PHP détecte ensuite le BB OS et le dirige vers les fichiers .jad/cod pour l'installation. ---- Vos directions ont fonctionné mais maintenant j'obtiens une autre erreur une fois que le dossier de PHP s'ouvre (NOTE: cette erreur ne se produit pas quand j'y accède directement). – 90Meatballs

+0

0) || (strpos ($ accept, 'application/vnd.wap.xhtml + xml')> 0)) {header ("Emplacement:". $ url_otherphones); Sortie(); }/* REDIRECT TO PC et MAC */header ("Emplacement:". $ Url_pcmac); Sortie(); ?> – 90Meatballs

+0

@ 90 Boulettes de viande Vous devez ajouter une mise à jour à la fin de votre question originale. –

2

C'est le Content-Disposition: pièce jointe; c'est dire au navigateur de le télécharger.

Essayez:

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

à la place.

+0

Merci pour votre aide. J'ai essayé cela mais il a échoué :(- Ce que j'ai oublié de mentionner est le fichier que son essayant de télécharger est également un fichier PHP qui détecte la version OS Blackberry des utilisateurs et les dirige vers la version correcte. – 90Meatballs

Questions connexes