◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

【PHP】下らねぇ質問はここに書き込みやがれ 14 ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1663659983/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ 0f97-W3aP)2022/09/20(火) 16:46:23.39ID:Sb2Kpzh+0
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 13
http://2chb.net/r/tech/1631147923/

次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured

2デフォルトの名無しさん (スッップ 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

4デフォルトの名無しさん (ワッチョイ 1251-w3Il)2022/09/28(水) 15:20:22.87ID:kZGixsXA0
try catch構文がなぜか機能しない(´・ω・`)
単純なゼロ除算をキャッチさせてみるだけでも、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の場合どうやって分岐しますか?
エラーコードやエラーメッセージを拾って分ける処理をさしあたり書いて意図したとおりに動いてもいますが、これが正しいやり方ではないような気がします。

7デフォルトの名無しさん (ワッチョイ c761-WvKv)2022/09/28(水) 18:16:57.90ID:48qufCUu0
phpでも複数catch出来る
ゼロ除算を他の例外と分けたいなら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();

9デフォルトの名無しさん (ワッチョイ 1251-w3Il)2022/09/29(木) 09:00:43.80ID:+9krd1sq0
>>7-8
ありがとうございます。それができることは分かりました。
とりあえず\Exceptionで一緒くたにcatchしてみてデバッグし、出てきた例外の「正確な型名」の調べ方が分からないです。

「PHP 例外 型 種類」のようにぐぐっても、ありがなゼロ除算の例外の型名すら、いま教えてもらうまでわからなかったです。
JavaならArithmeticException、C#ならDivideByZeroException、といった型名はちょっと調べればわかりますが、PHPの場合はその資料が無いようで。

10デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)2022/09/29(木) 09:08:50.12ID:aAavqPwL0
>>9
何度同じこと言わせるの?
公式読めよ
https://www.php.net/manual/ja/reserved.exceptions.php

11デフォルトの名無しさん (ワッチョイ 1251-w3Il)2022/09/29(木) 10:11:17.58ID:+9krd1sq0
>>10
ありがとうございます。その資料が欲しかったです。
ぐぐって検索するだけで、公式を丁寧にたどることをしなかったのが悪かったです。

12デフォルトの名無しさん (ワッチョイ c77b-dQvS)2022/09/29(木) 12:31:32.34ID:cPkvua8F0
>>11
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 でもいいよね?

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:aAavqPwL0

16デフォルトの名無しさん (ワッチョイ 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

-----

17デフォルトの名無しさん (ワッチョイ dee7-tX/F)2022/09/30(金) 16:58:56.18ID:tV+EdovX0
>>16
多分スペースとか改行とか入ってんかな
"---$pw---"
みたいに前後に目印入れて出してみたら

18デフォルトの名無しさん (ワッチョイ 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']);

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側も確認しなきゃ意味ないだろ

21デフォルトの名無しさん (ワッチョイ 527c-tX/F)2022/09/30(金) 17:22:47.09ID:NBzDpu1o0
bin2hex($pw)

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---

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

24デフォルトの名無しさん (ワッチョイ 527c-tX/F)2022/09/30(金) 17:36:24.68ID:NBzDpu1o0
0x20(スペース)が入っているね
トリムしてもいいならtrim()で前後のスペースを除去する事も可能

25デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)2022/09/30(金) 17:36:47.30ID:HxNT59pn0
POSTがおかしいね
' test'になってる

26デフォルトの名無しさん (ワッチョイ d697-uxQy)2022/09/30(金) 17:44:13.43ID:anKKL5Vh0
おっしゃるとおりです。
フォームに半角スペースが含まれていました。

これに気づかず数時間ハマってました。
ありがとうございました。

----
ブラウザ表示
・1234
・1234
・1
・74657374
・74657374
・1

27デフォルトの名無しさん (ワッチョイ c77b-dQvS)2022/09/30(金) 18:20:29.34ID:3aBoBWM+0
>>26
やってる事がおかしい事に気づけ
IDEでブレークポイント当てれば1分で自力解決出来た案件だ
そもそもprintではデバッグにならないし、<li>も駄目だし

28デフォルトの名無しさん (ワッチョイ d697-uxQy)2022/09/30(金) 21:41:08.05ID:anKKL5Vh0
そうですね。
これを機に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

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タグも実行されない

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)";

32デフォルトの名無しさん (ワッチョイ cfbb-tfD/)2022/10/03(月) 22:57:13.59ID:IWMZiHvT0

33デフォルトの名無しさん (ワッチョイ e3da-OAEy)2022/10/03(月) 23:12:19.96ID:G1EEp94o0
>>31
外側をシングルクォートにしますかね
うっかり変数展開を使わないよう鉄下駄を履くイメージで

34デフォルトの名無しさん (ワッチョイ 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 のような悩みはなくなります
また、何より後で読んだときに「アレ?」って悩まなくて良いです。

37デフォルトの名無しさん (ワッチョイ 037b-jS/a)2022/10/04(火) 00:44:39.24ID:77RhElC90
>>35
外部に公開しない内部専用の鯖でも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はユーザーと直接アクセスする処理の実行場所。
どちらがより正しい捉え方なのでしょうか?

40デフォルトの名無しさん (ワッチョイ e301-8Lq0)2022/10/04(火) 14:16:20.93ID:fqSkVIi/0
内部処理だけというのは、
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 文を作ってる場合'ってのがそもそも正規化ができてないケースっぽいね^^;

42デフォルトの名無しさん (ワッチョイ cfbb-tfD/)2022/10/04(火) 14:33:14.85ID:GRVyRRF90
>>39
フレームワークを使用する前提だと思うけど、今どきのphpだとMVCで分類できないような設計になることが多い
クリーンアーキテクチャとかを調査してみるといい

フレームワークは Laravel だと思うので、「Laravel クリーンアーキテクチャ」あたりでググるとそれっぽい記事に当たれる
ただ、フレームワークの基礎概念がわかっていてもややこしいので、基本的になんちゃってクリーンアーキテクチャを採用することになると思う

43デフォルトの名無しさん (アウアウウー Sa27-o1nH)2022/10/04(火) 14:50:31.74ID:kffIYV9Ia
ありがとうございます。
フレームワーク利用の前提でなく、素?のPHPです。
phpの学習のためにMVCを理解しようとしているので、
実務で構築するものとは、ちょっとズレているかもしれません。

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

一方でModelは関数ライブラリみたいなものという意見もありました。
実務経験のあり皆様の知見をお借りしたいと思います。

44デフォルトの名無しさん (ワッチョイ cfbb-tfD/)2022/10/04(火) 14:58:12.02ID:GRVyRRF90
>>43
過ぎわかるけど、そのへんの厳密さはすぐに役に立たなくなる知見だよ
フレームワークと紐付けて学習することをおすすめします

45デフォルトの名無しさん (ワッチョイ 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してたんですけど、
どうしたらよかったんですかね。
テーブルがそもそもダメなのかな。

47デフォルトの名無しさん (ワッチョイ cf73-OAEy)2022/10/04(火) 22:07:04.75ID:2XMnl95Q0
素直に結合
何のための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でも使えるのか
など、、
宜しくお願いいたします。

50デフォルトの名無しさん (ワッチョイ ff63-pIDl)2022/10/04(火) 22:35:18.09ID:BwJYUobP0
現在表示しているページは、誰が作っているの?

51デフォルトの名無しさん (ワッチョイ 435f-/mFx)2022/10/04(火) 23:35:33.89ID:lI8qARGk0
>>50
自分で作っているページです。
恐らく方法論として間違っているのだと思いますが、
後学の為に方法を知っておきたいです。

52デフォルトの名無しさん (ワッチョイ ff7c-pIDl)2022/10/04(火) 23:51:17.05ID:nXyy/Qec0
ん?サーバーで先にHTMLを生成するのだからその段階で判断基準があるでしょ?
それが無くて後から動的なら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
#=> い

54デフォルトの名無しさん (ワッチョイ 435f-/mFx)2022/10/04(火) 23:55:32.56ID:lI8qARGk0
例えばスマホ/PCなど、表示条件によりbodyタグに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回使いたいだけの場合にライブラリ使わずサクッとできないかと思い、質問しました。

57デフォルトの名無しさん (ワッチョイ 435f-/mFx)2022/10/04(火) 23:59:21.33ID:lI8qARGk0
>>55
現在のページに対しfile_get_contentsなどを使うイメージでしょうか。
ありがとうございます。

58デフォルトの名無しさん (ワッチョイ 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 が出来た

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による操作)はないという前提でお願います...

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属性を変更する

62デフォルトの名無しさん (オッペケ Sr47-i/MD)2022/10/05(水) 08:10:28.17ID:lxgtpcSQr
>>49
phpで生成する段階で分岐しないといけないならphpで分岐する

レンダリング後に分岐したいならjsで分岐するしかない

63デフォルトの名無しさん (ワッチョイ 6fe7-pIDl)2022/10/05(水) 10:08:08.68ID:EybIMEvA0
>>61
RubyってマジでPHPそっくりなんだな

64デフォルトの名無しさん (ワッチョイ 632c-kE2G)2022/10/05(水) 23:07:42.68ID:W5I+dJQy0
すべてのフレームワークは、Ruby on Rails を基本としているから、
初心者は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 も必須になった

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
やらかしてることには自ら目をつぶるタイプ、しょうもない人間

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>タグを付けられて出てくるって事で合っていますか?

69デフォルトの名無しさん (ワッチョイ d37b-S1O+)2022/10/08(土) 19:57:47.78ID:rIAKoGAI0
>>68
合ってない
文字連結で変数に代入してるだけ
プログラミングにおいて「呼び出し」とは関数呼び出しであって、PHPなら()が付く

70デフォルトの名無しさん (ワッチョイ 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 直接アクセスにソース書き換えるしかないか、と思ってるが、
それ以外の解決策があればよろしく。

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文から出たあとでその変数が見えてしまうことに戸惑っています。
「こういうもの」で慣れるしかないのですか?

何かありがちな注意点ってありますか?
イテレーターの中でしか使わない変数が残ってしまうことでの不安。

73デフォルトの名無しさん (ワッチョイ 6749-lNao)2022/10/11(火) 14:40:16.45ID:j0iSNFpd0
注意する
サポートするエディタを使う
デバッグする

ちなみに挙げてるコードも$sexが0,1以外ならいわゆる未定義になる可能性があって、
まあいいコードではないよね(すぐreturnするだけなら変数いらへんやん的なとこも)

ちなみに9からだとerrorになるらしい
今のPHPでは通っちゃうだけで、戸惑う感覚はなくさないほうがいいと思うよ

74デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)2022/10/11(火) 14:40:56.76ID:a24aUp+M0
気持ちが悪いなら未定義の変数をいきなり使うようなことはしなければ良いだけでは?
普通はそんな事しない訳だし
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

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

77デフォルトの名無しさん (ワッチョイ c6e7-kHT+)2022/10/11(火) 16:18:01.45ID:zQi6fx0u0
>>72
pythonとかもスコープは関数単位だよね
スクリプト系言語で 途中で出てきた変数は
それ以降でずっと使えるのが多い気がする

78デフォルトの名無しさん (ワッチョイ 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

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を直接見るようにすればいいだけではある。
修正し忘れてるだけなら簡単だが、修正しようとしても出来なかったから放置されてる場合は多分無理ゲー。

80デフォルトの名無しさん (ワッチョイ 034f-iygP)2022/10/12(水) 13:23:49.79ID:vHtlGJeU0
Symfony って、かなり古そう

PHP は、Laravel 以外は無理じゃないの?
人気のないフレームワークを選ぶと無理

基本、Ruby on Rails 以外は無理だと思う。
Laravel, Django など

ZOZO はLaravelだけど

81デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)2022/10/12(水) 13:28:54.79ID:hQuAltVj0
>>80
LaravelのRequestオブジェクトはSymfonyだよ
コード読んでみ

てか、シラン分野に口出して恥かくのいい加減やめれば?

82デフォルトの名無しさん (ワッチョイ ca51-Tub1)2022/10/12(水) 14:51:05.57ID:MmvRDuvc0
Symfonyで作られたかなり古いシステムの改修案件に入りそうなんですが、
これを最新のフレームワーク、最新のPHPに置き換えるのはかなり工数かかりますか?

自分は下っ端だし何も決定権無いんですが、後学のために知りたいです。

83デフォルトの名無しさん (ワッチョイ cb01-p76D)2022/10/12(水) 14:57:37.19ID:zrvaLfr+0
Mなのかもしれないな

84デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)2022/10/12(水) 15:50:13.72ID:hQuAltVj0
>>82
設計書/仕様書が残ってるか次第じゃないかなぁ
なければ仕様調査から初めなきゃならないのでかなりしんどい

85デフォルトの名無しさん (ワッチョイ 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で呼べるように作っておけば移行も楽になるとかはあるかも

87デフォルトの名無しさん (ワッチョイ 034f-iygP)2022/10/13(木) 08:51:46.75ID:Reu2mtSt0
データベースとHTML 画面を使うだけでも、
面倒くさいから、Ruby on Rails を使う

プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?

プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい

自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない

88デフォルトの名無しさん (ワッチョイ def8-p76D)2022/10/13(木) 18:38:24.31ID:2KzUsHD30
いまだにレンタルサーバーで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:5FwYTQU90
WPやEC-CUBEは同じPHPだといっても別業界の話って感じがする

>>89
WPインストールできる鯖だったらだいたいRubyも対応してない?
とはいえRoRはレン鯖のイメージないよね、AWSだね

95デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)2022/10/18(火) 18:16:46.46ID:eLrtEQ000
公開サーバーの「ドキュメントルート」の中に、あるディレクトリがありそこにはphpのライブラリファイルが複数あります。
そのディレクトリに対して、直接ブラウザからアクセスできないような設定を行うことができますでしょうか?

ただし、同じドメインサーバーのphpファイルからのアクセスは許可いたします。(ソースをincludeさせます。)

本来ならば、公開サーバーの「ドキュメントルート」の外に「include」ディレクトリを配置して、
そこにアクセスされないようなファイル類を置くことが一般的だと思いますが、さまざまな理由により
「ドキュメントルート」の中にアクセスできないファイル類を置くことになりました。

何かアイデアがありましたらアドバイスください。

96デフォルトの名無しさん (ワッチョイ 9f7c-7iBv)2022/10/18(火) 18:24:17.73ID:eZjQhR3g0
それPHPの質問じゃなく、ウェブサーバーの設定の質問だからなぁw
ドキュメントルートに.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での設定が基本と思っていいですかね。

99デフォルトの名無しさん (ワッチョイ ab5f-2/eE)2022/10/19(水) 00:21:40.99ID:jaKz+yV10
httpd.confからドキュメントルートのrequire ip を127.0.0.1にすればいけるのかな?少なくとも外部からのアクセスは弾けるはずだけどさ

100デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/19(水) 07:16:27.43ID:Js5Cj1j50
>>98
上司に聞け、マジで、そうしないと事故るよ

101デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)2022/10/19(水) 07:31:19.51ID:+5kcU5m20
>>99
phpからのファイル読み込みだとWebサーバ通らないから意図したものではない設定になると思うよ

102デフォルトの名無しさん (ワッチョイ efe7-7iBv)2022/10/19(水) 10:40:35.61ID:mOIoNYE10
>>98
それで大丈夫です
.htaccessの設定で上書きされるので何より優先されます

10397 (ワッチョイ 0fbb-BCAW)2022/10/19(水) 11:21:48.30ID:+5kcU5m20
phpで制限してるやつ思い出したんで書き込んどく

https://github.com/bcit-ci/CodeIgniter
CodeIgniter3系で各ファイルの先頭に
defined('BASEPATH') OR exit('No direct script access allowed');
があってスクリプト以外から読めないようにしてた

フォルダにも空ディレクトリ用にindex.html用意してたりして、昔のインフラ対応を一所懸命にやってた感じ
https://github.com/bcit-ci/CodeIgniter/tree/develop/application/controllers

104デフォルトの名無しさん (オッペケ Sr0f-yNwf)2022/10/19(水) 11:26:05.56ID:FPDvrmQDr
下手にWebhttp通そうとしないで、社内とかで相談したほうがいいと思うわ
インフラ関係させたほうが、後々責任とるハメにならないよ

105デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/19(水) 13:52:22.97ID:Js5Cj1j50
>>103
wikiによると2006からあるらしいけど、当時ですらその方式はナンセンスだよね。
上の階層には.htaccess置いてるし、ソフト403でいいのか?だし。
そもそもPHPではサーバーレス的な構成はほぼ無いので、諦めて普通に癒着させた方が綺麗だった気がする。

106デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)2022/10/19(水) 14:06:52.57ID:+5kcU5m20
>>105
んなこたぁないと思うよ

あの頃のレンサバの開放ディレクトリってフラットだったから
あと、レンサバ以外でnginxがはやりつつあったからフールプルーフでしょ

まぁ、あんまりきれいでないことは同意w

107デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/19(水) 15:41:31.30ID:Js5Cj1j50
>>106
当時の仕様は知らんが、今と変わりなければ、
nginxでは.htaccessは使えないし、ディレクトリインデックスはデフォでオフだから、まるで意味無いよ。
> If a request ends with a slash, NGINX treats it as a request for a directory and tries to find an index file in the directory. The index directive defines the index file’s name (the default value is index.html). To continue with the example, if the request URI is /images/some/path/, NGINX delivers the file /www/data/images/some/path/index.html if it exists. If it does not, NGINX returns HTTP code 404 (Not Found) by default. To configure NGINX to return an automatically generated directory listing instead, include the on parameter to the autoindex directive:
> https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/#:~:text=The%20index%20directive%20defines%20the%20index%20file%E2%80%99s%20name,returns%20HTTP%20code%20404%20%28Not%20Found%29%20by%20default.
フールプルーフを目指すなら、Apacheとnginxの両方の設定ファイルもちゃんと用意しておけばいいだけ。
.htaccess置くのなら、Options でディレクトリインデックスも切れるはずだし、グダグダすぎる。

まあ歴史は長いようだから、大抵何らかの理由があるものではあるけど、
見た目、単なる技量不足(鯖を知らないだけ)で、初心者的なコーディングをしてしまったように見える。
そうでなければ、鯖がグダグダ過ぎて設定してもまともに動かなかったのでPHP側で対応した、てなところだろう。

108デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)2022/10/19(水) 17:33:25.58ID:+5kcU5m20
>>107
基本古いレンサバ仕様で動くように作ってあったのよ
で、その頃ディレクトリの中丸見えじゃん問題ってのがそこそこ話題にされてたんで、index.htmlを用意するってのはそれ対策かと

nginxの設定テンプレートは、そこいらの野良blogとか記憶が確かならnginxの公式でも配布してたと思う
ただ、野良の方はかなり程度が低いのも多かったから、できる範囲で対応をとってたって感じかなぁ(多分w)
exit()がこっちの対策だね

なんせcomposerインストールとかも野良な時代だからねぇ
色々大変だった

ところで、apache/nginx用の設定ファイルを同梱ってありえるの?
.htaccessを突っ込んでるのは見るけど、設定ファイルを配布してるのは見たことないんだけど

109デフォルトの名無しさん (ワッチョイ cb09-w/5w)2022/10/19(水) 19:27:01.72ID:vYLhahcn0
PHP技術者認定試験って難しい?

110デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)2022/10/19(水) 19:35:32.95ID:yzq3WDoT0
ありがとうございます。
まさか盛り上がる案件だとは。
個人で借りたレンタルサーバーの研究サイトなのです。
心配させてスイマセン。
htaccessで整えてみます。

111デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/19(水) 20:27:01.24ID:Js5Cj1j50
>>108
> ところで、apache/nginx用の設定ファイルを同梱ってありえるの?
知らん。けど、技術的に出来ない理由はないだろ。
もっとも、nginxのは.htaccessから変換して作るものらしいし、.htaccessがあれば何とかなるんだろう。
(と思って公式のrewriteちょっと見てみたが、手動ならさておき、自動では厳しいなこれは)

レンサバ+PHPにはnginxは向かなかったのかもね。
上げたら見えるほうが分かりやすいし、
大量の静的ファイルを捌くだけの元々の鯖の使い方だとその方がいいし、
apacheのデフォがそうだからnginxレンサバもそうしたら、
鯖単位でしか設定出来ないのだから丸見えになってしまう。
無理にapacheに合わせず、nginx本来の設定で使えばよかっただけだね。
つってもnginxレンサバがapacheに合わせたのは商業的な理由だろうし、
結果、その歪みのしわ寄せがフレームワーク側に残ってる、間抜けだがありがちな状況に見えるよ。

しかし今も更新してるんだから直せばいいのにとも思うが。コントリビュートするならどうぞ。
最上位の階層の.htaccessに一行、
Options -Indexes
と書けばそれ以下のソフト403なindex.htmlは全部削除出来るはず。以下参考
> https://www.javadrive.jp/apache/ini/index24.html
> https://httpd.apache.org/docs/2.4/ja/mod/core.html#options

112デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/19(水) 20:40:24.15ID:Js5Cj1j50
>>110
個人で研究するなら好き勝手にやるべきだが、一応
> 一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。
> 世の中には、例えば、ユーザ認証は常に .htaccess ファイルで 行なわなければならない、という誤解が広まっていますが、
> まったくそんなことは ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、 実際、その方がより良い設定方法です。
> https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
まあサーバの設定ファイルもほぼ同じ書式なのでhtaccessの書き方を確認するのも悪くはないが、
そもそもhtaccessなんて無くても動くように作るべきだよ。
(それがCodeIgniterでやってる事だと言われればそうなのだが)

113デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)2022/10/19(水) 20:49:06.23ID:+5kcU5m20
>>111
> 知らん
まぁそうやんな。俺も知らんw
ちょっと誤解させたかもしれないけど、nginx使ってたのは自前サバとかVPSとかで、レンサバのnginxは無かったと思う

余談だけど、CodeIgniter4だとどうなってるか見てみた。
ちゃんとcomposer install にも対応してて、随分モダンになってたわ(当たりまえだけど)
でも、index.htmlは残っててちょっと笑ったw

久しぶりに週末にでも使ってみようかと思う

114デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)2022/10/19(水) 21:00:01.66ID:+5kcU5m20
>>112
laravelとかはもう割り切って.htaccessないしね
個人的にはレンサバ以外でapache使うこともなくなったから書き方も忘れたw

115デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/19(水) 22:21:11.99ID:Js5Cj1j50
>>113
> nginx使ってたのは自前サバとかVPSとかで、レンサバのnginxは無かったと思う
ならセルフ開示じゃないですか~。
それなら、nginx登場の2004はxhrがajaxとして再発見される2005より前なので、
nginxは当初は(wiki読む限り今もらしいが)静的ファイルの高速配信向けで、
おそらくデフォでApacheと同じくディレクトリインデックス有りで、
しかも.htaccessが効かないから事故りまくったのだろう。
んで、動的サイトの増加に伴い、デフォでディレクトリインデックス無しに仕様変更したのではないかと。


>>114
まあ参考にすべきは最近最高に使われてるソースであって、PHPならLaravelなのは確か。
ただ俺はWeb系でもないのでさっぱり知らないし、実際どう配置して使うのかも知らないが、publicには転がってる。
https://github.com/laravel/laravel/blob/9.x/public/.htaccess
robots.txtもあるから、おそらく外から見えるディレクトリなのだろうとは思う。

ただ、PHPの場合、構造的に最低限のrewriteはサーバーにやって貰うしかない。
他言語みたいにURL文字列を引数として関数コールして貰えれば鯖と完全分離出来るが、
そうではないので、諦めて片足突っ込んだ状態で行くのが一番ましだと思うよ。
Laravelは Options -MultiViews -Indexes と rewrite だけだから、最小限に留めてる。これが多分ベスト。

CodeIgniterはこのOptionsの一行をケチった結果index.htmlが大量に必要になってるわけだが、
htaccess見たところアク禁指定だけでrewriteが無いので、rewriteしないつもりなら鯖と完全分離出来る。
が、現実的にrewrite無しの動的鯖って厳しい気が。
とはいえ、ユーザーに直接クエリ文字列を書いてもらえるのなら有りなので、フレームワークとしてはこれでいいのかも?

116デフォルトの名無しさん (ワッチョイ 9f63-y3r4)2022/10/19(水) 22:26:04.73ID:o5dUZxuy0
レンサバって、ユーザーにて医今日してくれる場所は、ユーザーのHOMEディレクトリで、
その配下にpublic_htmlがあるんだよね?
その隣にディレクトリ作れば、Webからはアクセス出来ないでしょう

117デフォルトの名無しさん (ワッチョイ 9f63-y3r4)2022/10/19(水) 22:26:46.26ID:o5dUZxuy0
× て医今日
○ 提供

なんて変換だよ・・・

118デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)2022/10/20(木) 00:52:50.25ID:JdSscN+80
>116
おっしゃるとおりです。
ですが、いろいろと理由がありドキュメントルート配下に、
ブラウザからアクセスさせないディレクトリを作りたいと思ったのですが。
それが、こんなにイレギュラーなことかとは思わなかったです。。

ベーシック認証やIP制限などで、htaccessは何度か弄ったことはありますが、
そもそもこのファイルなんぞやとは思っていました。
htaccessとかの学習は、サーバー関連の学習で得られますでしょうか?
Linuxとかの基礎本とか読んでみたのですが、コレジャナイ感がしてます。
「htaccessとは?」という基礎レベルから理解したいのですが。。

119デフォルトの名無しさん (ワッチョイ 9f7c-y3r4)2022/10/20(木) 01:50:07.83ID:kET4P9rE0
今時レンタルサーバーでPHPを動かすという需要がWPぐらいしか無い気がするんだよね
だからLaravelみたいなのを使う場合はレンタルサーバーなんかで動かせられないし
(データベースなども必要だし)
AWSの無料枠とかでやった方が良いのでは無いかと思うのだけどね
さくらのクラウドとか安いサービスもあるし、選択肢は結構ある筈だけどね

120デフォルトの名無しさん (オッペケ Sr0f-s5qW)2022/10/20(木) 08:21:45.81ID:MwzDpM35r
AWSは無料枠にハメられて高額になるからレンサバ使えるならレンサバがコスト的にいい

121デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/20(木) 08:36:09.51ID:Y6zWMSoX0
>>118
言うほどイレギュラーでもない。
ただ、レンタルサーバーでもドキュメントルートは変更出来るだろうから、ディレクトリ作って下にずらせばいいだけではある。

htaccessは知っておけばいいものでわざわざ学習する物ではない。
とりあえず公式全部読めば何となく分かるだろうし、その程度でいい。1~2日程度。(8~16時間程度)
それでも意味不明ならググれば何とかなる。
https://httpd.apache.org/docs/2.4/ja/
https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
機能一覧なら以下。
https://httpd.apache.org/docs/2.4/ja/mod/quickreference.html
逆に言えばここに挙げられていることしかできないから、この中にやりたい事がなければhtaccessでは実現出来ない。
見れば分かるがサーバーの設定であり、PHP的に必要な物はほぼ無い。(当たり前だが)
ぶっちゃけ、今の君の理解でも大して問題ないと思う。
ただ、その場合、例えばCodeIgniterみたいに(あれは意図的だと思うけど)、
それhtaccessに書けば一行で済むよ?みたいな事になる可能性があるだけ。とはいえ、それでも問題ないのも事実。

122デフォルトの名無しさん (ワッチョイ eb7b-1jHB)2022/10/20(木) 08:40:25.19ID:Y6zWMSoX0
>>119
今時無料レンタルサーバーでもMySQL使えるよ。
https://www.star.ne.jp/free/functions.php
もっとも、初心者がPHPをわざわざ書く必要は無くなってきてて、最終的にWPかNoCodeになる気はするが。

123デフォルトの名無しさん (ワッチョイ 0ff8-NQ2R)2022/10/20(木) 17:37:46.33ID:CBxQXJka0
laravelインストールできなかったり、
MySQLがwindow関数使えないVerだったり
半端なレンサバのほうが何故か多い印象

なんでMySQLは5止めが多いんだ?

124デフォルトの名無しさん (JP 0H4f-2/eE)2022/10/20(木) 18:53:20.55ID:zfdkX5sTH
レンサバは極端な話WPだけ出来ればいいしって設計が多い
さくらとかも

125デフォルトの名無しさん (ワッチョイ d193-++Yg)2022/10/25(火) 13:00:09.47ID:S5n6e8jb0
PHPやりはじめてます。
ソースを修正するたびにサーバーにアップロードしてWebで試しているんですが
アップロードを何回も連続で繰り返してるとプロバイダから何か異常なアクセスしていると思われて
突然使用禁止とかになってしまうこととかはないんでしょうか?

126デフォルトの名無しさん (ワッチョイ 6ebb-7TT9)2022/10/25(火) 13:07:11.70ID:SJXXwtKb0
ないです

127デフォルトの名無しさん (ワッチョイ 0549-yrTQ)2022/10/25(火) 14:52:36.86ID:7auWfLY00
めっちゃ高速に大量に頻繁にbot並にやるなら思われるかもね

128デフォルトの名無しさん (ワッチョイ 8263-UuoP)2022/10/25(火) 15:49:08.68ID:Em+AyBVc0
アップロードの時は回線速度超える事はないし
よっぽどアクセス集中していない限り、処理が破綻することはないと思う
使用禁止にするかはサーバーの利用規約と管理者の裁量

129デフォルトの名無しさん (ワッチョイ 427c-UuoP)2022/10/25(火) 20:40:23.57ID:nojkBjJF0
何故ローカルで開発環境を作ってそこで試さないのか・・・

130デフォルトの名無しさん (ワッチョイ 21da-80Lh)2022/10/26(水) 09:34:23.26ID:coiJgjfP0
サーバの構築はPHPの学習の本質ではないからですね

131デフォルトの名無しさん (ワッチョイ 3901-80Lh)2022/10/26(水) 09:36:02.91ID:gnI45ZOc0
>>125
手作業程度でそんな事にならんよ
毎日12時間以上5人程度が同じサーバにそういう事してたけど問題なし

ただ、その方法だとデバッガー使えないんじゃないの?
トレースとか出来たほうが楽だよ

132デフォルトの名無しさん (ワッチョイ 21da-80Lh)2022/10/26(水) 10:08:24.28ID:coiJgjfP0
>>131
xdebugを使えばリモートでトレースデバッグできるのでお勧めですね

133デフォルトの名無しさん (ワッチョイ 427c-UuoP)2022/10/26(水) 10:50:27.55ID:s5FmrwgX0
>>130
いやいやwwww
開発環境を作れないような奴は開発する以前の問題
個人でやるだけなら別に好きにやればいいけど
仕事で開発環境も作れませんは流石に無いわw
xamppとかサルでも出来るようなのもあるし、docker等も先に学習しておいた方がいい

134デフォルトの名無しさん (ワッチョイ 8263-UuoP)2022/10/26(水) 10:59:19.37ID:b6oRD2LO0
学習するなら、本番と(なるべく)同じ環境でやるのが良いと思う

135デフォルトの名無しさん (ワッチョイ eef8-B2ja)2022/10/26(水) 15:45:27.26ID:NvEAaUGj0
APIの接続制限してるのだと実験しにくい
レンサバのIPアドレスは登録してるけど、
ローカルサバからAPIが使えなくて

こゆときどうしてる?
相手先にローカルサバにも解放してもらう?

136デフォルトの名無しさん (ワッチョイ 71ac-yrTQ)2022/10/27(木) 00:39:49.92ID:vwkoq2WA0
日本語でおけ

137デフォルトの名無しさん (ワッチョイ 427c-UuoP)2022/10/27(木) 01:29:49.29ID:rsMc68LB0
AというサーバーのAPIを使いたいけど、Bのレンタルサーバーからのアクセスは許可しているが
ローカル(自宅か会社?)のIPからは許可されてないから使えないって事?
どっちにしてもPHP全く関係ないけどw

138デフォルトの名無しさん (ワッチョイ f99a-NpS5)2022/10/31(月) 19:22:50.72ID:4ZX07akh0
PHPのSQLのサンプルで次のようなデータの登録と読み出しはうまくいきました。
DB書き込み送信側
$stmt=$pdo->query('CREATE TABLE test_table (id text, name text)');
$stmt=$pdo->query("INSERT INTO test_table (id, name) VALUES ('abc', 'def')");
DB読み込み受信側
$stmt=$pdo->query('OPEN test_table (id text, name text)');
$result_rows = $pdo->query('SELECT * FROM test_table');
foreach ( $result_rows as $row ) {
echo "id: {$row['id']}"."<br>";
echo "name: {$row['name']}"."<br>";
}
結果表示:abc def
この項目名idや nameを別の文字にするとうまく機能しなくなります。
idや nameが必須項目なのかと思い、3つ目に独自の名前の項目を追加してもだめでした。
この項目名は決められた名前しか使えないのでしょうか?
独自の名前を追加するにはどうすればいいのでしょうか?

139デフォルトの名無しさん (ワッチョイ 937c-HLP5)2022/10/31(月) 19:41:02.63ID:CaQ/+DOQ0
PHP以前にSQLを理解しているか?
mysql workbenchなどでSQLを入力してどんな挙動をするかを先に勉強した方が良いのでは?

140デフォルトの名無しさん (ワッチョイ 1361-4kdC)2022/10/31(月) 21:26:35.07ID:DaaCK8GW0
>>138
同じ名前で再度CREATEしてもテーブル再作成されたりしないのよ?

141デフォルトの名無しさん (ワッチョイ f99a-NpS5)2022/10/31(月) 21:48:21.38ID:4ZX07akh0
そこは書くの省いてますが毎回テーブル消去しての実行になってます

142デフォルトの名無しさん (ワッチョイ 0902-Ha3M)2022/10/31(月) 21:53:29.34ID:h9jqxmjM0
何で毎回テーブル消すのかが分からん

143デフォルトの名無しさん (ワッチョイ 1302-ee5o)2022/10/31(月) 23:20:50.12ID:bH7L5hyf0
何をやったのか詳しく書いた方がいいと思う
長くなってもかまわないから
エラーメッセージも
情報が少なすぎて何がなんだかわからない

teratail とかの質問のフォーマットが参考に
なるかもしれない

144デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)2022/10/31(月) 23:26:53.75ID:KoRc+sfH0
OPENって初めてみたわ
コレってDB何?

145デフォルトの名無しさん (ブーイモ MM33-gcVw)2022/11/01(火) 14:46:59.98ID:CRXHeHIYM
>>144
mysqlかpostgresqlだと思う

146デフォルトの名無しさん (ワッチョイ 1363-HLP5)2022/11/01(火) 15:42:59.29ID:hGXBrabD0
OPENと言うステートメントはある事はあるが、カーソル操作だな
>>138の記述は変だと思う

147デフォルトの名無しさん (ワッチョイ f934-NpS5)2022/11/03(木) 22:09:25.88ID:xQnCuP5H0
質問
Webのurl下のファイルって表面上見えなくてもある方法でダウンロードしようと思えばできますよね?
ということはPHPのソースはまんま見られてしまうのでしょうか?
見られると簡単に解析されていいように弄られてしまう可能性も高いんでしょうか?

148デフォルトの名無しさん (ワッチョイ 3909-DL5s)2022/11/03(木) 22:29:30.25ID:ROsFLORr0
>>147
できません

149デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)2022/11/03(木) 22:53:58.13ID:WOBTUDvw0
>>147
Webサーバの設定ミスで見えてしまうケースはあります
また、外部入力の取り扱いが不適切なサイトで意図しないソースをダウンロードしたり表示したりすることが可能となるケースもあります
手法はいくつもありますがディレクトリトラバーサルを使用した攻撃は観測しやすいので調査してみると良いでしょう

ソースを見られると解析は可能ですが、解析されても問題がないようにするためのナレッジも色々あるので調べてみると良いです

150デフォルトの名無しさん (ワッチョイ a95f-eCT5)2022/11/03(木) 23:17:12.77ID:RxtPrKwp0
Web APIのアクセストークンとかどこに置くのが良いんだろ

151デフォルトの名無しさん (ワッチョイ fbe7-Tk+f)2022/11/04(金) 10:03:40.02ID:fjW+y4zq0
>>150
index.php と同じところにおいてください

152デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)2022/11/04(金) 10:34:34.64ID:7HgZbeW40
>>150
cookieとlocalstorageのどちらか?って議論なら、JWTの議論が参考になると思う
phperなら徳丸さんの日記あたりを漁るとなんかあった気がする

ただ、時期によって推奨が変わってきてるんで、直近の議論じゃなければ新しい議論を探したほうがいい

153デフォルトの名無しさん (ワッチョイ 1363-HLP5)2022/11/04(金) 10:39:08.02ID:QCeBmW6M0
議論が変わると言うことは、まだ枯れてないんだろうな

154デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)2022/11/04(金) 10:53:31.17ID:7HgZbeW40
結論が時期によって変わるのは、ブラウザの進化と各種Webフレームワークのデフォルト状態がその時々で変化しているせいですね
ただ、どの時期でも大きく変わらないのは「実態としてはどちらも大差ない」「XSSがあればどっちも危険」ってとこです
なので、その時々の推奨と言っても僅差ですね

155デフォルトの名無しさん (JP 0H8d-eCT5)2022/11/04(金) 13:02:42.65ID:1sxu7itbH
適当にまとめちゃうと「どこでも危険なのは変わりないから大して変わらない」で落ち着くのかな

156デフォルトの名無しさん (ワッチョイ 0b97-ofdD)2022/11/04(金) 18:23:18.46ID:mo/2hjrh0
fopenのモードの語源
r はread
wはwirte
で。。
aは、append? add? どっちですか。

157デフォルトの名無しさん (ワッチョイ 937c-Tk+f)2022/11/04(金) 20:43:22.06ID:mATgUcp20
appendかと(追記モードみたいな意味合いだし)

158デフォルトの名無しさん (ワッチョイ 368c-Cw2/)2022/11/08(火) 07:48:23.75ID:c6RTZORh0
jpegの画像を読み込んで、画面全体を50%の透明度にしてpngで保存するにはどうしたらいいですか?
imagecopymergeで完全に透明な画像を50%で合成しても無理でした。

159デフォルトの名無しさん (ワッチョイ b19f-Ee8s)2022/11/08(火) 11:12:12.94ID:6dXM39fN0
www.php.net/manual/ja/book.imagick.php

160デフォルトの名無しさん (ワッチョイ 368c-Cw2/)2022/11/08(火) 17:14:26.31ID:c6ryzee70
自己解決しました
imagecoloratとimagesetpixelで1pxずつコピーすればよし

161デフォルトの名無しさん (テテンテンテン MM96-8gy9)2022/11/09(水) 17:37:16.27ID:jregjzg7M
PHPて複数の人が同時に同じPHPのアドレスにアクセスするとやっぱり
そのPHPが同時に実行されるんですかね?
同時であっても問題が起こらないように記述しとかないといけないんですかね?ファイルアクセスとか
特に気にしなくても問題になるようなことはほとんどないんでしょうか?

162デフォルトの名無しさん (ワッチョイ 9263-zlm6)2022/11/09(水) 18:12:02.46ID:v9YRsbRp0
問題が起きるかどうかはロジック次第
ネットショップで残りあと1つの商品を
複数の客が取り合ったときどうなるかな

163デフォルトの名無しさん (ワッチョイ 9e97-Cw2/)2022/11/09(水) 22:21:42.93ID:B8ttDfTq0
複数の<input>タグがあり、その<input>要素が何番目か、またその<input>の状態のデータ(flag)を送りたい。
<input>で送れる情報は、name属性が$_POST[]のKeyとなり、データ自体はvalue属性となるが。
これでは、送れる情報は一つだけになってしまう。

inputのtypeはボタンを予定していて、valueの値に対して背景色などの装飾を設定したい。flagの状態はデータベースで管理したいと思っています。

ボタンを押したとき、そのボタンは@何番目の<input>か?そのボタンはAどんなステータスなのか?
を送る一般的な方法ありますか?

164デフォルトの名無しさん (ワッチョイ 527c-zlm6)2022/11/09(水) 23:19:53.18ID:N3jhnMoZ0
ん?別にnameを被らないようにすればいいだけでは?

165デフォルトの名無しさん (ワッチョイ 515f-2wsz)2022/11/09(水) 23:25:54.31ID:qkSO7igA0
nameって被って良いんだっけ?

166デフォルトの名無しさん (ワッチョイ 9263-zlm6)2022/11/09(水) 23:26:13.49ID:v9YRsbRp0
ボタンのステータスって押されてるかどうかなの?
複数ボタンがあって、それをマウスで選択し同時に押して、
さらにサブミットする訳かな?

167デフォルトの名無しさん (ワッチョイ 79ac-pJTy)2022/11/10(木) 00:03:46.62ID:OiyyiqKZ0
もうJavaScriptでやればいいじゃない

168デフォルトの名無しさん (ワッチョイ 9e97-Cw2/)2022/11/10(木) 02:59:06.05ID:9rsfrZ3t0
ありがとうございます。
イメージとして
【PHP】下らねぇ質問はここに書き込みやがれ 14 ->画像>1枚
こんなものです。
JavaScript併用しかないでしょうか?

169デフォルトの名無しさん (ワッチョイ b161-Rq8s)2022/11/10(木) 03:12:39.55ID:D1e6h/yW0
phpはname="hoge[]"みたいに[]付けると配列、name="hoge[hage]"みたいにすると連想配列で値取れるよ

170デフォルトの名無しさん (ワッチョイ 9e97-Cw2/)2022/11/10(木) 03:31:30.79ID:9rsfrZ3t0
ありがとうございます。
いま。環境がないので確かめられないのですが。
POSTで受け取ったときは、こんなかんじで値が取得できますかね。。
明日チャレンジしてみます。

foreach($_POST['hoge'] as $flag){
echo $i;
echo $flag;
$i++;
}

171デフォルトの名無しさん (ワッチョイ 527c-zlm6)2022/11/10(木) 15:22:36.26ID:yzcqKQgo0
https://www.php.net/manual/ja/control-structures.foreach.php

$iなんていらないw
key valueを取る方法でやればいいだけ


lud20221111124209
このスレへの固定リンク: http://5chb.net/r/tech/1663659983/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「【PHP】下らねぇ質問はここに書き込みやがれ 14 ->画像>1枚 」を見た人も見ています:
【PHP】下らねぇ質問はここに書き込みやがれ 3
【PHP】下らねぇ質問はここに書き込みやがれ 12
【PHP】下らねぇ質問はここに書き込みやがれ 15
【PHP】下らねぇ質問はここに書き込みやがれ 8
【PHP】下らねぇ質問はここに書き込みやがれ 11
【PHP】下らねぇ質問はここに書き込みやがれ 10
ピョンチャンのほうから書き込みしてるけど何か質問ある?
【芸能】 「中居正広もキメていた?」悪質な書き込みが「質問掲示板」に多い理由
くだらねえ質問はここに書き込め! Part178
生物学専門家への質問はここに書き込めPart43
くだらねえ質問はここに書き込め! Part 182
くだらねえ質問はここに書き込め! Part 215
くだらねえ質問はここに書き込め! Part 243
くだらねえ質問はここに書き込め!Part 250
くだらねえ質問はここに書き込め! Part 212
くだらねえ質問はここに書き込め! Part 233
くだらねえ質問はここに書き込め! Part 217
くだらねえ質問はここに書き込め! Part 239
くだらねえ質問はここに書き込め! Part 242
くだらねえ質問はここに書き込め! Part244(ワ有)
〒くだらねぇ〜質問はここでしろ【お客様専用】142
くだらねぇ質問はここで@自宅鯖 16台目
スレ立てるまでもない質問はここに書け
〒くだらねぇ質問はここでしろ【質問スレ】 159
〒くだらねぇ質問はここでしろ【質問スレ】 170
〒くだらねぇ質問はここでしろ【質問スレ】 169
■ちょっとした物理の質問はここに書いてね254■
■ちょっとした物理の質問はここに書いてね257■
■ちょっとした物理の質問はここに書いてね258■
■ちょっとした物理の質問はここに書いてね250■
■ちょっとした物理の質問はここに書いてね251■
〒くだらねぇ質問はここでしろ【お客さま専用】162
■ちょっとした物理の質問はここに書いてね217■
■ちょっとした物理の質問はここに書いてね242■
■ちょっとした物理の質問はここに書いてね206■
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part330
■ちょっとした物理の質問はここに書いてね255■
■ちょっとした物理の質問はここに書いてね248■
■ちょっとした物理の質問はここに書いてね210■
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part361
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part347
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part368
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part362
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part373
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part333
■ちょっとした物理の質問はここに書いてね204■
■ちょっとした物理の質問はここに書いてね225■
■ちょっとした物理の質問はここに書いてね222■
■ちょっとした物理の質問はここに書いてね215■
■ちょっとした物理の質問はここに書いてね235■
■ちょっとした物理の質問はここに書いてね220■
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part350
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part351
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part342
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part346
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part337 [無断転載禁止]
|;;; l ゚ ー゚ノ|<くだらない質問はここに Part338 [無断転載禁止]
くだらない質問はここに【その11】
どうしてもマルチしたい質問はここに書け○チ
スレ立てるまでもない質問はここで 148匹目
スレ立てるまでもない質問はここで 146匹目
スレ立てるまでもない質問はここで 149匹目
スレ立てるまでもない質問はここで 144匹目
02:56:19 up 3 days, 13:20, 0 users, load average: 14.12, 11.79, 10.84

in 0.02408504486084 sec @0.02408504486084@0b7 on 121516