2016-03-24 16 views
0

私はthisソリューションを使用して、フォームデータを暗号化してデータベースに投稿しています。別のページでは、そのデータを復号化し、複数行のCSVファイルにすべて保存する必要があります。MYSQLデータを復号化してCSVを作成

私のコードでは、$ responseをエコーすると、すべての正しいデータがページに出力されますが、CSVに読み込むことはできません。このコードはCSVを作成しますが、各フィールドはランダムな場所にあり、奇数の文字が読み込まれます。私は運がない下のコード(配列にロードすることを含む)のバリエーションを試しました。

$theresults = $wpdb->get_results( 
" 
SELECT * 
FROM my_table 
" 
); 

foreach ($theresults as $result) { 

$iv = $result->iv; 

$responses = openssl_decrypt($result->title,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->fname,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->lname,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->address,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->emailadd,'AES-256-CBC',$encryption_key,0,$iv).",". 
openssl_decrypt($result->who,'AES-256-CBC',$encryption_key,0,$iv); 

fputcsv($output, explode(',',$responses)); 

} 

UPDATE

だから私はそうのように私のアレイを作成後、変数への私のデータを渡すことによって、この作業を得た:

$responses = array($title,$fname,$lname,$address,$age,$emailadd,$who); 
fputcsv($output, $responses); 

これは、CSVへの正しい行を挿入ファイル。

私が今問題になっているのは、ダイヤモンドの形、音楽記号、線、ボックスなどの奇妙な文字が付いたデータですか?それらの中に。誰もがこれを引き起こす原因を知っていますか?

+0

$応答に*正しい* csvがありますが、ディスクに正しく書き込むことができません。 – JLB

+0

* "各フィールドはランダムな場所にあります" * - あなたが得るものはランダムな文字で構成されていると言いますか?そうであれば、間違った暗号化方法、間違ったキーまたは間違ったエンコーディングを使用しました。これはどのように暗号化されますか?コードを見せてくれますか? –

+0

'$ output'とは何ですか?あなたのコードのどこにでも定義されているとは思えません。 – Chris

答えて

2

カンマで区切った文字列を手動で作成してからカンマで区切ります。フィールドにカンマが実際に含まれている場合、エスケープしていないので、これは壊れます。これにより、期待していたより多くのフィールドが生成され、間違った場所に表示されます。代わりに、フィールドを直接配列にドロップし、その配列をfputcsv()に渡します。これによりコンマをエスケープします。

$responses = [ 
    openssl_decrypt($result->title ...), 
    openssl_decrypt($result->fname ...), 
    ... 
]; 
fputcsv($output, $responses); 
+0

ありがとう私は後でそれを行ってくれます:) – Zoee

+0

それは私のために働いていない、私は配列にそれをロードするために多くの方法を試しただけでエラーが毎回、私はエラーも取得していないその白いページだけでなく、すべてのエコーを削除します。私はデータをエコーすることができ、変数への読み込みを試してみましたが、配列に入れようとするとすぐに分かりません! – Zoee

+0

PHPが古すぎる場合は、短い配列構文 '[1,2,3]'を使用することができず、古いスタイル 'array(1,2,3)'を使用する必要があります。また、コマンドラインから 'php -l file.php'をソースファイル上で実行することもできます。これは構文チェックを行い、何かが間違っているかどうかを伝えます。 –

関連する問題