2012-04-24 4 views
0

PHP로 CSV 파일을 내보낼 때마다 문제가 발생했습니다. 나는 그 때 내 쿼리가 더 레코드를 반환하지 않도록CSV 파일로 문자 변환

SELECT `interest_id`,`interest_name`,`interested_user_id` FROM `interest_list` WHERE `interest_name` LIKE 'úshion%' 

에 돌고

SELECT `interest_id`,`interest_name`,`interested_user_id` FROM `interest_list` WHERE `interest_name` LIKE '%fashion%' 

그러나 때마다 같은 MYSQL 쿼리 내가 MySQL의 쿼리 위를 이용하여 하나 개의 PHP 파일을 수출하는 것을 시도하고있다 . 문제를 어떻게 해결할 수 있는지 알려주십시오.

header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=data.csv'); 
$output = fopen('php://output', 'w'); 

//executed code 

fputcsv($output, $blankArray); 

이제 좀 도와주세요 : 내보내기 파일에서, 내가 좋아하는 코드를 작성했습니다. 그런 다음 동일한 파일에 내가 좋아하는 쓰기

$search_sql = "SELECT `interest_id`,`interest_name`,`interested_user_id` FROM `interest_list`"; 

    if(isset($_REQUEST['search_user_btn'])){ 

     if($_REQUEST['search_intr'] != '') 
$search_sql .= " WHERE `interest_name` LIKE '%".$_REQUEST['search_intr']."%' "; 

    }                     

: 사실

는, 내가 좋아하는 하나 개의 파일에 쿼리를 만드는 마지막으로 export.php에서

<a href="export.php?report=interest&qur=<?php echo $search_sql; ?>"><button>Export to CSV</button></a> 

header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=data.csv'); 
$output = fopen('php://output', 'w'); 

$ _REQUEST [ 'qur']의 가치를 얻으려고합니다. 그러나 $ _REQUEST [ 'qur']의 원래 값을 얻을 수 없습니다.

이제 생각하는 것이 좋습니다. 도와주세요 ....

+0

쿼리가 변경된 것으로 어떻게 판단합니까? 사용중인 정확한 코드를 표시하십시오. – deceze

+0

SQL을 생성하는 곳의 코드를 보여주고 실행하는 것이 더 도움이 될 것입니다. –

+0

다시 위의 질문을 참조하십시오, 나는 그것을 수정했습니다. – John

답변

1

URL에 임의의 문자가 있기 때문에 URL에 임의의 문자열을 삽입 할 수 없습니다. URL에 특별한 의미가 있기 때문입니다. PHP에서는 URL 매개 변수의 값을 rawurlencode()으로 인코딩 할 수 있습니다. 마찬가지로, 같은 이유로 HTML 문자열에 임의의 문자를 삽입 할 수 없습니다.

<?php 

$url = 'export.php?report=interest&qur=' = rawurlencode($search_sql); 

?> 
<a href="<?=htmlspecialchars($url)?>"><button>Export to CSV</button></a> 

URL에 SQL을 전달하면 get hacked가 호출됩니다.

+0

감사합니다. – John