2012-12-04 2 views
-6

나는이 사이트를 사용하여 답변을 찾았지만 도움이 될만한 것은 찾을 수 없으므로 계정을 만들고 스스로에게 물어보기로했습니다.pdf 파일 다운로드 링크가 PHP에서 작동하지 않습니다

여기는 http://www.h-elpsystems.co.uk/index.php에서 일하고있는 웹 사이트에 대한 링크입니다. 그것은 사용자가 파일을 다운로드 할 수있는 데이터베이스 구동 웹 사이트입니다. 이제 웹 사이트의 한 페이지에서 작업하고있었습니다 (다운로드 코드를 사용하는 코드를 건드리지 않았다는 것을 알고있는 한) 갑자기 다운로드가 작동하지 않습니다.

다운로드는 하단의 "고용 법 페이지"에 있습니다. 링크를 클릭하여 파일을 다운로드하면 끝에있는 URL에 #이있는 사용자에게만 동일한 페이지가 전송됩니다.

업로드 할 코드 비트가 확실하지 않지만 (PHP에 익숙하지 않습니다.) 누군가 내가 필요한 것을 알리면 업로드 할 것입니다.

사전에 도움을 주셔서 감사합니다.

PS 여기는 다운로드에 사용하는 코드입니다. (필자는 코드를 작성하지 않은 참고, 난 그냥 페이지 또는 두를 편집하고 다운로드 어떤 이유로 작동이 중지 것 같았다.)

<? 
// Define the path to file 
$file = "membersfiles/".$_GET['ID']; 

if(!file) 
{ 
// File doesn't exist, output error 
die('file not found'); 
} 
else 
{ 
// Set headers 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$file"); 
header("Content-Type: application/zip"); 
header("Content-Transfer-Encoding: binary"); 

// Read the file from disk 
readfile($file); 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Download file</title> 
</head> 

<body> 
</body> 
</html> 

은 또한 아래의 고용 페이지에 대한 코드입니다. 나는 모든 사람의 답변을 시도하고 그들이 어떤 형태로든하지만 어떤 이유 때 작동하는 것 :

<? 
session_start; 
include("../Functions.inc"); 
$ID=PageID(substr(dirname($_SERVER['PHP_SELF']), 1, strlen(dirname($_SERVER['PHP_SELF'])))); 

?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title><? echo PageTitle($ID);?></title> 
<meta name="keywords" content="<? echo PageKeywords($ID);?>" /> 
<meta name="description" content="<? echo PageDescription($ID);?>" /> 
<meta name="robots" content="index,follow" /> 


<link href="../mainstyles.css" rel="stylesheet" type="text/css" media="screen" /> 

</head> 

<body> 

<div id="wrapper"> 

<div id="leftcolumn"><div id="mainnav"><img src="../media/logo.gif" alt="H-elp Systems" /><? include("../Left-Links.inc"); ?> 
<a href="mailto:[email protected]" id="emailbutton" ><span>click here to email us</span></a> 
<img src="../media/navfooter.gif" alt="Help Systems" /></div> 
</div> 


<div id="centercolumn"> 
<div id="topnav"> 
<? include("../Top-Links.inc"); ?> 
</div> 

<div id="content"> 
<img src="../media/headers/<? echo PageTitle($ID);?>.jpg" alt="" /> 
<img src="../media/splashtext/<? echo PageTitle($ID);?>.gif" alt="When it come to employment you need h-elp systems" /><a href="#" id="phonelink" ><span>0121 635 5870</span></a> 
<img src="../media/hr450.gif" alt="Help Systems" /> 
<div id="contentcopy"> 
<h1><? echo PageSplash($ID);?></h1> 
<? echo PageContent($ID);?> 

<? 
    $query = "SELECT * FROM `Files` WHERE `Employment`=1";  
    $result = mysql_query($query) or die ("Failed To get member files!"); 

    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 

     print("<img src=\"../media/hr450.gif\"/><br><a href=\"#\" onclick=\"javascript:downloadwindow('../Download.php?ID=".$line['URL']."');\">".$line['URL']."</a>"); 

    } 
?> 
</div> 
<img src="../media/hr450.gif" alt="Help Systems" /> 

<div id="footer"> 
<p>RJS Management Services Ltd Concorde House Trinity Park Solihull B37 7UQ<br /> 
Tel.+44 (0)121 635 870 Email. <a href="mailto:[email protected]">[email protected]</a></p> 
</div> 
</div> 

</div> 
<div id="rightcolumn"> 

<? 
$query = "SELECT * FROM `News` ORDER BY `Date` DESC limit 0, 4";  
$result = mysql_query($query) or die ("Failed To get latest news!"); 

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $ShortContent=substr($line['Content'],0,175); 
    print("<h2>".$line['Title']."</h2>".$ShortContent."...<p class=\"small\">".$line['Date']."</p><a href=\"../News.php?Article=".$line['ID']."\" class=\"clickformore\" ><span>click here for more</span></a><img src=\"../media/hr.gif\" alt=\"H-elp\" />"); 

} 
?> 

</div> 


</div> 
</body> 
</html> 


<? 
//Close any open connetions 
mysql_close; 
?> 

편집 (미안이 포럼에 새로 온 사람 때문에 정말 질문에 포함 할 몰랐다) 변경된 코드를 서버에 업로드하면 고용 법 페이지를 클릭 할 때 빈 페이지가 표시됩니다. 이제는 내가 잘못 저장했거나 잘못 업로드했거나 다른 것이 잘못되어 있는지 알 수 없습니다.

+0

보인다. – StasGrin

+0

cms, what_have_you_tried 및 일부 코드를 설명 하시겠습니까? – StasGrin

+0

모든 다운로드 링크에 # 개의 태그가 있습니까? 어떤 코드를 다운로드하고 있습니까? –

답변

0

먼저해야 할 일은 다운로드 링크를 생성하는 고용 페이지의 코드를 추가하는 것입니다. 이렇게하면 웹 사이트에서 다운로드 위치를 알 수 있습니다.

지금은 문제가 다운로드 링크 자체 인 것처럼 보입니다. 모든 링크는 해시 태그가있는 고용 페이지를 가리키고 있지만 해시 태그 다음은 변수가 아닙니다. 따라서 양식이 onclick 데이터를 제출해야하는 경우가 아니면 (극단적 인 경우는 거의 없습니다) 다운로드 URL이 올바르지 않습니다.

다운로드 링크가 표시되는 고용 페이지의 코드를 추가하면 거기에서 갈 수 있습니다.


문제는 분명히 고용 페이지에있는 링크입니다. 포함 된 파일이 이동 또는 수정 된 것으로 의심됩니다.

include("../Functions.inc");이 고용 페이지 (즉, 고용 페이지에서 한 폴더 위로)에 대한 상대 경로에 아직 있는지 확인하십시오.

문제가 아니라면 다음 일은 내 의견으로는 코드를 수정하는 것입니다. 새 창에서 다운로드를 열기 위해 별도의 자바 스크립트 코드를 사용할 필요는 없습니다.이에

print("<img src=\"../media/hr450.gif\"/><br><a href=\"#\" onclick=\"javascript:downloadwindow('../Download.php?ID=".$line['URL']."');\">".$line['URL']."</a>"); 

:

print("<img src=\"../media/hr450.gif\"/><br><a href=\"../Download.php?ID=".$line['URL']."\" target=\"_blank\">".$line['URL']."</a>"); 

난이 도움이되기를 바랍니다

그래서 고용 페이지에이 줄을 변경합니다.

+0

취업 코드 코드를 추가했습니다. – Sonnyjimjr3

+0

@ Sonnyjimjr3 답변을 수정했습니다. php include를 먼저 확인하십시오. 문제가 아니라면 필자가 설명한 방식으로 코드를 변경하십시오. 어떻게되는지 말해줘. – Marvin

+0

functions.inc 파일은 루트 폴더에 있으며 고용 법 파일은 하위 폴더에 있으므로 예를 들어 고용 페이지에서 하나의 폴더입니다. – Sonnyjimjr3

1

영향을받는 링크에서 소스를 살펴 보자

<a href="#" onclick="javascript:downloadwindow('../Download.php?ID=Adoption Leave_Employee Guidelines_Nov 2012.pdf');">Adoption Leave_Employee Guidelines_Nov 2012.pdf</a> 

당신은 자바 스크립트가 다운로드 창을 엽니 사용을하지만, 파이어 폭스에서 내 자바 스크립트 콘솔은 저에게이 이야기 : 하나

Error: ReferenceError: downloadwindow is not defined 

당신을 해당 시스템에 대한 누락 된 자바 스크립트 (.js) 파일을 업로드하는 것을 잊었거나 잘못 포함했습니다.

또한 Download.php에서 URL을 직접 열어 다운로드하려고 할 때 ID = .... pdf가 손상된 보관 파일로 이어지지 만 이는 다른 경우입니다.

+0

다운로드 URL로 직접 갔을 때 잘 다운로드되었습니다. – Marvin

+0

다시 시도해 보았습니다. 작동하며 작동하는 PDF가 표시되지만 파일의 이름은 members_something.zip이며 사용자에게 혼란을 줄 수 있습니다. – chrki

0

문서에 포함되지 않은 Javascript 함수를 호출 중이므로 분명히 작동하지 않습니다. 그러나 함수에 전달 된 값 중 하나는 파일의 URL (GET 매개 변수가있는 PHP)이며 올바른 것입니다.

<a href="../Download.php?ID=Adoption Leave_Employee Guidelines_Nov 2012.pdf">Adoption Leave_Employee Guidelines_Nov 2012.pdf</a> 

즉, 내에서 URL을이 시도

대신

<a href="#" onclick="javascript:downloadwindow('../Download.php?ID=Adoption Leave_Employee Guidelines_Nov 2012.pdf');">Adoption Leave_Employee Guidelines_Nov 2012.pdf</a> 

의 : 정확히 수행하는 방법을 모르는 경우 은 모든 링크에 대해 다음과 같은 작업을 수행 onclick 문과 href에 넣어. 우선 첫 번째 링크 만 수정하고 작동하는지 테스트 한 다음 모든 단일 링크에 대해 동일한 절차를 수행하십시오. 그것은 시간이 좀 걸릴거야하지만 작동합니다.

+0

코드를 변경하여 제안한 내용을 서버에 업로드하고 고용 법의 페이지를 새로 고쳤습니다. 실제로는 아무 것도 쓰지 않은 빈 페이지가 나오기 때문에 문제가 실제로 악화되었습니다. – Sonnyjimjr3

+0

그러나 PHP가 작동 중입니다. 직접 시도해보십시오. 여기를 클릭하십시오 : http://www.h-elpsystems.co.uk/Download.php?ID=Adoption%20Leave_Employee%20Guidelines_Nov%202012.pdf – mastazi

+0

충분합니다. 그것은 작동하지만 그것은 고용 법에 대한 링크를 클릭하면 빈 페이지가 나타납니다. – Sonnyjimjr3

1

이동 @mastazi에서와 iframe을 추가하고 그에 HREF를 대상으로, 당신은 페이지에 남아 그 방법 :

이 질문에 품질이 너무 낮처럼
<a href="download.php?pdf=..." target="downloadFrame"> 
<a href="... 
<iframe style="display:none;" name="downloadFrame"></iframe> 
+1

왜 iframe을 귀찮게합니까? target = "_ blank"를 지정하면 동일한 결과를 얻을 수 있습니다. – Marvin

+0

필자는 필자가 생각하기에 페이지에 머무를 필요성에 관해서 user247245에 동의하고 피터 스콧과 함께'target = "_ blank"를 사용하는 것에 동의한다. 내 의견으로는 더 깨끗한 해결책이기 때문이다. – mastazi

+0

@PeterScott, download.php에서 die ('err')를 시도하면 iframe이 필요한 이유가 표시됩니다. – Teson

관련 문제