2011-11-26 4 views
0

où erreur?Commande "ifelse" dans "include"

<? 
    if($_GET['data']) 
    { 
    print 'atmam'; 
include ('http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1'); 
    } 
    else { 
    print 'fail to download'; } 
    ?> 

Écrit sur l'erreur de l'écran:

Warning: Unexpected character in input: '' (ASCII=1) state=1 in       http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 on line 515 

    Parse error: syntax error, unexpected T_STRING in http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 on line 515 

PS: http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 = lien de téléchargement direct de fichiers

Pouvez-vous aider? Meilleures salutations

+1

Les erreurs sont sur le fichier inclus. –

+1

Eh bien, je ne suis pas sûr de ce que vous incluez, assurez-vous que c'est un fichier PHP .. son genre de dangereux d'inclure une URL http, de toute façon, vous pouvez trouver votre erreur simplement dans http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 at line 515 – Wesley

+2

Je pense que vous devriez utiliser 'file_get_contents' à la place d'include, car ce que vous essayez de faire est d'inclure le fichier dans votre page. – Cyclonecode

Répondre

0

Voir si cela fait quelque chose comme ce que vous voulez:

<?php 

    if ($_GET['data']) { 

    // Some headers that indicate a generic download 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment'); 

    // Try and read the file directly to the client 
    if ([email protected]('http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1')) { 
     // Try and clear the header and print a message. This may not work depending on the result of the readfile() attempt. 
     @header('Content-Disposition:'); 
     print 'fail to download'; 
    } 

    exit; 

    } 

?> 

Une alternative (et beaucoup soutiendraient mieux) l'approche est la suivante:

<?php 

    if ($_GET['data']) { 

    // Redirect the client to the actual location 
    header('HTTP/1.1 302 Found'); 
    header('Location: http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1'); 
    exit; 

    } 

?> 
+0

Merci pour votre réponse! Sérigraphie: Attention: Impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarrée à /home/emre2010/public_html/0_alanlar/downloads/DWTEST.php:4) dans/home/emre2010/public_html/0_alanlar/downloads/DWTEST. php sur la ligne 49 Rar! βs t , d : qpW xx? 3 SC4.png p L MUU r e B n_D | r _ ... – Editor

+0

S'il vous plaît modifier votre question avec votre script entier. Vous devez supprimer tous les appels à 'echo',' print' ou à tout ce qui produit une sortie. – DaveRandom

+0

Tous les "echo and print" supprimés mais le même problème .. (Im sorry, niveau intermédiaire en anglais) – Editor

0

PHP fournit une fonction appelée file_exists dans ce but. $ _GET ['data'] sert à extraire des informations de l'élément html avec name = "data" attaché à celui-ci. Si vous ne l'avez pas dans votre document, le script ne fonctionnera JAMAIS s'il cherche quelque chose qui n'existe pas. Même si l'élément existe, ceci n'est pas une utilisation nécessaire ni recommandée de $ _GET.

Pour en savoir plus sur ce que vous essayez de faire, consultez ce lien et regardez mes exemples.

http://php.net/manual/en/function.file-exists.php

Pour l'utiliser, vous faites simplement ceci:

$filename = 'http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1'; 
    if (file_exists($filename)) { 
     echo 'atmam'; 
     include ('$filename'); 
    } 
    else 
     echo 'Failed to download file'; 

Je suppose que vous allez utiliser pour tous les fichiers de votre site doit avoir accès, pour vous faire gagner du temps, vous pouvez utiliser dans une fonction.

function testfile(filename) { 
     if (file_exists(filename)) { 
     echo 'atmam'; 
     include ('filename'); 
     } 
     else 
     echo 'Failed to download file'; 
} 

Appelez la fonction comme ceci:

$filename1 = 'http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1'; 
    $filename2 = 'something.txt'; 

    function testfile($filename1); 

En utilisant la fonction que vous pouvez vérifier autant de noms de fichiers que vous le souhaitez en utilisant des variables pour chaque nom de fichier. Editer: Pour résoudre l'erreur de syntaxe à venir, vous devez vous assurer que le fichier inclus n'a pas d'erreur. S'il vous plaît poster ici pour nous de regarder. Supprimer les échos et les impressions ne changera rien, en fait vous voulez que ceux-ci soient là pour déboguer. Essayez d'abord d'utiliser le petit morceau de code que j'ai mis ici, c'est la bonne méthode pour vérifier si un fichier existe, et si c'est le cas, faites quelque chose. Une fois que vous utilisez le code correct pour vérifier le fichier et l'inclure, vous serez sûr qu'une fois que vous aurez résolu les problèmes dans le fichier d'inclusion, vous aurez la fonctionnalité que vous voulez.

Espérons que ça vous aide! -Sean

+0

Merci pour intéressant mais seulement le "Impossible de télécharger le fichier" à écrire. N'implémente pas le téléchargement du fichier. mon incompétence .. – Editor