!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
【PHP】下らねぇ質問はここに書き込みやがれ 14
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f97-W3aP)
2022/09/20(火) 16:46:23.39ID:Sb2Kpzh+02デフォルトの名無しさん (スッップ Sdbf-ZAtA)
2022/09/23(金) 12:52:58.86ID:hnZdjJ3nd 1乙
3デフォルトの名無しさん (ワッチョイ 2701-tX/F)
2022/09/24(土) 13:08:46.11ID:BHAYvVt70 >>1
8.2
8.2
4デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/28(水) 15:20:22.87ID:kZGixsXA0 try catch構文がなぜか機能しない(´・ω・`)
単純なゼロ除算をキャッチさせてみるだけでも、catch構文のほうに行かず停止してしまう。
try {
$num = 5/0;
} catch ( Exception $ex ) {
//例外時の処理
}
JavaやC#だったら、こういうふうに書けばどんな種類の例外でも拾ってくれますが、PHPの場合ちょっと違うのですか?
単純なゼロ除算をキャッチさせてみるだけでも、catch構文のほうに行かず停止してしまう。
try {
$num = 5/0;
} catch ( Exception $ex ) {
//例外時の処理
}
JavaやC#だったら、こういうふうに書けばどんな種類の例外でも拾ってくれますが、PHPの場合ちょっと違うのですか?
5デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/28(水) 15:46:24.05ID:Jk2txA1W0 \Exceptionにしたら動くかも?
6デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/28(水) 15:59:48.05ID:kZGixsXA0 >>5
ありがとうございます。動きました!
PHPだと例外の型の区別方法がよく分からないです。デバッグしてみると全部Exception型?
Javaとかだったらcatch構文で、例外オブジェクトの型の違いでこうやって分けられたのですが。
catch(HogeException) {
//HogeExceptionの例外処理
} catch(FugaException) {
//FugaExceptionの例外処理
}
PHPの場合どうやって分岐しますか?
エラーコードやエラーメッセージを拾って分ける処理をさしあたり書いて意図したとおりに動いてもいますが、これが正しいやり方ではないような気がします。
ありがとうございます。動きました!
PHPだと例外の型の区別方法がよく分からないです。デバッグしてみると全部Exception型?
Javaとかだったらcatch構文で、例外オブジェクトの型の違いでこうやって分けられたのですが。
catch(HogeException) {
//HogeExceptionの例外処理
} catch(FugaException) {
//FugaExceptionの例外処理
}
PHPの場合どうやって分岐しますか?
エラーコードやエラーメッセージを拾って分ける処理をさしあたり書いて意図したとおりに動いてもいますが、これが正しいやり方ではないような気がします。
7デフォルトの名無しさん (ワッチョイ c761-WvKv)
2022/09/28(水) 18:16:57.90ID:48qufCUu0 phpでも複数catch出来る
ゼロ除算を他の例外と分けたいならDivisionByZeroErrorやArithmeticErrorあたり
ゼロ除算を他の例外と分けたいならDivisionByZeroErrorやArithmeticErrorあたり
8デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/28(水) 18:34:37.92ID:o0cHd3Tq0 公式覗いてみた?
一応動くやつ書いてみた
class MyException extends Exception { }
class MyOtherException extends Exception { }
class Test {
public function testing() {
try {
// throw new MyException();
throw new MyOtherException();
} catch (MyException $e) {
var_dump(get_class($e));
} catch (MyOtherException $e) {
var_dump(get_class($e));
}
}
}
$foo = new Test;
$foo->testing();
一応動くやつ書いてみた
class MyException extends Exception { }
class MyOtherException extends Exception { }
class Test {
public function testing() {
try {
// throw new MyException();
throw new MyOtherException();
} catch (MyException $e) {
var_dump(get_class($e));
} catch (MyOtherException $e) {
var_dump(get_class($e));
}
}
}
$foo = new Test;
$foo->testing();
9デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/29(木) 09:00:43.80ID:+9krd1sq0 >>7-8
ありがとうございます。それができることは分かりました。
とりあえず\Exceptionで一緒くたにcatchしてみてデバッグし、出てきた例外の「正確な型名」の調べ方が分からないです。
「PHP 例外 型 種類」のようにぐぐっても、ありがなゼロ除算の例外の型名すら、いま教えてもらうまでわからなかったです。
JavaならArithmeticException、C#ならDivideByZeroException、といった型名はちょっと調べればわかりますが、PHPの場合はその資料が無いようで。
ありがとうございます。それができることは分かりました。
とりあえず\Exceptionで一緒くたにcatchしてみてデバッグし、出てきた例外の「正確な型名」の調べ方が分からないです。
「PHP 例外 型 種類」のようにぐぐっても、ありがなゼロ除算の例外の型名すら、いま教えてもらうまでわからなかったです。
JavaならArithmeticException、C#ならDivideByZeroException、といった型名はちょっと調べればわかりますが、PHPの場合はその資料が無いようで。
10デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/29(木) 09:08:50.12ID:aAavqPwL011デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/29(木) 10:11:17.58ID:+9krd1sq012デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/29(木) 12:31:32.34ID:cPkvua8F0 >>11
PHPは公式が素晴らしくよく出来てるから、新参素人がQiita等にイキって書く意味がなく、ググッてもヒットしない。
だから、君のレベルなら、まず公式を全部頭から一通り読むのが一番早いよ。(下の例とその下のNotesも含めて)
数日かかるかもしれないが、急がば回れが完全に成立する。
ちなC#もほぼ公式しか要らないほどよく出来てはいるが、あれはリファレンスであって、頭から読む読み物としては成立してない。
これはJS(MDN)もで、MDNは地味に読み物ページも充実しつつあるが、一部逆にリファレンスとしては使いにくくなってる面もある。
Javaの状況は知らんが、そもそも出所不明のコード例をググる必要がある世界観が異常だと気づくべき。
この点はPHPが完全に正しい。
PHPは公式が素晴らしくよく出来てるから、新参素人がQiita等にイキって書く意味がなく、ググッてもヒットしない。
だから、君のレベルなら、まず公式を全部頭から一通り読むのが一番早いよ。(下の例とその下のNotesも含めて)
数日かかるかもしれないが、急がば回れが完全に成立する。
ちなC#もほぼ公式しか要らないほどよく出来てはいるが、あれはリファレンスであって、頭から読む読み物としては成立してない。
これはJS(MDN)もで、MDNは地味に読み物ページも充実しつつあるが、一部逆にリファレンスとしては使いにくくなってる面もある。
Javaの状況は知らんが、そもそも出所不明のコード例をググる必要がある世界観が異常だと気づくべき。
この点はPHPが完全に正しい。
13デフォルトの名無しさん (ワッチョイ dee7-tX/F)
2022/09/29(木) 20:16:25.66ID:E6cxSExy0 実機環境がPHP7.3のプロジェクトのおしごとがあるんだけど
WindowsのXAMPPは 7.4 と 8.1 しかない
ちょいとPHPUNITを動かす用のローカルのPHPは 7..4 でもいいよね?
WindowsのXAMPPは 7.4 と 8.1 しかない
ちょいとPHPUNITを動かす用のローカルのPHPは 7..4 でもいいよね?
14デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/29(木) 20:53:29.90ID:D9meFc200 vagrant+virtualboxなりdockerなり仮想環境でも作った方が良さそうだけどね
15デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/29(木) 21:14:41.27ID:aAavqPwL016デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 16:30:44.38ID:anKKL5Vh0 入力された値が正しいかどうかをデバックしているのですが、
左辺と右辺の変数の値の評価が期待しているものと違うことを確認しました。
6番目のリストは「1」となることを期待していますが、
そうはなりませんでした。
なぜ、そうなってしまうか、想定できそうな原因ありますでしょうか。
ちなみにphpのバージョンは7.3になります。
-----
phpコード
<pre>
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
</pre>
-----
ブラウザの表示
・1234
・1234
・1
・test
・test
・
-----
左辺と右辺の変数の値の評価が期待しているものと違うことを確認しました。
6番目のリストは「1」となることを期待していますが、
そうはなりませんでした。
なぜ、そうなってしまうか、想定できそうな原因ありますでしょうか。
ちなみにphpのバージョンは7.3になります。
-----
phpコード
<pre>
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
</pre>
-----
ブラウザの表示
・1234
・1234
・1
・test
・test
・
-----
17デフォルトの名無しさん (ワッチョイ dee7-tX/F)
2022/09/30(金) 16:58:56.18ID:tV+EdovX018デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:15:04.25ID:anKKL5Vh0 ありがとうございます。
こういうことでしょうか?
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>"."---".$pw."---";
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・---test---
・test
・
ちなみに以下のように変えても結果は変わりません。
print "<li>".($pw===$_POST['pass']);
↓
print "<li>".($pw==$_POST['pass']);
こういうことでしょうか?
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>"."---".$pw."---";
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・---test---
・test
・
ちなみに以下のように変えても結果は変わりません。
print "<li>".($pw===$_POST['pass']);
↓
print "<li>".($pw==$_POST['pass']);
19デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/30(金) 17:18:39.83ID:3aBoBWM+0 >>16
宿題は自分でやれ
宿題は自分でやれ
20デフォルトの名無しさん (ワッチョイ dee7-tX/F)
2022/09/30(金) 17:22:10.31ID:tV+EdovX0 >>18
POST側も確認しなきゃ意味ないだろ
POST側も確認しなきゃ意味ないだろ
21デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/30(金) 17:22:47.09ID:NBzDpu1o0 bin2hex($pw)
と
bin2hex($_POST['pass'])
で表示してみたら違いが分かるかも?
と
bin2hex($_POST['pass'])
で表示してみたら違いが分かるかも?
22デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:26:43.54ID:anKKL5Vh0 $_POST側も目印を入れました。
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>"."---".$_POST['pass']."---";
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・test
・---test---
・
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>"."---".$_POST['pass']."---";
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・test
・---test---
・
23デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:31:33.96ID:anKKL5Vh0 >>21
神
ありがとうございます!
違いが出てきました。!!!
bin2hex()を調べてみます。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".bin2hex($pw);
print "<li>".bin2hex($_POST['pass']);
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・74657374
・2074657374
・
神
ありがとうございます!
違いが出てきました。!!!
bin2hex()を調べてみます。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".bin2hex($pw);
print "<li>".bin2hex($_POST['pass']);
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・74657374
・2074657374
・
24デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/30(金) 17:36:24.68ID:NBzDpu1o0 0x20(スペース)が入っているね
トリムしてもいいならtrim()で前後のスペースを除去する事も可能
トリムしてもいいならtrim()で前後のスペースを除去する事も可能
25デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/30(金) 17:36:47.30ID:HxNT59pn0 POSTがおかしいね
' test'になってる
' test'になってる
26デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:44:13.43ID:anKKL5Vh0 おっしゃるとおりです。
フォームに半角スペースが含まれていました。
これに気づかず数時間ハマってました。
ありがとうございました。
----
ブラウザ表示
・1234
・1234
・1
・74657374
・74657374
・1
フォームに半角スペースが含まれていました。
これに気づかず数時間ハマってました。
ありがとうございました。
----
ブラウザ表示
・1234
・1234
・1
・74657374
・74657374
・1
27デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/30(金) 18:20:29.34ID:3aBoBWM+028デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 21:41:08.05ID:anKKL5Vh0 そうですね。
これを機にSublimetextから、ちゃんとしたIDE環境で作業するよう考えてみます。
vscodeがいいのかな。
これを機にSublimetextから、ちゃんとしたIDE環境で作業するよう考えてみます。
vscodeがいいのかな。
29デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/30(金) 22:25:09.62ID:3aBoBWM+0 >>28
実際のソース変更は慣れたエディタを使いつづけて問題ないが、
ブレークポイント当ててステップ実行出来るデバッグ環境は立ち上げておくべき
一般的にはVSCodeでいいんじゃね?呪文が必要らしいが(以下参照)
https://atmarkit.itmedia.co.jp/ait/articles/1809/11/news028.html
実際のソース変更は慣れたエディタを使いつづけて問題ないが、
ブレークポイント当ててステップ実行出来るデバッグ環境は立ち上げておくべき
一般的にはVSCodeでいいんじゃね?呪文が必要らしいが(以下参照)
https://atmarkit.itmedia.co.jp/ait/articles/1809/11/news028.html
30デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/02(日) 00:51:15.34ID:Omlyv0OK0 Ruby on Rails では、組み込みRuby・ERB で、HTML ファイルを書く
文字列を結合して、HTML片を作ってはならない。
相手が、script タグなどを送ってきて、それで危険なJavaScript を実行されてしまうから
だから逆に、<% 〜 %>, <%= 〜 %> を使って、HTML内にRubyの構文を書く
<% price = 2500 * 1.05 %>
<p>
本の値段は<%= price %>円です。
</p>
こうすると、< > & " など、HTMLの特殊文字がエスケープされて、scriptタグも実行されない
文字列を結合して、HTML片を作ってはならない。
相手が、script タグなどを送ってきて、それで危険なJavaScript を実行されてしまうから
だから逆に、<% 〜 %>, <%= 〜 %> を使って、HTML内にRubyの構文を書く
<% price = 2500 * 1.05 %>
<p>
本の値段は<%= price %>円です。
</p>
こうすると、< > & " など、HTMLの特殊文字がエスケープされて、scriptタグも実行されない
31デフォルトの名無しさん (ワッチョイ cf97-o1nH)
2022/10/03(月) 22:50:16.95ID:ZWE2UPrr0 mysqliで、queryメソッドに格納するクエリ文なのですが。
文字列の囲いはどっちがいいですかね。。
$insert = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,\"三菱えんぴつ\",100,1)";
$insert = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'三菱えんぴつ',100,1)";
文字列の囲いはどっちがいいですかね。。
$insert = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,\"三菱えんぴつ\",100,1)";
$insert = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'三菱えんぴつ',100,1)";
32デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/03(月) 22:57:13.59ID:IWMZiHvT033デフォルトの名無しさん (ワッチョイ e3da-OAEy)
2022/10/03(月) 23:12:19.96ID:G1EEp94o034デフォルトの名無しさん (ワッチョイ ff7c-pIDl)
2022/10/04(火) 00:00:28.28ID:nXyy/Qec0 mysqliを使わずにPDOを使いprepare()などを使った方が良いのでは?
35デフォルトの名無しさん (ワッチョイ cff8-8Lq0)
2022/10/04(火) 00:03:57.15ID:m1wIfZza0 完全に内部処理だけの場合だと
別にプレースホルダー使う必要ってないの?
念には念を入れておくべきなの?
別にプレースホルダー使う必要ってないの?
念には念を入れておくべきなの?
36デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 00:18:31.66ID:GRVyRRF90 >>35
プリペアドステートメント(プレースホルダ)の「本来の役割」はデータ部分を除くSQLを事前コンパイルしてデータをバインドすることによりパフォーマンスを向上させることです
そのため、パフォーマンス観点で使うことがあります
内部処理というのが何を指すのか不明ですが、セキュリティ観点で見た場合、文字リテラルをわざわざ変数に入れてバインドする必要はないです
ただ、変数に入っているものであれば文字連結でSQLを作るよりプリペアドステートメントを使用することをおすすめします
プリペアドステートメントを使用すれば、引用符は自動で付加されるので >>31 のような悩みはなくなります
また、何より後で読んだときに「アレ?」って悩まなくて良いです。
プリペアドステートメント(プレースホルダ)の「本来の役割」はデータ部分を除くSQLを事前コンパイルしてデータをバインドすることによりパフォーマンスを向上させることです
そのため、パフォーマンス観点で使うことがあります
内部処理というのが何を指すのか不明ですが、セキュリティ観点で見た場合、文字リテラルをわざわざ変数に入れてバインドする必要はないです
ただ、変数に入っているものであれば文字連結でSQLを作るよりプリペアドステートメントを使用することをおすすめします
プリペアドステートメントを使用すれば、引用符は自動で付加されるので >>31 のような悩みはなくなります
また、何より後で読んだときに「アレ?」って悩まなくて良いです。
37デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2022/10/04(火) 00:44:39.24ID:77RhElC90 >>35
外部に公開しない内部専用の鯖でもSQLインジェクション対策が必要かという意味なら、必要だよ。
悪気はなくとも、意図的でなくとも、フォームに間違った内容をコピペする事はある。
その場合に偶々変な文字列が入ってたらDBが破壊される事があります、では駄目だろ。
外部に公開しない内部専用の鯖でもSQLインジェクション対策が必要かという意味なら、必要だよ。
悪気はなくとも、意図的でなくとも、フォームに間違った内容をコピペする事はある。
その場合に偶々変な文字列が入ってたらDBが破壊される事があります、では駄目だろ。
38デフォルトの名無しさん (ワッチョイ cf97-o1nH)
2022/10/04(火) 02:02:08.77ID:m6zUfl020 ありがとうございます。
参考になりました。
参考になりました。
39デフォルトの名無しさん (ワッチョイ cf97-o1nH)
2022/10/04(火) 02:03:00.45ID:m6zUfl020 もう一つ質問させてください。
MVCについて学習していて、二つの捉え方がありそうで混乱しています。
@Modelは関数やクラスの定義を記述する。Controllerはその実行場所。
AModelはデータベースへの命令とビジネスロジックの実行場所。Controllerはユーザーと直接アクセスする処理の実行場所。
どちらがより正しい捉え方なのでしょうか?
MVCについて学習していて、二つの捉え方がありそうで混乱しています。
@Modelは関数やクラスの定義を記述する。Controllerはその実行場所。
AModelはデータベースへの命令とビジネスロジックの実行場所。Controllerはユーザーと直接アクセスする処理の実行場所。
どちらがより正しい捉え方なのでしょうか?
40デフォルトの名無しさん (ワッチョイ e301-8Lq0)
2022/10/04(火) 14:16:20.93ID:fqSkVIi/0 内部処理だけというのは、
DBから読み込んだ結果を
impodeして新しく、
WHERE IN 文を作ってる場合などです。
元がDBの値なので、ずれたり不正な値はないはずですが、どうなのでしょうか
SQLインジェクションの心配はでるのでしょうか
高速化の意味として使用するのはわかりました。
あくまで素朴な疑問で。
DBから読み込んだ結果を
impodeして新しく、
WHERE IN 文を作ってる場合などです。
元がDBの値なので、ずれたり不正な値はないはずですが、どうなのでしょうか
SQLインジェクションの心配はでるのでしょうか
高速化の意味として使用するのはわかりました。
あくまで素朴な疑問で。
41デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:25:51.27ID:GRVyRRF90 >>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 文を作ってる場合'ってのがそもそも正規化ができてないケースっぽいね^^;
>>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:14.85ID:GRVyRRF90 >>39
フレームワークを使用する前提だと思うけど、今どきのphpだとMVCで分類できないような設計になることが多い
クリーンアーキテクチャとかを調査してみるといい
フレームワークは Laravel だと思うので、「Laravel クリーンアーキテクチャ」あたりでググるとそれっぽい記事に当たれる
ただ、フレームワークの基礎概念がわかっていてもややこしいので、基本的になんちゃってクリーンアーキテクチャを採用することになると思う
フレームワークを使用する前提だと思うけど、今どきのphpだとMVCで分類できないような設計になることが多い
クリーンアーキテクチャとかを調査してみるといい
フレームワークは Laravel だと思うので、「Laravel クリーンアーキテクチャ」あたりでググるとそれっぽい記事に当たれる
ただ、フレームワークの基礎概念がわかっていてもややこしいので、基本的になんちゃってクリーンアーキテクチャを採用することになると思う
43デフォルトの名無しさん (アウアウウー Sa27-o1nH)
2022/10/04(火) 14:50:31.74ID:kffIYV9Ia ありがとうございます。
フレームワーク利用の前提でなく、素?のPHPです。
phpの学習のためにMVCを理解しようとしているので、
実務で構築するものとは、ちょっとズレているかもしれません。
疑問に思うのは、
例えば、入力バリデーションを実行するのは、Controllerなのかもしれませんが、
その関数は、Modelで定義するべきなのか?でもこれはビジネスロジックじゃないし。
とか思いました。
一方でModelは関数ライブラリみたいなものという意見もありました。
実務経験のあり皆様の知見をお借りしたいと思います。
フレームワーク利用の前提でなく、素?のPHPです。
phpの学習のためにMVCを理解しようとしているので、
実務で構築するものとは、ちょっとズレているかもしれません。
疑問に思うのは、
例えば、入力バリデーションを実行するのは、Controllerなのかもしれませんが、
その関数は、Modelで定義するべきなのか?でもこれはビジネスロジックじゃないし。
とか思いました。
一方でModelは関数ライブラリみたいなものという意見もありました。
実務経験のあり皆様の知見をお借りしたいと思います。
44デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:58:12.02ID:GRVyRRF9045デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:58:57.95ID:GRVyRRF90 すまん。ミスw
過ぎわかるけど → すごいわかる
過ぎわかるけど → すごいわかる
46デフォルトの名無しさん (ワッチョイ e301-vqPj)
2022/10/04(火) 15:15:33.37ID:fqSkVIi/0 ありがとうございます。
脱線するけど、
*営業成績テーブル
個人ID,成績
*部門テーブル
部門ID,部門情報
*個人テーブル
個人ID,部門ID,個人情報
こんな感じのテーブルで
A部門所属のデータをとるときにとるときに、
個人テーブルからA部門所属をとってから、
営業成績テーブルにWHERE INしてたんですけど、
どうしたらよかったんですかね。
テーブルがそもそもダメなのかな。
脱線するけど、
*営業成績テーブル
個人ID,成績
*部門テーブル
部門ID,部門情報
*個人テーブル
個人ID,部門ID,個人情報
こんな感じのテーブルで
A部門所属のデータをとるときにとるときに、
個人テーブルからA部門所属をとってから、
営業成績テーブルにWHERE INしてたんですけど、
どうしたらよかったんですかね。
テーブルがそもそもダメなのかな。
47デフォルトの名無しさん (ワッチョイ cf73-OAEy)
2022/10/04(火) 22:07:04.75ID:2XMnl95Q0 素直に結合
何のためのRDBかと
何のためのRDBかと
48デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 22:31:47.47ID:lI8qARGk0 test
49デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 22:32:03.64ID:lI8qARGk0 php疎い者です。
javascriptでよくある処理ですが、
現在表示しているページの<body>タグにクラス(.current)があるか否かで処理を分岐したいのですが、
これをPHPではどのように書いてよいのかわかりません。
・取得対象の現在のドキュメントのbodyタグの指定の仕方
・正規表現など使わずにgetElementsByTagNameのようなものがhtmlでも使えるのか
など、、
宜しくお願いいたします。
javascriptでよくある処理ですが、
現在表示しているページの<body>タグにクラス(.current)があるか否かで処理を分岐したいのですが、
これをPHPではどのように書いてよいのかわかりません。
・取得対象の現在のドキュメントのbodyタグの指定の仕方
・正規表現など使わずにgetElementsByTagNameのようなものがhtmlでも使えるのか
など、、
宜しくお願いいたします。
50デフォルトの名無しさん (ワッチョイ ff63-pIDl)
2022/10/04(火) 22:35:18.09ID:BwJYUobP0 現在表示しているページは、誰が作っているの?
51デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:35:33.89ID:lI8qARGk052デフォルトの名無しさん (ワッチョイ ff7c-pIDl)
2022/10/04(火) 23:51:17.05ID:nXyy/Qec0 ん?サーバーで先にHTMLを生成するのだからその段階で判断基準があるでしょ?
それが無くて後から動的ならjavascriptでやるしか無い気がするのだが
それが無くて後から動的ならjavascriptでやるしか無い気がするのだが
53デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/04(火) 23:52:48.63ID:CNGS9dK70 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' )
if element_1
puts element_1.content
elsif
p element_1
end
#=> nil
element_2 = doc_2.at_css( 'body.current' )
if element_2
puts element_2.content
elsif
p element_2
end
#=> い
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' )
if element_1
puts element_1.content
elsif
p element_1
end
#=> nil
element_2 = doc_2.at_css( 'body.current' )
if element_2
puts element_2.content
elsif
p element_2
end
#=> い
54デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:55:32.56ID:lI8qARGk0 例えばスマホ/PCなど、表示条件によりbodyタグにphpでクラス付与するケースです。
phpの分岐条件をbodyのクラスで判定する事自体がナンセンスというか方法論として間違っているという事かと思いますが、
もしこのような方法がphpでもできるならば具体的にどのようなソースになるか知っておきたい感じです。
これに限らず、classのあるなしをphpでもできれば便利だなあと、、
とても煩雑で面倒で無意味な事であれば諦めます。。
phpの分岐条件をbodyのクラスで判定する事自体がナンセンスというか方法論として間違っているという事かと思いますが、
もしこのような方法がphpでもできるならば具体的にどのようなソースになるか知っておきたい感じです。
これに限らず、classのあるなしをphpでもできれば便利だなあと、、
とても煩雑で面倒で無意味な事であれば諦めます。。
55デフォルトの名無しさん (ワッチョイ 435f-ruke)
2022/10/04(火) 23:55:56.42ID:L5kRkIm30 生成したサイトにスクレイピングするスクリプト書くとかしか無いんじゃない?
56デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:57:51.22ID:lI8qARGk0 >>53
ありがとうございます。
恐らく「PHP Simple HTML DOM Parser」などがそれに当たるかと思われますが、
ちょっと1回使いたいだけの場合にライブラリ使わずサクッとできないかと思い、質問しました。
ありがとうございます。
恐らく「PHP Simple HTML DOM Parser」などがそれに当たるかと思われますが、
ちょっと1回使いたいだけの場合にライブラリ使わずサクッとできないかと思い、質問しました。
57デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:59:21.33ID:lI8qARGk058デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 00:03:03.19ID:W5I+dJQy0 >>39
Ruby on Rails のMVC では、
Model はデータベース・ビジネスロジック、
View はHTML、
Controller はルーティングなど、MV 以外
歴史的には、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
Ruby on Rails のMVC では、
Model はデータベース・ビジネスロジック、
View はHTML、
Controller はルーティングなど、MV 以外
歴史的には、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
59デフォルトの名無しさん (ワッチョイ ff63-pIDl)
2022/10/05(水) 00:06:29.81ID:j989iulk0 クライアント側でJavascriptなど使って書き換えしているときはどうするんだろう
60デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/05(水) 00:10:18.85ID:4fLF3mVy0 >>59
今回は一旦そのケース(jsによる操作)はないという前提でお願います...
今回は一旦そのケース(jsによる操作)はないという前提でお願います...
61デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 00:28:51.30ID:W5I+dJQy0 >>54
Ruby on Rails では、
<html><body></body></html> の部分は、レイアウトファイルと言う。
絵画でいう額縁の部分
body 内では、<%= yield %> で、各テンプレートファイルを読み込むようになっている。
だから、bodyタグを変える場合は、複数のレイアウトファイルを切り替える
<html><body class="abc">
<%= yield %>
</body></html>
<html><body class="xyz">
<%= yield %>
</body></html>
それか、Selenium Webdriver で、JavaScript で書いて、ブラウザに送信できる。
body要素を取得して、class属性を変更する
Ruby on Rails では、
<html><body></body></html> の部分は、レイアウトファイルと言う。
絵画でいう額縁の部分
body 内では、<%= yield %> で、各テンプレートファイルを読み込むようになっている。
だから、bodyタグを変える場合は、複数のレイアウトファイルを切り替える
<html><body class="abc">
<%= yield %>
</body></html>
<html><body class="xyz">
<%= yield %>
</body></html>
それか、Selenium Webdriver で、JavaScript で書いて、ブラウザに送信できる。
body要素を取得して、class属性を変更する
62デフォルトの名無しさん (オッペケ Sr47-i/MD)
2022/10/05(水) 08:10:28.17ID:lxgtpcSQr63デフォルトの名無しさん (ワッチョイ 6fe7-pIDl)
2022/10/05(水) 10:08:08.68ID:EybIMEvA0 >>61
RubyってマジでPHPそっくりなんだな
RubyってマジでPHPそっくりなんだな
64デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 23:07:42.68ID:W5I+dJQy0 すべてのフレームワークは、Ruby on Rails を基本としているから、
初心者はRailsから始めるべき
JavaScript なんかは、Rubyの20年遅れ。
ES6(ES2015)で、ようやく辞書・クラス構文・テンプレート文字列などが出来たなど、Ruby化を進めた
初心者はRailsから始めるべき
JavaScript なんかは、Rubyの20年遅れ。
ES6(ES2015)で、ようやく辞書・クラス構文・テンプレート文字列などが出来たなど、Ruby化を進めた
65デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 23:15:54.32ID:W5I+dJQy0 Ruby は、JavaScript(JS), Python, PHP よりも、バグらない
Rubyの偽は、nil, false の2つだけ
一方、他の言語は、各型に偽がある。
空文字、0, 0.0、空配列など
これのおかげでバグるから、
JS などは、== 緩い等価演算子を使うなと言われて、=== 厳密等価演算子を使えとなった。
さらに、TypeScript も必須になった
Rubyの偽は、nil, false の2つだけ
一方、他の言語は、各型に偽がある。
空文字、0, 0.0、空配列など
これのおかげでバグるから、
JS などは、== 緩い等価演算子を使うなと言われて、=== 厳密等価演算子を使えとなった。
さらに、TypeScript も必須になった
66デフォルトの名無しさん (ワッチョイ ff7c-pIDl)
2022/10/06(木) 12:50:00.65ID:tI414gt60 Rubyガイジは嫌われていることにそろそろ気付けよw
67デフォルトの名無しさん (ワッチョイ a3ac-a5Fx)
2022/10/07(金) 01:00:05.85ID:/3WJyx6k0 こういうのはエゴな正義感でやってるんやろ
自分がRubyを支えてるみたいなw
やらかしてることには自ら目をつぶるタイプ、しょうもない人間
自分がRubyを支えてるみたいなw
やらかしてることには自ら目をつぶるタイプ、しょうもない人間
68デフォルトの名無しさん (ワッチョイ ff05-ehet)
2022/10/08(土) 19:37:21.57ID:juauNmJw0 $comment_info_msg_tag = '<div class="comment-information-messag">'.$comment_info_msg.'</div>'
これって変数$comment_info_msg_tagを呼び出した時
変数$comment_info_msgの中身がクラスcomment-information-messagの<DIV>タグを付けられて出てくるって事で合っていますか?
これって変数$comment_info_msg_tagを呼び出した時
変数$comment_info_msgの中身がクラスcomment-information-messagの<DIV>タグを付けられて出てくるって事で合っていますか?
69デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/08(土) 19:57:47.78ID:rIAKoGAI070デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/08(土) 20:14:34.77ID:rIAKoGAI0 てかその記述の意味が分からないのなら、煽り抜きでphp.netを最初から全部読んだ方がいい
基本中の基本中の基本中の基本位のレベルだぞそれ
基本中の基本中の基本中の基本位のレベルだぞそれ
71デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/08(土) 21:32:53.78ID:rIAKoGAI0 CGIの時にfilter_input(INPUT_SERVER,'REMOTE_ADDR')で値が取れないという仕様バグに遭遇してるのだが、
一般的にこれはどう対処されてるんだ?
詳細は以下で、15年前かららしい。
https://www.php.net/manual/ja/function.filter-input.php#77307
原因は以下で、
https://www.php.net/manual/ja/function.filter-input.php#127415
要はENVとSERVERの値は鯖から渡されるが、
使わない場合は無駄なのでデフォでjitするが、CGIだとこれでは動かないらしい。
上記下側のURLによると auto_globals_jit をdisableにすれば直るらしいが、俺の実行環境(fastCGI)では駄目だった。
開発中はモジュールでやってたので気づかなかった。
本番環境(最安値帯のレンサバ)で動作テストする段階になって発覚。(今)
ターゲットは最安値~中間帯のレンサバなので、CGIを切る事も出来ない。
IDEがうるさいから全部filter_inputにしたのにこれかよ!というところ。
諦めて $_SERVER 直接アクセスにソース書き換えるしかないか、と思ってるが、
それ以外の解決策があればよろしく。
一般的にこれはどう対処されてるんだ?
詳細は以下で、15年前かららしい。
https://www.php.net/manual/ja/function.filter-input.php#77307
原因は以下で、
https://www.php.net/manual/ja/function.filter-input.php#127415
要はENVとSERVERの値は鯖から渡されるが、
使わない場合は無駄なのでデフォでjitするが、CGIだとこれでは動かないらしい。
上記下側のURLによると auto_globals_jit をdisableにすれば直るらしいが、俺の実行環境(fastCGI)では駄目だった。
開発中はモジュールでやってたので気づかなかった。
本番環境(最安値帯のレンサバ)で動作テストする段階になって発覚。(今)
ターゲットは最安値~中間帯のレンサバなので、CGIを切る事も出来ない。
IDEがうるさいから全部filter_inputにしたのにこれかよ!というところ。
諦めて $_SERVER 直接アクセスにソース書き換えるしかないか、と思ってるが、
それ以外の解決策があればよろしく。
72デフォルトの名無しさん (ワッチョイ ca51-Tub1)
2022/10/11(火) 13:51:56.12ID:5Qn6fZG50 if ($sex == 0) {
$hoge = 'ちんこ';
} else if ($sex == 1) {
$hoge = 'まんこ';
}
return $hoge;
C系やJavaとは異なり、
変数hogeが初めて宣言されているのがif文の中なのに、if文から出たあとでその変数が見えてしまうことに戸惑っています。
「こういうもの」で慣れるしかないのですか?
何かありがちな注意点ってありますか?
イテレーターの中でしか使わない変数が残ってしまうことでの不安。
$hoge = 'ちんこ';
} else if ($sex == 1) {
$hoge = 'まんこ';
}
return $hoge;
C系やJavaとは異なり、
変数hogeが初めて宣言されているのがif文の中なのに、if文から出たあとでその変数が見えてしまうことに戸惑っています。
「こういうもの」で慣れるしかないのですか?
何かありがちな注意点ってありますか?
イテレーターの中でしか使わない変数が残ってしまうことでの不安。
73デフォルトの名無しさん (ワッチョイ 6749-lNao)
2022/10/11(火) 14:40:16.45ID:j0iSNFpd0 注意する
サポートするエディタを使う
デバッグする
ちなみに挙げてるコードも$sexが0,1以外ならいわゆる未定義になる可能性があって、
まあいいコードではないよね(すぐreturnするだけなら変数いらへんやん的なとこも)
ちなみに9からだとerrorになるらしい
今のPHPでは通っちゃうだけで、戸惑う感覚はなくさないほうがいいと思うよ
サポートするエディタを使う
デバッグする
ちなみに挙げてるコードも$sexが0,1以外ならいわゆる未定義になる可能性があって、
まあいいコードではないよね(すぐreturnするだけなら変数いらへんやん的なとこも)
ちなみに9からだとerrorになるらしい
今のPHPでは通っちゃうだけで、戸惑う感覚はなくさないほうがいいと思うよ
74デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)
2022/10/11(火) 14:40:56.76ID:a24aUp+M0 気持ちが悪いなら未定義の変数をいきなり使うようなことはしなければ良いだけでは?
普通はそんな事しない訳だし
typoはどうしょうもないが
普通はそんな事しない訳だし
typoはどうしょうもないが
75デフォルトの名無しさん (ワッチョイ 034f-iygP)
2022/10/11(火) 15:20:07.39ID:17+/w9Hg0 Ruby でも、if は、スコープを作らない。
C みたいに、{ } で囲むとスコープを作る言語もあるけど、動的言語では少ないかも
if true
a = 3
else
b = 5
end
p a, b #=> 3, nil
C みたいに、{ } で囲むとスコープを作る言語もあるけど、動的言語では少ないかも
if true
a = 3
else
b = 5
end
p a, b #=> 3, nil
76デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/11(火) 16:17:43.00ID:S+x+TbIN0 >>71
興味深い
かなり限定的な不具合だけど、結構基本的なとこだしそんなの残ってるんかなぁ...
手が空いたときに試してみたいと思うけど、環境揃えるのがめんどいからとりあえずissueであげてみては?
Symfonyは$_SERVERから取ってるっぽい
https://symfony.com/doc/current/components/http_foundation.html
興味深い
かなり限定的な不具合だけど、結構基本的なとこだしそんなの残ってるんかなぁ...
手が空いたときに試してみたいと思うけど、環境揃えるのがめんどいからとりあえずissueであげてみては?
Symfonyは$_SERVERから取ってるっぽい
https://symfony.com/doc/current/components/http_foundation.html
77デフォルトの名無しさん (ワッチョイ c6e7-kHT+)
2022/10/11(火) 16:18:01.45ID:zQi6fx0u078デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/11(火) 16:20:55.29ID:S+x+TbIN0 >>72
まずは、マニュアル読めば?
基本的な注意点は書いてある
https://www.php.net/manual/ja/language.variables.scope.php
ただ、phpのマニュアルにしては珍しくちょっとわかりにくいw
まずは、マニュアル読めば?
基本的な注意点は書いてある
https://www.php.net/manual/ja/language.variables.scope.php
ただ、phpのマニュアルにしては珍しくちょっとわかりにくいw
79デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/11(火) 20:33:48.75ID:Xj3nI9lP0 >>76
15年前から公式に載ってるからissueに上げなくとも存在は知られてるはず。
ただcontributeするような連中はモジュールで使うから直す奴が居ないのだろう。
俺はPHPに詳しくないのでcontributeはしないが、Cは読めるので、
contributeする気ならソースの確認は手伝う。
知らないところも含めて推測するなら、
・元々は$_SERVERがimmutable扱いでコピーしても問題なかった(推測、実際の仕様は知らん)
・jitを導入する際にこれでは駄目になり、修正するときに漏れた(或いは修正されなかった)
・モジュールモードは完全に後付で、$_SERVERはApache内のメモリを直接読んでる(多分)
・直接参照の上記構造だとjitすら必要ないが、$_SERVERはCGIモードのjitでも動作するので、
jitはApacheからcharの塊で貰った物をパースする事を意味している?ならここに接続すればいい
のではないかとなる。
ただ、CGIモードのfilter_inputだけで使えない=filter_input内でコピーを持ってる
という構造は上記推定でもナンセンスではあるが。(駄目ではないが無駄)
この部分をさておくなら、仕様変更に対してソースが変更されずに放置されると現状況は発生する。
よって、見るならfilter_inputと$_SERVERの取り扱いと、CGI/moduleモードを決めてる変数だね。(当たり前だが)
修正は、そのコピーを見てる部分を$_SERVERを直接見るようにすればいいだけではある。
修正し忘れてるだけなら簡単だが、修正しようとしても出来なかったから放置されてる場合は多分無理ゲー。
15年前から公式に載ってるからissueに上げなくとも存在は知られてるはず。
ただcontributeするような連中はモジュールで使うから直す奴が居ないのだろう。
俺はPHPに詳しくないのでcontributeはしないが、Cは読めるので、
contributeする気ならソースの確認は手伝う。
知らないところも含めて推測するなら、
・元々は$_SERVERがimmutable扱いでコピーしても問題なかった(推測、実際の仕様は知らん)
・jitを導入する際にこれでは駄目になり、修正するときに漏れた(或いは修正されなかった)
・モジュールモードは完全に後付で、$_SERVERはApache内のメモリを直接読んでる(多分)
・直接参照の上記構造だとjitすら必要ないが、$_SERVERはCGIモードのjitでも動作するので、
jitはApacheからcharの塊で貰った物をパースする事を意味している?ならここに接続すればいい
のではないかとなる。
ただ、CGIモードのfilter_inputだけで使えない=filter_input内でコピーを持ってる
という構造は上記推定でもナンセンスではあるが。(駄目ではないが無駄)
この部分をさておくなら、仕様変更に対してソースが変更されずに放置されると現状況は発生する。
よって、見るならfilter_inputと$_SERVERの取り扱いと、CGI/moduleモードを決めてる変数だね。(当たり前だが)
修正は、そのコピーを見てる部分を$_SERVERを直接見るようにすればいいだけではある。
修正し忘れてるだけなら簡単だが、修正しようとしても出来なかったから放置されてる場合は多分無理ゲー。
80デフォルトの名無しさん (ワッチョイ 034f-iygP)
2022/10/12(水) 13:23:49.79ID:vHtlGJeU0 Symfony って、かなり古そう
PHP は、Laravel 以外は無理じゃないの?
人気のないフレームワークを選ぶと無理
基本、Ruby on Rails 以外は無理だと思う。
Laravel, Django など
ZOZO はLaravelだけど
PHP は、Laravel 以外は無理じゃないの?
人気のないフレームワークを選ぶと無理
基本、Ruby on Rails 以外は無理だと思う。
Laravel, Django など
ZOZO はLaravelだけど
81デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/12(水) 13:28:54.79ID:hQuAltVj082デフォルトの名無しさん (ワッチョイ ca51-Tub1)
2022/10/12(水) 14:51:05.57ID:MmvRDuvc0 Symfonyで作られたかなり古いシステムの改修案件に入りそうなんですが、
これを最新のフレームワーク、最新のPHPに置き換えるのはかなり工数かかりますか?
自分は下っ端だし何も決定権無いんですが、後学のために知りたいです。
これを最新のフレームワーク、最新のPHPに置き換えるのはかなり工数かかりますか?
自分は下っ端だし何も決定権無いんですが、後学のために知りたいです。
83デフォルトの名無しさん (ワッチョイ cb01-p76D)
2022/10/12(水) 14:57:37.19ID:zrvaLfr+0 Mなのかもしれないな
84デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/12(水) 15:50:13.72ID:hQuAltVj085デフォルトの名無しさん (ワッチョイ cbda-kEV8)
2022/10/12(水) 16:20:29.22ID:0CBrymoV0 WEBが絡まない案件でもフレームワーク使ってる?
なんかディレクトリ構成から毎回試行錯誤なんだけど
なんかディレクトリ構成から毎回試行錯誤なんだけど
86デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)
2022/10/12(水) 16:23:30.68ID:vpmJO63Z0 webが絡まない案件ってどんなのだろうか
将来使えるようにという意味で何かの処理をするみたいな話なら
例えばだけどLaravelのCommandで呼べるように作っておけば移行も楽になるとかはあるかも
将来使えるようにという意味で何かの処理をするみたいな話なら
例えばだけどLaravelのCommandで呼べるように作っておけば移行も楽になるとかはあるかも
87デフォルトの名無しさん (ワッチョイ 034f-iygP)
2022/10/13(木) 08:51:46.75ID:Reu2mtSt0 データベースとHTML 画面を使うだけでも、
面倒くさいから、Ruby on Rails を使う
プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?
プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい
自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない
面倒くさいから、Ruby on Rails を使う
プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?
プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい
自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない
88デフォルトの名無しさん (ワッチョイ def8-p76D)
2022/10/13(木) 18:38:24.31ID:2KzUsHD30 いまだにレンタルサーバーでPHP使えても
Ruby使えないとかあるのがネック
なんでレンサバ界隈はPHPなの?
Ruby使えないとかあるのがネック
なんでレンサバ界隈はPHPなの?
89デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/13(木) 18:43:15.95ID:/DBWGbtl0 WordPressのせい(おかげ)
90デフォルトの名無しさん (ワッチョイ def8-p76D)
2022/10/13(木) 18:55:40.85ID:2KzUsHD30 凄く納得してしまったかも
91デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)
2022/10/13(木) 18:57:04.48ID:BGturN710 Rubyなんてそもそも使っている人相当少ないし使えなくて当たり前
92デフォルトの名無しさん (ワッチョイ 635f-72FX)
2022/10/13(木) 19:08:23.95ID:3jyAjd3F0 WordPressのフロントエンド開発とかいう地獄
93デフォルトの名無しさん (ワッチョイ 2b4f-spri)
2022/10/16(日) 23:15:47.50ID:1lEHOAQp0 Ruby on Rails はプロ・企業用だから、Heroku, AWS, Docker
大きすぎて、レンタルサーバーでは無理
大きすぎて、レンタルサーバーでは無理
94デフォルトの名無しさん (ワッチョイ 6b01-7iBv)
2022/10/17(月) 17:31:09.75ID:5FwYTQU9095デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)
2022/10/18(火) 18:16:46.46ID:eLrtEQ000 公開サーバーの「ドキュメントルート」の中に、あるディレクトリがありそこにはphpのライブラリファイルが複数あります。
そのディレクトリに対して、直接ブラウザからアクセスできないような設定を行うことができますでしょうか?
ただし、同じドメインサーバーのphpファイルからのアクセスは許可いたします。(ソースをincludeさせます。)
本来ならば、公開サーバーの「ドキュメントルート」の外に「include」ディレクトリを配置して、
そこにアクセスされないようなファイル類を置くことが一般的だと思いますが、さまざまな理由により
「ドキュメントルート」の中にアクセスできないファイル類を置くことになりました。
何かアイデアがありましたらアドバイスください。
そのディレクトリに対して、直接ブラウザからアクセスできないような設定を行うことができますでしょうか?
ただし、同じドメインサーバーのphpファイルからのアクセスは許可いたします。(ソースをincludeさせます。)
本来ならば、公開サーバーの「ドキュメントルート」の外に「include」ディレクトリを配置して、
そこにアクセスされないようなファイル類を置くことが一般的だと思いますが、さまざまな理由により
「ドキュメントルート」の中にアクセスできないファイル類を置くことになりました。
何かアイデアがありましたらアドバイスください。
96デフォルトの名無しさん (ワッチョイ 9f7c-7iBv)
2022/10/18(火) 18:24:17.73ID:eZjQhR3g0 それPHPの質問じゃなく、ウェブサーバーの設定の質問だからなぁw
ドキュメントルートに.htaccessをおいてアクセス制限すればいいだけでは?
詳しくは.htaccessの書き方などを調べてみては?
ドキュメントルートに.htaccessをおいてアクセス制限すればいいだけでは?
詳しくは.htaccessの書き方などを調べてみては?
97デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/18(火) 18:35:06.55ID:oo0O6LY/0 基本方針として >>96 が良いと思うけど、昔のphpでアクセス可能なphpファイルでグローバル変数に適当な値詰め込んで、アクセスできちゃまずいファイルで、それがなければdie()するやつはよく見た気がする
98デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)
2022/10/19(水) 00:14:08.21ID:yzq3WDoT0 ありがとうございます。
おっしゃるとおり、ウェブサーバーの範囲なのですが。
あちらの世界の人たちが、phpのincludeとか理解いただけるか
不安だったので、ついこっちで質問してしまいました。
一つだけ追加質問させてください。
こういったものは、
パーミッション? chmodなどで設定するものではなくて、
.htaccessでの設定が基本と思っていいですかね。
おっしゃるとおり、ウェブサーバーの範囲なのですが。
あちらの世界の人たちが、phpのincludeとか理解いただけるか
不安だったので、ついこっちで質問してしまいました。
一つだけ追加質問させてください。
こういったものは、
パーミッション? chmodなどで設定するものではなくて、
.htaccessでの設定が基本と思っていいですかね。
99デフォルトの名無しさん (ワッチョイ ab5f-2/eE)
2022/10/19(水) 00:21:40.99ID:jaKz+yV10 httpd.confからドキュメントルートのrequire ip を127.0.0.1にすればいけるのかな?少なくとも外部からのアクセスは弾けるはずだけどさ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- Xのネトウヨは大体高齢独身。40過ぎて独身だと例外なく狂うって本当だったんだなと思う [805596214]
- 女の子に生まれ変わったらやりたいこと🍓🍫💄❤ [856698234]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ウッドデッキで調子こいてたやついたじゃん
- えんやすー
