2017-10-08 7 views
0

내가 만들고있는 WordPress 사이트의 버튼 클릭 (CSV)을 저장하는 파일을 제안하는 데 문제가 있습니다. 최소한 코드를 단순화했으며 여전히 작동하지 않습니다.다운로드를 제안하는 대신 PHP 리디렉션

내 템플릿 페이지 코드 :

<?php 
/* 
Template Name: My Awesome Custom Page 
*/ 

get_header(); ?> 
<html> 
<form style= "text-align:center;" name="getcsv" action="test.php"  method="post"> 
<select id="ddl"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> <br/> 
<input name= "export_excel" type="submit" value="Extraire"/> 
</form> 
</html> 
<?php get_footer(); 

그리고 test.php 파일이 있습니다

<?php 

if(isset($_POST["export_excel"])) 
{ 
header('Content-type: application/xls'); 
header('Content-Disposition: attachment; filename="test.xls"'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
$headers = array('Type of Activity', "Number of Activities", "Hours of   Instruction"); 
$row_1 = array($_POST['ddl'], $_POST['ddl'], $_POST['ddl']); 
$output = implode(',',$headers); 
$output.= "\n"; 
$output.= implode(',',$row_1); 
$output.= "\n"; 
} 
?> 

나는 버튼을 클릭하면, 그것은 http://localhost/test/pagedetest에서 http://localhost/test/pagedetest/test.php에 저를 리디렉션 및 I 물론 얻을 그 페이지가 결코 생성되지 않았기 때문에 404.

이것은 단지 테스트 케이스이므로 좀 더 복잡하게 만들 수는 있지만이 방법도 효과가 없습니다.

나는 PHP로 단순한 에코에 대신 fputcsv 기능을 사용하여 시도 : // 출력과 형태 대신 아약스 호출을 사용하지만, 사람이있는 경우 그 나에게 아무 (아무 오류 또는 아무것도)

을주지 않았다 왜 이것이 일어나고 있는지에 대한 아이디어, 미리 감사드립니다! 이 바보 같은 질문이지만 내 구글 - Fu는 아무것도를 설정하지 않았고 내가 오랫동안 워드 프레스 또는 PHP 중 하나와 함께 연주되지 않은 경우

건배 ...

죄송합니다!

답변

0

action="test.php"은 현재 디렉토리 내의 test.php 파일에 양식을 제출합니다. 나는 당신의 test.php가 http://localhost/test/test.php 또는 http://localhost/test.php에 있다고 추측합니다. 작업으로 절대 경로 (/test.php 또는 /test/test.php)를 사용하고 이것이 도움이되는지 확인하십시오.

+0

답변 해 주셔서 감사합니다. 나는 당신의 해결책을 시도했지만 주사위는 사용하지 않았다. http : //localhost/test/pagedetest/test/test.php 나 http : //localhost/test.php를 리디렉션 중 하나입니다. 내가 이해하지 못하는 이유는 내 URL을 변경하려고하는 이유입니다. Ajax 호출을 수행하면 데이터를 처리하고 내가 원하는 것을 반환합니다. 그것은 왜 다르게 여기에서 그것을 할 것이냐? – GunslingerPanda

+0

test.php의 위치는 어디입니까? 브라우저의 개발 도구에 따라 어떤 리디렉션이 발생합니까? – janh

+0

당신이 말한 바에 따르면 올바른 길을 가다듬고 Wordpress는 분명히 get_template_uri 함수로 경로를 명시 적으로 지정해야합니다. 파일 이름에 추가하면 제대로 작동합니다. 감사합니다. – GunslingerPanda