【PHP】下らねぇ質問はここに書き込みやがれ 14

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f97-W3aP)
垢版 |
2022/09/20(火) 16:46:23.39ID:Sb2Kpzh+0
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 13
https://mevius.5ch.net/test/read.cgi/tech/1631147923/

次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2023/03/01(水) 20:41:59.79ID:QN9phVrM0
>>535
ああ、一旦オブジェクトなり配列にして、未登録のデータだった時にオブジェクト一個追加してJSON全部上書きしちゃうのは自分でもできそう

データの数も3桁行かない程度だし、データ読み出して書くのもそんな重くならないか

後は動的にデータおる部分の見直しですね
2023/03/05(日) 11:24:39.77ID:QdgOL0Oo0
どちらが適正ですか?

try {
//ファイルを保存先ディレクトリに移動させる
if (move_uploaded_file($_FILES['upload_image']['tmp_name'], $save)) {
echo 'アップロード成功しました。';
} else {
echo 'アップロード失敗しました。';
}
} catch (Exception $e) {
echo 'アップロードエラー: ' . $e->getMessage();
}
try {
//ファイルを保存先ディレクトリに移動させる
move_uploaded_file($_FILES['upload_image']['tmp_name'], $save);
} catch (Exception $e) {
echo 'アップロードエラー: ' . $e->getMessage();
}
2023/03/05(日) 12:02:39.82ID:A2ppgH2U0
>>537
2023/03/05(日) 13:31:58.17ID:QdgOL0Oo0
>>538ありがとうございます。
540デフォルトの名無しさん (ワッチョイ 1302-QeO8)
垢版 |
2023/03/05(日) 15:15:03.70ID:QdgOL0Oo0
phpの実行を3つに区分したとして、
「データベースのmysqli接続」
「POST送信データバリデーションチェック」
「クエリ実行」
try-catch文、トランザクション処理を記述する場所
って以下であっていますか?


try{
//データベース接続処理
...
//入力バリデーションチェック
...

//トランザクション開始
$mysqli->begin_transaction();
//クエリ実行
...
// トランザクション処理
if (!$mysqli->commit()) {
throw new Exception("トランザクションが失敗しました。");
}
}catch (Exception $e) {
echo $e->getMessage();
$mysqli->rollback();
}
2023/03/05(日) 17:02:00.95ID:pluyAGbia
commit部分のthrowは要らないのでは?
2023/03/05(日) 17:44:49.95ID:M62PQQGq0
commitしようとしたら、ファイルが壊れました、とか
2023/03/05(日) 18:28:19.70ID:pluyAGbia
DB壊れたらシステム止まって別のトランザクションも動かないだろうから
全てのトランザクションに書かなくて良いと思う
2023/03/05(日) 21:45:08.47ID:GipSGO790
PDOで例外投げるよう設定して
catchすべきなのはPDOExceptionじゃね
2023/03/06(月) 10:18:27.62ID:8oxT6MrcM
こういうのもchatgptさんに
PHPでDB接続する例文書いて。例外おきたときの対処もよろ。
と言うだけでだいたい書いてくれる。

でもさ、
もしも全員がchatgptさんだけ使って
ブログ記事などが一切なくなった場合は
どこからサンプルソース解析してくるんだろう?
公式リファレンスしか存在しなくても
たくさんサンプルあみだせるんかな?
2023/03/06(月) 13:06:49.25ID:UVP5G7/Er
chatgptかなりいい加減だぞ
こっちが詳しく聞いてもありえないコードと解説もよくするし
2023/03/12(日) 10:28:41.64ID:/WQQIT0F0
PDOStatement::columnCountって
PDOStatement::fetchができる回数を示しているものであってますか?
int(0)を想定したクエリ出しても
どんなクエリでも常にint(n)になってしまってお手上げです
PDOStatement::rowCountはSQLiteのため常に0を返すとのことで使えません
ものすごい古いNAS上に構築された環境なのでそれの影響もあるかもしれませんが
ループ上でfetchがbool返すまでやるしかないでしょうか?
2023/03/12(日) 10:29:40.64ID:/WQQIT0F0
どんなクエリでも常にint(n)になってしまってお手上げです

どんなクエリでも常にint(n)になってしまってお手上げです (n>0)
です
2023/03/12(日) 10:33:06.48ID:yWzg52lT0
> PDOStatement::fetchができる回数を示しているものであってますか?
間違ってます。
2023/03/12(日) 11:14:32.05ID:/WQQIT0F0
そうですねすみません
よく読んだら全然違った
久々にPHPいじってるのでこんなこともわからなくなってるとは・・・
*が最大数で1以上になるのは当たり前ですね
2023/04/24(月) 10:58:21.24ID:JH1evJvp0
みなさんはIF地獄になったときどうしてますか?
最適化するまで試行錯誤しますか?
それとも「できる・動く」を優先して進めますか?
2023/04/24(月) 11:03:45.16ID:CIhFKz1G0
動けば良いってものじゃない
553デフォルトの名無しさん (ワッチョイ 9ee7-RykB)
垢版 |
2023/04/24(月) 11:05:33.74ID:xRkzUvA90
>>551
メソッドか関数にして追い出しておく
あとでリファクタする際にその関数だけでテストできるように下準備だけしておく

未来の自分・他人がやりやすいようにして今は目をつぶる、がコーディングの鉄則
最適化は最初の仕事かつ最後の仕事だが、途中でやるのだけはNG
2023/04/24(月) 16:04:38.35ID:JH1evJvp0
>>553
メソッドに追い出してもIFが続きますね。
どちらにしろ「Aがある場合~Aがない場合~」みたいな処理が必要ですし。

綺麗なコードとわかりやすいコードって違うと思うんですよね。
1ファイルにダラーっとコードが記述されると汚いですが、
上から下まで読めば何がしたいかは大体わかります。

しかし、クラスなりメソッドなりに分けると、複数ファイルにまたがって複雑です。
適切な名前を付けてファイルを参照しやすくすれば手間は軽減されますが、
今度は適切な名前を考えるのに時間を消費し、開発に遅れが生じてしまいます。
2023/04/24(月) 19:55:07.81ID:CirHdNf40
綺麗でもわかりにくいコードはあるが、汚いのにわかりやすいコードというのは無いな
2023/04/25(火) 07:41:04.47ID:ubLXos3L0
>>554
一度適当なフレームワークでシステム作ってみるといいよ
感想がぜんぜん変わるから

> 今度は適切な名前を考えるのに時間を消費し、開発に遅れが生じてしまいます。

copilotさんとか使うといい
2023/04/25(火) 08:12:37.51ID:CC33Xm/N0
>>556
一応、CakePHP→Laravelと通ってます。

単純なシステムなら綺麗でわかりやすいコードになりますが、
複雑な要件になると、力技の部分がどうしてもでてきます。
2023/04/25(火) 13:06:17.18ID:ubLXos3L0
>>557
フレームワーク使用したことがあるのに「クラスなりメソッドなりに分けると、複数ファイルにまたがって複雑です。」とか言っちゃうのはかなりまずい気がするけど、複雑な要件の実装時に十分に責任分解できてないんじゃないかなぁ…

https://github.com/alexeymezenin/laravel-best-practices/blob/master/japanese.md#%E5%8D%98%E4%B8%80%E8%B2%AC%E4%BB%BB%E3%81%AE%E5%8E%9F%E5%89%87

これのGoodがGoodに感じられないってことだよね?
2023/04/25(火) 13:27:47.02ID:gJ92KJGfa
コミュニティーの議論や歴史を調べること

Ruby on Rails では、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した

そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた

また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
2023/04/25(火) 13:27:53.51ID:A07qb0io0
こういうのは2つ実際に書いてみて、両者を見比べて良い方を採用する
理屈よりも、自分の目で見て判断するのが良い
2023/04/25(火) 15:25:51.23ID:CC33Xm/N0
>>558
いえ、これはGoodです。理想です。
しかし、システムの規模が大きくなると処理が増えるんです。
複数のメソッドを役割ごとに用意し、コントローラから指示を与えなければいけません。

>>560
今の自分はそうしてますね。
PHPに限らず、Javascriptなんかも最初はそのまま書いて、
後からjQueryにしたり、Vueに変更したりします。

結果、倍時間がかかって効率が悪くなります。
同じことをしているとモチベが下がり、開発意欲は失われます。
2023/04/25(火) 15:27:54.01ID:dvdIAVRA0
古いPHPのシステムを保守するならDockerにぶち込むのが一番?
2023/04/26(水) 13:32:18.14ID:oPAFNUffd
結局ifは減らないんだよね
ファイルを分けても分けなくても、オブジェクト指向でもそうでなくとも

Strategy/StateパターンとTemplateパターンの併用にして
スイッチっぽく分岐をわかりやすするのが一番かな
2023/04/26(水) 13:45:21.48ID:DHcVafSS0
ifを無理に減らす必要は無いのでは?
必要なら書かなきゃいけないし
ただ処理が集約出来るとかなら外に追い出したらいいし
パターンが多い場合はswitch()の方が良い場合も確かにあるし
ケースバイケースかと

elseifが並ぶのは個人的に嫌いだがw
2023/04/26(水) 13:47:42.93ID:poJ+ClSWd
elseif嫌いわかる
elseの中にif書きたい

パターン3つ以上になるならswitchにするな
2023/04/26(水) 13:57:33.29ID:w+qfVGMw0
else if は嫌いというか、あとで取捨選択が面倒なので
if文単独で成り立つようにしておくことが多いな
2023/04/28(金) 14:22:47.60ID:woDvEBlt0
訊きたいことありましたが自決しました
568デフォルトの名無しさん (ブーイモ MMc9-EW+4)
垢版 |
2023/04/28(金) 14:52:55.46ID:L2hGySASM
おお死んでしまうとはなにごとだ
2023/04/28(金) 15:31:57.97ID:4N/b4mKa0
盆には帰ってこいよ
570デフォルトの名無しさん (ワッチョイ b77c-6bRy)
垢版 |
2023/04/30(日) 00:40:31.69ID:z7x3mWoF0
PHP7.2.24をインストールしました。Composerもインストールしました。
次のようなExtensionも使えるようにしたいのですが、つまっています。
ext-bcmath,ext-ctype,ext-curl,・・・

ネット上でみたところ、PHPの用語でモジュールとExtension、ライブラリとあるようですが、
それぞれ違うものなのですか?
2023/04/30(日) 01:15:52.37ID:vhG6z0vz0
PHPの拡張ならそれを入れないと使えないのでは・・・
composerはあくまで自分の作るプログラムで使うライブラリを導入するもの
2023/05/12(金) 22:24:38.02ID:sJueD97p0
サーバーのバックエンドの*.phpはpost送信などで任意で呼び出して実行されますが
このバックエンドの*.phpで自発的に一定時間ごとにプログラムを駆動させることはできますか?
例えば1時間おきとか1日おきとかに規定プログラムを実行なんていうのは
2023/05/12(金) 22:30:23.15ID:+3Auf0UC0
cronに登録すればいいだけでは?
PHPをデーモンとして常駐させてその中で定期的に動かす方法もあるだろうけど
2023/05/12(金) 23:50:55.10ID:A3+wmcch0
無限ループとsleep使ったスクリプトを起動させときゃいいけど
自分でコントロール出来ないサーバだと勝手にkillされるかもな
2023/05/13(土) 09:35:12.10ID:vNstIXFZ0
例えばWindowsならコマンドプロンプトで
「php.exe <そのファイル>」
と打てば実行できる(環境変数に入ってる前提で)

そういうことじゃないの?
あとはWindowsならタスクスケジューラとかLinuxならcronとかで、同じように実行すればいい
2023/05/18(木) 11:36:31.84ID:cerdIEN00
フロントエンドはJS、バックエンドはPHPってできるだけ切り離したい

バックエンドとしてDBからデータ受け取るためだけにPHP使うってありなのかな?
あと現状スクラッチ開発しかしたことがないからバックエンド向けのフレームワークも試してみたい
2023/05/18(木) 11:39:20.88ID:yxJWp9Lm0
すればいいじゃん
がんばれ
2023/05/18(木) 12:33:14.63ID:l6GHSnlrr
言語はなんでもいいならphpなんて選ばない
普通はrubyかJavaかpythonだぞ
phpはやめとけ
2023/05/18(木) 12:43:42.00ID:4rcvRPf10
Pythonは完全に対応しているサーバーが少ないみたい
Pythonとdjangoでバックエンド書く方法が自分にはまだわからない
2023/05/18(木) 15:55:36.70ID:nTE2uard0
>>576
バックエンドには通常PHPを使用するのでアリ
フレームワークはFuelPHPが良いね
フロントエンドのフレームワークはjQueryを使う
2023/05/18(木) 16:38:05.22ID:BkqgSu2K0
>>578
その3つの方が選ばないわw
PHPが一番楽だろw
それにPHPのスレでその返答はないわ
ゴミは消えろ
2023/05/18(木) 16:43:12.95ID:psogGPWLr
まあラクなのはphpやろなあ
ケースによって最適は異なるから、便利な言葉「場合による」
2023/05/18(木) 17:32:55.73ID:7XjO1SKk0
なんでも使える自社サーバーなのか、
レンタルサーバーのつもりかで選択肢かわるもんな

phpはだいたい使えるから仕方ない
2023/05/18(木) 19:26:52.18ID:iyBRbBgp0
VPSなら何だって使える
2023/05/19(金) 01:52:10.66ID:TiXR4GEz0
>>583
会社のサーバーがさくらのレンサバだから何でもかんでもPHPなんだよね

ごく小規模だからスクラッチ開発が基本だし
レベル低くて仕事で精一杯だしで何か独学するって余裕もないから、まずPHPの手軽さからわざと離れてJSでDOM操作は分けてみようかなぁと
2023/05/22(月) 01:29:49.15ID:6n6FPMUf0
別に言語はなんでもいいけど
クライアントJSから直接サーバのDBにはアクセスできないし
非同期でやる場合、だいたい>>576のようになるんじゃね
2023/06/10(土) 20:37:19.56ID:TSaFGI4o0
WSL2(ubuntu)にLaravelインスコしてみたけど
メモリ8G程度だときっついですね
docker desktopとかwindowsターミナル入れろとかこの辺は
aptでdocker入れたりubuntu直接起動したりすればおkな感じですか?
とりあえずやってみてその方法でもいけたはいけたんですが(メモリも1Gぐらい減った)
ビルドしてるときの表示がバグったりちょっと不安要素がありました
2023/06/11(日) 08:50:59.31ID:nugYPewD0
メモリも問題だけど、たぶん最大の問題はファイルを配置した場所だと思うよ
・ソースコードをWSL2ディストリビューション領域内に配置する
で大幅に改善すると思う
2023/06/12(月) 08:08:55.93ID:VNkMF7gVM
httpリクエストで動的なサイトからデータ取得するのってやっぱり無理なんですかね?javascriptでhtmlが生成されるよなページんんだけど
2023/06/12(月) 10:00:10.61ID:AjUdrP5R0
無理ではない
curlやDOM操作のライブラリ自体は揃ってるんだから、後はあなたが頑張ってそのJavaScriptの動作を真似るだけ
2023/06/12(月) 10:25:34.03ID:mHRjcInk0
おれなら生成はブラウザにやらせるかな
出来た頃合いを見計らってデータを盗む
2023/06/12(月) 10:27:10.81ID:wQ6JiRj1M
例を示していただけませんか
2023/06/12(月) 10:29:59.61ID:wQ6JiRj1M
javascriptは通常ブラウザが実行します。しかしhttpリクエストではブラウザを介さないためjavascript は実行されません。ヘッドレスブラウザなどを使えば動的なコンテンツを取得できますが、わたしの課題はhttpリクエストで動的ページからデータを取得することです
2023/06/12(月) 10:34:38.95ID:wQ6JiRj1M
レスポンスを取得してからjavascriptを一回実行すればいいのかな?そんなことできるのかな
2023/06/12(月) 10:41:43.85ID:mHRjcInk0
大変だね
ブラウザ禁止縛りプレイならまあ自分で頑張るしかないね

ていうかphantomjsって開発停止してんだな 知らんかった
2023/06/12(月) 21:30:39.08ID:DY0b1d5xM
httpリクエストで動的なサイトからデータ取得するのってやっぱり無理なんですかね?javascriptでhtmlが生成されるよなページんんだけど
2023/06/12(月) 21:39:47.58ID:sQEwwMG40
おまえLaravelスレのアラシだろ
うざいよ
2023/06/12(月) 22:12:16.13ID:mHRjcInk0
>>596
puppeteerがいいんじゃない?

おれは使ったことないけど、phantomjsのメンテナが
「puppeteerあるならもうphantomjsなんかいらんわ」
って言いだして開発終了したらしいし、確かみてみろ
2023/06/12(月) 22:24:27.56ID:kqdcKHtBM
puppetterというものはヘッドレスブラウザを使えるようにしたライブラリであり、わたしはスクレイピングをしたいわけではありません。わたしの課題はhttpリクエストで動的なサイトからデータを取得することであり、ヘッドレスブラウザを使用してスクレイピングをしたいわけではありません
2023/06/12(月) 22:37:29.16ID:kqdcKHtBM
わたしがヘッドレスブラウザを使わない理由はデータの取得時間がかかるからです。またわたしはデータベースを使用しないことを前提としているので、取得したデータを保持することはありません。つまり度々データを取得することになる場合に都度ヘッドレスブラウザーを走らせる設計は現実的ではありません
2023/06/13(火) 11:41:46.36ID:zJMyBjWC0
>>600
これが各行ごとに良くわからないな

>データの取得時間がかかるからです
何が原因で取得時間がかかるようになるのか
実測してそんなに差異が出たってコト?

>データベースを使用しないことを前提としているので
DBなんか使わなきゃいいんじゃない?

>度々データを取得することになる
同一データを扱うならキャッシュすればいいんじゃない?
PHPでだってアホに作れば度々データ取得しに行っちゃうと思うよ

>現実的でありません
面倒くささ的にも自前でDOM構築する方が非現実的だよね
2023/06/13(火) 16:08:55.26ID:Oj3crCHea
async awaitとfetch使ってデータ取得すれば良いじゃん
2023/06/13(火) 18:49:37.74ID:r31gUBK2M
httpリクエストとスクレイピングでデータ取得の速度を比較する場合一般的にはhttpリクエストのほうが高速です。またわたしの想定では同一データではなく毎回違うクエリでリクエストすることが予想されます。
2023/06/13(火) 18:50:18.43ID:r31gUBK2M
>>602
具体的にはどのような手順でそれらを使用しますか?
2023/06/13(火) 22:21:10.72ID:LrQ+wv81M
単純で簡単なjavascriptでレンダリングされているならいけたかもしれませんがフレームワークを使われていたら解析が困難ですね。やはり無理か
2023/06/13(火) 22:21:52.68ID:LrQ+wv81M
そしてnodejsが使えないのでヘッドレスブラウザも無理と。
2023/06/13(火) 23:39:40.44ID:Oj3crCHea
>>604
取得したいサイトのURLとその出力htmlの欲しい部分教えて
608デフォルトの名無しさん (テテンテンテン MMeb-mVGR)
垢版 |
2023/06/14(水) 02:57:47.74ID:sJAdEXJGM
>>607
取得したいサイトは複数ありますがECナビになります。
https://ecnavi.jp/search/?word=%E6%88%91%E3%81%8C%E5%A4%A9%E4%B8%8B

htmlの欲しい部分は表示される案件の部分です。
しかしフレームワークがhtmlをレンダリングされている可能性があり、おそらく解析は困難です。
ajaxからデータを取得するサイトもありましたがcros制限がかかっているため不可です。
ヘッドレスブラウザは環境が構築できないので選択肢には含みません。

わたしはhttpリクエストで動的なサイトのデータを取得するのは無理と判断しました。
2023/06/14(水) 04:20:42.50ID:Jx0dk3g+0
普通に利用規約違反じゃねぇかw
2023/06/14(水) 05:35:16.83ID:VFw5jfyla
>>587
WSL2, Ubuntu 20/22, VSCode, Windows Terminal, Docker Desktop

VSCodeの拡張機能・Remote Development に、
3つの拡張機能・Remote Container/WSL/SSH が含まれている

日本人が作った、多言語バージョンマネージャーのanyenv。
同様のツールに、asdf もある

Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv

漏れは、Ruby on Rails をやっているけど、メモリは32〜64GB ほしい
2023/06/14(水) 06:54:43.13ID:4pmBicBja
>>608
案件って「ポイントアップチャレンジ」の部分?
2023/06/14(水) 07:38:40.54ID:dOe183t+M
>>611
案件の部分はPCで閲覧していると表示されません。ゲームアプリ案件の場合はユーザーエージェントがモバイルOSである必要があります。
2023/06/15(木) 15:12:03.05ID:pNWnTG3Z0
たかだかバックエンドのWeb開発するだけなのに
メモリ32GBとか要求される異常な時代w
2023/06/15(木) 17:34:34.40ID:oe0OZOrwd
WSL2で2GB
Chromeで2GB
その他諸々で10GB
2023/06/15(木) 17:37:28.87ID:KtHE2I/00
脳みそのメモリーが書き込み不可のエラーになってますし
2023/06/15(木) 17:51:10.48ID:pNWnTG3Z0
各々アプリが肥大化しすぎてしまって…
minimal構成のも用意してくれればいいんだけどね
XPとか32bitOSが主流だった時代は4GBで十分足りただろうに
まあ今メモリ32GBで1万円ぐらいだから文句いうことでもないんだけど
2023/06/15(木) 18:17:52.09ID:jjmsD4tb0
32Gも要求されるって何開発してんの?
2023/06/15(木) 18:28:28.13ID:W3FATu2P0
616 じゃないけど、docker とブラウザ立ち上げてたら 16 GBをちょいちょい超えるから 32 GBに増設した
快適だぞ
2023/06/15(木) 20:46:52.21ID:jjmsD4tb0
快適な環境作りに必要って訳ね
2023/06/16(金) 00:02:25.90ID:0+O5qEwBa
Windows/Linux(WSL2), ブラウザ、VSCode, Docker

さらに、Ruby on Rails では、複数データベースで並列テストもできるし
2023/06/16(金) 00:06:26.73ID:siRuxcGs0
Ruby厨は呼んでない、巣に帰れ
622デフォルトの名無しさん (ワッチョイ 8b10-JQtP)
垢版 |
2023/06/16(金) 13:32:48.84ID:Y1bNR4pi0
TwitterOAuthに詳しい人がいたら教えてください。
DeveloperPortalでアプリ作成済み、

composer require abraham/twitteroauth
でインストール済みとします。

$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$content = $connection->get("account/verify_credentials");

ではTwitterアカウントの情報が取得できるのですが、
(※app_keyの部分は省いています)

Twitter API v2に対応するために
$connection->setApiVersion('2');
を追加すると取得できません。$contentがNULLになります。

これってTwitterアプリが v2に対応していないからでしょうか?
2023/06/16(金) 17:45:17.56ID:TyNt7O690
>>622
API使うならドキュメントぐらい見ろよ
エンドポイントがないだけだろ
2023/06/17(土) 09:44:22.27ID:C4ey1Sw3M
addactionがfunctions.phpでは動作するのにカスタムテンプレートでは動作しない理由はなんですか?
2023/06/18(日) 18:12:02.78ID:h4u0ciKA0
>>623
$content = $connection->get("account/verify_credentials");

ここの指定に問題があるということが掴めました。
ご指摘ありがとうございました。
2023/06/25(日) 18:20:15.50ID:gM/PAKCH0
php初めてみたもののメンターとか先輩とかいないぼっちなんで無償版のchatGPT使うと
pdoを使ったDBの接続を含めたコードとか、SQLインジェクションの対応とか一瞬で出してくれてありがたい限り
有償版のGPT4ならコード生成は何かGPT3.5と変わるの?
2023/06/25(日) 18:24:11.05ID:PAO3/SeJ0
寝ている間に君の仕事やってくれる
2023/06/25(日) 18:40:58.90ID:gM/PAKCH0
それが本当なら指示のプロンプトがすごいことになりそう
実際のところ、ファイルを分けたCRUDなんて1回のプロンプトで生成とかできるんだろうか
どこまでならできるとか、ここはさすがにできないとか情報があるサイトがあれば教えていただければ嬉しいです
2023/06/25(日) 19:17:12.98ID:XgY7oRFd0
次のコードをクラスみたいに書いて?
→コンストラクタとメソッドに書き換えてくれる

ありがてぇ、関数群も提示するとそれに合わせてチューニングしてくれる
2023/06/25(日) 19:21:55.03ID:i7rMe9Iv0
知ってるコードで書いて
これをphpに移植したいというだけでほぼできる
2023/06/25(日) 22:54:48.63ID:lataiSU20
君は今非常に危険なところにいます
phpのpdoは非常に厄介なんですが、それを理解してません
「SQLインジェクションの対応とか一瞬で」と言ってるけど、それは本当?

たとえば、
$pdo = new PDO('mysql:dbname=test;host=localhost');
なんて提示されて採用した場合、脆弱な箇所ができる可能性があるの理解してる?

ChatGPTの提示するコードは自分の理解できている範囲以外は危険だと思って検証しないと危ないよ
2023/06/26(月) 02:27:13.68ID:0+rAUtlj0
>>631
$pdo = new PDO('mysql:dbname=test;host=localhost');
クエリではなく、この時点で見た感じとしては正直わからんです

chatGPTは
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_username, $db_password);
binValueなども使ったものを提示していて、実際に動作しているのね。
pdoの引数に各変数があるぐらいで何かしらセキュリティに問題があるとは思わなかったんだけど、この例ではまずい点はあるの?
2023/06/26(月) 05:54:16.49ID:xls0AJJa0
PDO を使用する際、アプリケーションとしての文字コードを指定できる箇所は new PDO() 内のみです
ここで正しくアプリケーションの文字列を指定していない場合、アプリケーションとDBの間で文字コードに差異が出る可能性が高く、それ起因の脆弱性が発生する可能性があります

よく知られた例としては 5c 問題があり、例えば上記と "SET NAMES sjis"、動的プレースホルダのセットで、プレースホルダをすり抜ける脆弱性が発生します
2023/06/26(月) 06:12:00.13ID:0+rAUtlj0
>>633
ありがとう、そういうことがあるのね。
自分がchatGPTに依頼した10回に1回ぐらいの割合で
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
try {
$pdo = new PDO($dsn, $user, $password, $options);

があったので、これからはcharsetを明示するか意識しておきます。
知らないことを伝えられて動いたら全面的に信頼してしまうのも良く無いので、完全では無いことを意識しておきます
2023/06/26(月) 10:06:12.93ID:kBW+dErx0
どうしてそんなにChatGPTにこだわるんだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況