[過去ログ] 【PHP】下らねぇ質問はここに書き込みやがれ 14 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
34: (ワッチョイ ff7c-pIDl) 2022/10/04(火)00:00 ID:nXyy/Qec0(1/2) AAS
mysqliを使わずにPDOを使いprepare()などを使った方が良いのでは?
35
(2): (ワッチョイ cff8-8Lq0) 2022/10/04(火)00:03 ID:m1wIfZza0(1) AAS
完全に内部処理だけの場合だと
別にプレースホルダー使う必要ってないの?
念には念を入れておくべきなの?
36
(1): (ワッチョイ cfbb-tfD/) 2022/10/04(火)00:18 ID:GRVyRRF90(1/5) AAS
>>35
プリペアドステートメント(プレースホルダ)の「本来の役割」はデータ部分を除くSQLを事前コンパイルしてデータをバインドすることによりパフォーマンスを向上させることです
そのため、パフォーマンス観点で使うことがあります

内部処理というのが何を指すのか不明ですが、セキュリティ観点で見た場合、文字リテラルをわざわざ変数に入れてバインドする必要はないです
ただ、変数に入っているものであれば文字連結でSQLを作るよりプリペアドステートメントを使用することをおすすめします
プリペアドステートメントを使用すれば、引用符は自動で付加されるので >>31 のような悩みはなくなります
また、何より後で読んだときに「アレ?」って悩まなくて良いです。
37: (ワッチョイ 037b-jS/a) 2022/10/04(火)00:44 ID:77RhElC90(1) AAS
>>35
外部に公開しない内部専用の鯖でもSQLインジェクション対策が必要かという意味なら、必要だよ。
悪気はなくとも、意図的でなくとも、フォームに間違った内容をコピペする事はある。
その場合に偶々変な文字列が入ってたらDBが破壊される事があります、では駄目だろ。
38: (ワッチョイ cf97-o1nH) 2022/10/04(火)02:02 ID:m6zUfl020(1/2) AAS
ありがとうございます。
参考になりました。
39
(2): (ワッチョイ cf97-o1nH) 2022/10/04(火)02:03 ID:m6zUfl020(2/2) AAS
もう一つ質問させてください。

MVCについて学習していて、二つの捉え方がありそうで混乱しています。
?Modelは関数やクラスの定義を記述する。Controllerはその実行場所。
?Modelはデータベースへの命令とビジネスロジックの実行場所。Controllerはユーザーと直接アクセスする処理の実行場所。
どちらがより正しい捉え方なのでしょうか?
40
(1): (ワッチョイ e301-8Lq0) 2022/10/04(火)14:16 ID:fqSkVIi/0(1/2) AAS
内部処理だけというのは、
DBから読み込んだ結果を
impodeして新しく、
WHERE IN 文を作ってる場合などです。

元がDBの値なので、ずれたり不正な値はないはずですが、どうなのでしょうか
SQLインジェクションの心配はでるのでしょうか

高速化の意味として使用するのはわかりました。
あくまで素朴な疑問で。
41: (ワッチョイ cfbb-tfD/) 2022/10/04(火)14:25 ID:GRVyRRF90(2/5) AAS
>>40
>>36 でも書いたけど
OK
$sql = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'三菱えんぴつ',100,1)";
NG
$sql = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'$val',100,1)";

$val の代入元に外部入力がないかを都度検証しなくてはならないのでプリペアドステートメントを使用するのが無難

ただ、'impodeして新しく、 WHERE IN 文を作ってる場合'ってのがそもそも正規化ができてないケースっぽいね^^;
42: (ワッチョイ cfbb-tfD/) 2022/10/04(火)14:33 ID:GRVyRRF90(3/5) AAS
>>39
フレームワークを使用する前提だと思うけど、今どきのphpだとMVCで分類できないような設計になることが多い
クリーンアーキテクチャとかを調査してみるといい

フレームワークは Laravel だと思うので、「Laravel クリーンアーキテクチャ」あたりでググるとそれっぽい記事に当たれる
ただ、フレームワークの基礎概念がわかっていてもややこしいので、基本的になんちゃってクリーンアーキテクチャを採用することになると思う
43
(1): (アウアウウー Sa27-o1nH) 2022/10/04(火)14:50 ID:kffIYV9Ia(1) AAS
ありがとうございます。
フレームワーク利用の前提でなく、素?のPHPです。
phpの学習のためにMVCを理解しようとしているので、
実務で構築するものとは、ちょっとズレているかもしれません。

疑問に思うのは、
例えば、入力バリデーションを実行するのは、Controllerなのかもしれませんが、
その関数は、Modelで定義するべきなのか?でもこれはビジネスロジックじゃないし。
とか思いました。

一方でModelは関数ライブラリみたいなものという意見もありました。
実務経験のあり皆様の知見をお借りしたいと思います。
44: (ワッチョイ cfbb-tfD/) 2022/10/04(火)14:58 ID:GRVyRRF90(4/5) AAS
>>43
過ぎわかるけど、そのへんの厳密さはすぐに役に立たなくなる知見だよ
フレームワークと紐付けて学習することをおすすめします
45: (ワッチョイ cfbb-tfD/) 2022/10/04(火)14:58 ID:GRVyRRF90(5/5) AAS
すまん。ミスw

過ぎわかるけど → すごいわかる
46: (ワッチョイ e301-vqPj) 2022/10/04(火)15:15 ID:fqSkVIi/0(2/2) AAS
ありがとうございます。
脱線するけど、
*営業成績テーブル
 個人ID,成績
*部門テーブル
 部門ID,部門情報
*個人テーブル
 個人ID,部門ID,個人情報
こんな感じのテーブルで
A部門所属のデータをとるときにとるときに、
省4
47: (ワッチョイ cf73-OAEy) 2022/10/04(火)22:07 ID:2XMnl95Q0(1) AAS
素直に結合
何のためのRDBかと
48: (ワッチョイ 435f-/mFx) 2022/10/04(火)22:31 ID:lI8qARGk0(1/6) AAS
test
49
(1): (ワッチョイ 435f-/mFx) 2022/10/04(火)22:32 ID:lI8qARGk0(2/6) AAS
php疎い者です。
javascriptでよくある処理ですが、
現在表示しているページの<body>タグにクラス(.current)があるか否かで処理を分岐したいのですが、
これをPHPではどのように書いてよいのかわかりません。

・取得対象の現在のドキュメントのbodyタグの指定の仕方
・正規表現など使わずにgetElementsByTagNameのようなものがhtmlでも使えるのか
など、、
宜しくお願いいたします。
50
(1): (ワッチョイ ff63-pIDl) 2022/10/04(火)22:35 ID:BwJYUobP0(1) AAS
現在表示しているページは、誰が作っているの?
51: (ワッチョイ 435f-/mFx) 2022/10/04(火)23:35 ID:lI8qARGk0(3/6) AAS
>>50
自分で作っているページです。
恐らく方法論として間違っているのだと思いますが、
後学の為に方法を知っておきたいです。
52: (ワッチョイ ff7c-pIDl) 2022/10/04(火)23:51 ID:nXyy/Qec0(2/2) AAS
ん?サーバーで先にHTMLを生成するのだからその段階で判断基準があるでしょ?
それが無くて後から動的ならjavascriptでやるしか無い気がするのだが
53
(1): (ワッチョイ 632c-kE2G) 2022/10/04(火)23:52 ID:CNGS9dK70(1) AAS
Ruby なら、Nokogiri, Selenium Webdriver などを使う。
PHP にも、そういうモジュールがあるのでは?

require 'nokogiri'

doc_1 = Nokogiri::HTML(<<EOT)
<html><body class="abc">あ</body></html>
EOT

doc_2 = Nokogiri::HTML(<<EOT)
<html><body class="current">い</body></html>
EOT

element_1 = doc_1.at_css( 'body.current' )
省13
1-
あと 949 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.124s*