2016-05-31 7 views
0

次のコードを使用してmysqlの行からエコー結果を取得していますが、これらの出力が生成され、ダウンロードされる必要があります(私はそれをエコーする必要はありません) 。私のSQLデータは、次のような単純な文字列です。PHPのmysql行の文字列データをPHPの.textファイルにエクスポート

Ar2rew3 
df3432ss 
sddfdsf 
sdfsdfsd 
sdfsdsd3 
sererere 

私は他の文字列には一切改行する必要はありません。現在のコードでどのコードを追加するべきかアドバイスしてください。私は非常に簡単な解決策が必要です。私は正直にそれが長期的にはあなたを助けるとは思わないように私が直接あなたの質問にお答えしませんので

echo '<form action="" method="post"> 
    Email:<input type="text" name="emailadrs"><br> 
    Worklink:<input type="text" name="worklink"><br> 
    <input type="submit" name="submit" value="Submit"></form>'; 

if (isset($_POST['submit'])) { 
$emailadrs = $_POST['emailadrs']; 
$worklink = $_POST['worklink']; 

$sub_stat=1; 
$qu = mysql_query("SELECT asin FROM working WHERE w_email='$emailadrs' AND w_asin_link='$worklink' AND submission_status='$sub_stat'"); 
while ($row = mysql_fetch_array($qu)) { 
    $asin = $row['asin']."<br>"; 
    echo $asin; 
} 
} 
+0

[Little Bobby](http://bobby-tables.com/)は[あなたのスクリプトはSQLインジェクション攻撃の危険性があると言います。](http://stackoverflow.com/questions/60174/how-can -i-prevent-sql-injection-in-php)を実行します。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+0

[mysql_ *関数の使用をやめてください](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [これらの拡張機能](http://php.net/manual/en/migration70.removed-exts-sapis.php)はPHP 7で削除されました。[prepared](http://en.wikipedia.org/ [PDO](http://php.net/manual/en/pdo.prepared-statements.php)および[MySQLi](http://php.net/manual/en/mysqli.quickstart)のwiki/Prepared_statement)ステートメント.prepared-statements.php)、PDOの使用を検討してください。[これは本当に簡単です](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+0

http:// stackoverflowを参照してください。com/questions/1465573/for-download-a-file-using-phpを実行し、 '
'を '\ n'に置き換え、' echo'を条件付きに移動します。 – chris85

答えて

1

[OK]をダウンロードされますの.textファイル内のすべての私のエコー出力をしたい、私は与えるだろういくつかのポインタがあります...

1)あなたのスクリプトはSQLインジェクション攻撃に開放されています。この方法を続けると、慎重に作成されたSQLインジェクション攻撃でデータベースのあらゆる部分をエクスポートできます。 - ここで読む:http://shishirceh.blogspot.de/2011/06/sql-injection-beginners-tutorial.htmlあなたはSQLインジェクションがわからない場合。

2)あなたのコードを見ると、私はあなたがPHPをかなり新しくしていると思います。私たちは皆、どこかで始める必要があります。 "バニラ" PHPは、PHPコミュニティの幸いなことに、あなたがPHPアプリケーションの作成から多くのリスクを取ることができる "フレームワーク"を作成しています。私はsymfonyを個人的に使っていて、それを始めるのは本当に簡単です。http://symfony.com/doc/current/quick_tour/the_big_picture.html

3)MySQLの使い方は古く、PHPの最新バージョンと互換性がありません。 http://www.w3schools.com/php/php_mysql_prepared_statements.asp

4)プログラミング方法(ユーザーが見ているビットとウェブサイトを動作させるビットを混ぜる)は、セキュリティ、互換性他のライブラリと一緒に、健全性)フレームワークはあなたのためにこれを世話し、これらの要素を置く特定の場所を与えます。しかし、PHPを実際に利用して「良い」プログラマになるためには、まずオブジェクト指向プログラミングを学ぶべきです。この本を読むことをお勧めします。http://www.ycit-he.org/files/Resources/PHP%20Objects,%20Patterns,%20and%20Practice.pdf

5)symfonyルートをダウンすると、ファイルに書き込むためのコンポーネントをfilesytem:あなたはそれが

// Generate response 
$response = new Response(); 

// Set headers 
$response->headers->set('Cache-Control', 'private'); 
$response->headers->set('Content-type', mime_content_type($filename)); 
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '";'); 
$response->headers->set('Content-length', filesize($filename)); 

// Send headers before outputting anything 
$response->sendHeaders(); 

$response->setContent(file_get_contents($filename)); 

・ホープ、このことができます生成された後、あなたが簡単にファイルをダウンロードするようにユーザーに強制することができsymfonyでhttp://symfony.com/doc/current/components/filesystem/introduction.html

6)、

Mark