質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1029閲覧

PHPとjavascriptでのCSV出力についてです。。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/07/29 06:47

実現したいこと

一覧画面をCSV出力したい。一覧画面の上記にボタン用意して、そのボタン押下時,
CSV出力する
今の状況だと起動時に勝手にダウンロードされてしまうので、phpのソース内にあるfunction処理を別で行いたいイメージ説明

該当のソースコード

<tn0010.php>

<?php $count=1; $count2=0; ※中略(他の$から始まる変数も同じように宣言してあります)    $W_CSV = getForms($forms, 'W_CSV'); ※中略 一覧画面に表示するコンボやソート順の設定について記述してあります。 $sql = ""; $sql .= " SELECT "; $sql .= " KANRINO,"; $sql .=" KANRINO_OYA,"; $sql .=" IPADDRESS,"; $sql .= " keiti.KEITAINM AS KEITAINM,"; $sql .=" YOUTO,"; $sql .=" tant.TANTNM AS TANTNM,"; $sql .=" MAKER,"; $sql .=" OS,"; $sql .=" CPUNM,"; $sql .=" DOMEIN,"; $sql .=" CPU,"; $sql .=" KOASU,"; $sql .=" MEMORI,"; $sql .=" DESK1,"; $sql .=" DESK2,"; $sql .=" DESK3,"; $sql .=" DESK4,"; $sql .=" DESK5,"; $sql .=" OSLICENCE,"; $sql .=" OFFICE,"; $sql .=" CASE WHEN KONYUYM IS NULL THEN '-' ELSE SUBSTR(TO_CHAR(KONYUYM,'000000'),1,5) || '/' || SUBSTR(TO_CHAR(KONYUYM,'000000'),6,2) END KONYUYM, "; $sql .=" CASE WHEN HAIKIYM IS NULL THEN '-' ELSE SUBSTR(TO_CHAR(HAIKIYM,'000000'),1,5) || '/' || SUBSTR(TO_CHAR(HAIKIYM,'000000'),6,2) END HAIKIYM, "; $sql .=" BIKO"; $sql .= " FROM "; $sql .= " public.M_TANMATU tanm "; $sql .= " LEFT JOIN "; $sql .= " public.M_TANT tant "; $sql .= " ON "; $sql .= " tanm.tantcd = tant.tantcd "; $sql .= " LEFT JOIN "; $sql .= " public.M_KEITAI keiti "; $sql .= " ON "; $sql .= " tanm.keitaikb = keiti.keitaikb "; If ($W_JOTAI2 != 0) { $sql .= " WHERE keiti.KEITAINM = '".$W_JOTAI[$W_JOTAI2]."' "; } If ($W_KENSAKU != "" AND $W_JOTAI2 != 0) { $sql .= " AND ("; } If ($W_KENSAKU != "" AND $W_JOTAI2 == 0) { $sql .= " WHERE "; } If ($W_KENSAKU != "") { $sql .= " KANRINO Like '%".$W_KENSAKU."%' " ; $sql .= "OR"; $sql .= " KANRINO_OYA Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " IPADDRESS Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " KEITAINM Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " YOUTO Like '%".$W_KENSAKU."%'"; $sql .= "OR"; $sql .= " TANTNM Like '%".$W_KENSAKU."%'"; $sql .= "OR"; $sql .= " MAKER Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " OS Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " CPUNM Like'%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " DOMEIN Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " CPU Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " CAST(KOASU AS TEXT) Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " MEMORI Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " DESK1 Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " DESK2 Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " DESK3 Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " DESK4 Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " DESK5 Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " OSLICENCE Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " OFFICE Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " CAST(KONYUYM AS TEXT) Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " CAST(HAIKIYM AS TEXT) Like '%".$W_KENSAKU."%' "; $sql .= "OR"; $sql .= " BIKO Like '%".$W_KENSAKU."%' "; If ($W_KENSAKU != "" AND $W_JOTAI2 != 0) { $sql .= ")"; } } : 中略 $res = dbGetList($pdo_conn, $sql); $datalist = dbGetList($pdo_conn, $sql); $W_CSV = []; foreach($res as $row) { $KANRINO[$count2] = $row['kanrino']; $KANRINO_OYA[$count2] = $row['kanrino_oya']; $IPADDRESS[$count2] = $row['ipaddress']; $KEITAINM[$count2] = $row['keitainm']; $YOUTO[$count2] = $row['youto']; $TANTNNM[$count2] = $row['tantnm']; $MAKER[$count2] = $row['maker']; $OS[$count2] = $row['os']; $CPUNM[$count2] = $row['cpunm']; $DOMEIN[$count2] = $row['domein']; $CPU[$count2] = $row['cpu']; $KOASU[$count2] = $row['koasu']; $MEMORI[$count2] = $row['memori']; $DESK1[$count2] = $row['desk1']; $DESK2[$count2] = $row['desk2']; $DESK3[$count2] = $row['desk3']; $DESK4[$count2] = $row['desk4']; $DESK5[$count2] = $row['desk5']; $OSLICENCE[$count2] = $row['oslicence']; $OFFICE[$count2] = $row['office']; $KONYUYM[$count2] = $row['konyuym']; $HAIKIYM[$count2] = $row['haikiym']; $BIKO[$count2] = $row['biko']; array_push($W_CSV, $row); $count2+=1; } function putCsv($data) { try { $csvFileName = '/tmp/'. 'tanmatu.csv'; $res = fopen($csvFileName, "w"); if ($res === FALSE) { throw new Exception('ファイルの書き込みに失敗しました。'); } $header = ["kanrino", "kanrino_oya", "ipaddress", "keitainm","youto","tantnm","mekar","OS","cpunm","domein","CPU","koasu","memori", "desk1","desk2","desk3","desk4","desk5","OSlicence","Office","konyuym","haikiym","biko"]; fputcsv($res, $header); foreach($data as $dataInfo) { mb_convert_variables('CP932', 'UTF-8', $dataInfo); fputcsv($res, (array)$dataInfo); } fclose($res); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $csvFileName); header('Content-Length: ' . filesize($csvFileName)); header('Content-Transfer-Encoding: binary'); readfile($csvFileName); exit; } catch(Exception $e) { echo $e->getMessage(); } } putCsv($W_CSV); $smarty->assign("KANRINO", $KANRINO); $smarty->assign("KEITAINM", $KEITAINM); $smarty->assign("YOUTO", $YOUTO); $smarty->assign("TANTNM", $TANTNM); $smarty->assign("MAKER", $MAKER); $smarty->assign("OS", $OS); $smarty->assign("IPADDRESS", $IPADDRESS); $smarty->assign("CPUNM", $CPUNM); $smarty->assign("DOMEIN", $DOMEIN); $smarty->assign("CPU", $CPU); $smarty->assign("KOASU", $KOASU); $smarty->assign("MEMORI", $MEMORI); $smarty->assign("DESK1", $DESK1); $smarty->assign("DESK2", $DESK2); $smarty->assign("DESK3", $DESK3); $smarty->assign("DESK4", $DESK4); $smarty->assign("DESK5", $DESK5); $smarty->assign("OSLICENCE", $OSLICENCE); $smarty->assign("OFFICE", $OFFICE); $smarty->assign("KONYUYM", $KONYUYM); $smarty->assign("HAIKIYM", $HAIKIYM); $smarty->assign("BIKO", $BIKO); $smarty->assign("KANRINO_OYA", $KANRINO_OYA); $smarty->assign("W_JOTAI", $W_JOTAI); $smarty->assign("W_JOTAI2", $W_JOTAI2); $smarty->assign("W_SORT", $W_SORT); $smarty->assign("W_SORT2", $W_SORT2); $smarty->assign("W_CSV", $W_CSV); $smarty->assign("W_KENSAKU", $W_KENSAKU); $smarty->assign("datalist", $datalist); $smarty->display("tn0010.tpl"); ?>

<tn0010.tpl>

<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="./style.css"> <TITLE>端末管理台帳システム</TITLE> <SCRIPT Language="JavaScript"> <!-- function window_reload(){ location.href = "tn0010.php" } function btnJOTAI() { var myFruit = document.getElementsByName("W_JOTAI")[0]; document.form2.W_JOTAI.value = myFruit.options[myFruit.selectedIndex].value; var cmbSort = document.getElementsByName("W_SORT")[0]; document.form2.W_SORT.value = cmbSort.options[cmbSort.selectedIndex].value; document.form2.W_KENSAKU.value= document.getElementsByName("W_KENSAKU")[0].value; document.form2.submit(); } function Setclear(){ document.form2.W_JOTAI.value = "0"; document.form2.W_SORT.value = "0"; document.form2.W_KENSAKU.value = ""; document.form2.submit(); } //--> </SCRIPT> </HEAD> <BODY> <FORM name="form1" action="tn0011.php" method="POST" target="bottom">*} <FORM name="form1" action="tn0011.php" method="POST" target="main"> <INPUT Type="hidden" name="W_Flg" value="N"> <TABLE border="0" cellpadding="2" cellspacing="1" width="100%"> <TR> <TD class="c"><FONT color="#FFFFFF">端末管理台帳</FONT></TD> </TR> </TABLE> <TABLE border="0" cellpadding="2" cellspacing="1"> <TR> <TD><INPUT type="submit" value="新規登録"></TD> <TD width="50"> </TD> <TD><font color="BLUE">形態</font></TD> <TD nowrap> {html_options name=W_JOTAI options=$W_JOTAI selected=$W_JOTAI2} <TD><INPUT type="button" name="sa" value="表示" onClick="btnJOTAI();"></TD> <TD width="50"> </TD> <TD><font color="BLUE">並び順</font></TD> <TD nowrap> {html_options name=W_SORT options=$W_SORT selected=$W_SORT2} </TD> <TD><INPUT type="button" name="sa" value="ソート" onClick="btnJOTAI();"></TD> <TD><INPUT type="button" name="sa" value="CSV出力"></TD> <TD width="50"></TD> <TD><font color="BLUE">文字列検索</font></TD> <TD nowrap> <INPUT type="text" style="ime-mode:active" name="W_KENSAKU" value="{$W_KENSAKU}"> </TD> <TD><INPUT type="button" name="ke" value="検索" onClick="btnJOTAI();"></TD> <TD><INPUT type="Reset" name="Re" value="検索条件クリア" onClick="Setclear();"></TD> </TR> </TR> </TABLE> <CENTER> <TABLE border="1" cellpadding="2" cellspacing="1"> <TR> ※文字数制限のため中略(一覧画面に表示する内容が記載されている) </TABLE> <BR> </CENTER> </FORM> <FORM name="form2" action="tn0010.php" method="POST"> <INPUT type="hidden" name="W_JOTAI" value=""> <INPUT type="hidden" name="W_SORT" value=""> <INPUT type="hidden" name="W_KENSAKU" value=""> </FORM> </BODY> </HTML>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/07/29 06:57

アカウント作り直したところで、コードとやり口同じだと結果は同じかと。
退会済みユーザー

退会済みユーザー

2022/07/29 06:58

じゃあ個人情報ばらせと?これで正常に動いているんで。ブロック機能ほしいわ
m.ts10806

2022/07/29 07:00

何にキレてるか分からないですが、 作り直して同じコード同じやり方にするなら退会する意味ないという話です。 サービスに無駄なデータと負荷かけることになるので、迷惑行為に等しいです。
m.ts10806

2022/07/29 07:01

結局同じ指摘がつくだけですし(特にSQLインジェクションの件)
退会済みユーザー

退会済みユーザー

2022/07/29 07:02

そんな難しい言葉言われてもわかりません
m.ts10806

2022/07/29 07:12 編集

このまま実装してもセキュリティ的に物凄くマズい実装だということです。そのまま検索すれば優しい説明してくれる記事は幾らでもあるでしょう。 あなたが最後にした質問でベストアンサーに選んだ方の回答にも言及されていました。 一応、Webセキュリティ界隈ではかなり有名な方なのですが、 それは無関係にしても、せっかくの回答を全く読まずに理解せずにって非常に無礼な方なんですね。 それだけ必須の知識・技術ということなんですけどね(入門書でも言及があるくらい)
yambejp

2022/07/29 07:33

助言を聞く気がないなら質問しなければいいのに・・・というのが正直な感想です。 prepareで処理しないなら早晩破綻しますよ。 省略しているとか言い訳はいいのでちゃんと手順を踏んでください
退会済みユーザー

退会済みユーザー

2022/07/29 12:31

コメントや指摘が少ないのは、質問を見ている人が少ないからじゃなくて、質問者さんが回答者側に多大なる負担をかける説明不足のせいです。見てるけどわけわからんからスルーされる。それでも見てくれて指摘してくれる方には一定の敬意は評して欲しいです。売り言葉に買い言葉で険悪になると余計にコメントがつきにくいので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問