0

PHPでCSVファイルをエクスポートするたびに問題が発生しました。私は次のようなMYSQLクエリを持っています

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

しかし、上記のMySQLクエリを使用して1つのPHPファイルをエクスポートしようとすると、クエリは次のようになります。

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

そのため、レコードは返されません。どうすれば問題を解決できるか教えてください。エクスポートファイルに、次のようなコードを記述しました。

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);

今私を助けてください。

実際、私は次のような1つのファイルでクエリを実行します。

$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']."%' ";

    }                                                                                

次に、同じファイルに次のように記述します。

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

最後にexport.phpで

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

$_REQUEST['qur']の値を取得しようとしています。しかし、$ _REQUEST['qur']の元の値を取得できません。

今では理にかなっていると思います。助けてください....

4

1 に答える 1

1

URL には特別な意味を持つ文字がいくつかあるため、URL にランダムな文字列を挿入することはできません。PHP では、 rawurlencode()を使用して URL パラメーターの値をエンコードできます。同様に、同じ理由で HTML 文字列にランダムな文字を挿入することはできません。

<?php

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

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

いずれにせよ、URL に SQL を渡すと、ハッキングされる可能性があります。

于 2012-04-24T08:03:31.540 に答える