X



PHP質問・雑談スレ4【初心者お断り(ROM歓迎)】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
垢版 |
2017/06/28(水) 21:34:09.26ID:???
PHPに関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://mevius.2ch.net/tech/ (【PHP】で板内を検索)

前スレ
http://medaka.2ch.net/test/read.cgi/php/1486956982/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 http://ideone.com/
・プログラミングのお題スレ (求PHPer参戦)
 http://mevius.2ch.net/test/read.cgi/tech/1480579110/

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0499nobodyさん
垢版 |
2018/07/08(日) 14:20:25.97ID:???
そんなにjsがいいならjsの子になっちゃいなさい!
0500nobodyさん
垢版 |
2018/07/08(日) 15:23:04.10ID:4WOWpkJq
JSはブラウザで動くのがJSしか無いから
AltJSみたいのが生まれたけど
サーバーサイドは別に代わりがいくらでもあるしね
0501nobodyさん
垢版 |
2018/07/08(日) 15:34:54.96ID:???
ブラウザで動くのがjsしかないのが異常というか
jsだけとはいえブラウザで動かせること事態が本来異常というか
0502nobodyさん
垢版 |
2018/07/08(日) 15:47:47.44ID:???
jsで、任意のファイルを読み書きできるの?

出来てしまうとセキュリティ上やばい気がするのだが。。。
0503nobodyさん
垢版 |
2018/07/08(日) 16:18:42.43ID:4WOWpkJq
>>502
なんの話?
ブラウザのJSは勝手に他サイトやファイルシステムの内容を読めるAPIは無いし
脆弱性を利用してブラウザのセキュリティを突破しようにも
サンドボックスがあったりして難しい
0504nobodyさん
垢版 |
2018/07/08(日) 17:48:47.31ID:???
サーバサイドプログラムでjsを使う場合の話です。

任意のファイルの読み書きはできるのでしょうか?
0505nobodyさん
垢版 |
2018/07/08(日) 18:08:13.66ID:???
node.jsならできるよ。
require('fs');
0506nobodyさん
垢版 |
2018/07/08(日) 21:06:37.76ID:???
jsだからどうという話ではないな。nodeがそうだというだけで。
0509nobodyさん
垢版 |
2018/07/09(月) 14:38:37.47ID:???
>>502=>>504なら
なぜPHPならセキュリティ上問題ないと思った?ていう
まぁ多分本人が考えてることと他のやつが考えてることが違うのだろうけど
0510nobodyさん
垢版 |
2018/07/09(月) 14:59:42.48ID:???
まあお茶でも飲んで落ち着けよハゲ
0511nobodyさん
垢版 |
2018/07/09(月) 19:52:51.86ID:???
これが落ち着いていられるか!
0512nobodyさん
垢版 |
2018/07/14(土) 17:07:18.88ID:8nY3xhKd
このスレであってるかな…?
掲示板を作れるようになりたいんだが、正直マジでCSSとHTMLと少しのPHPの知識(スクレイピングなど)ぐらいしか知識がなくてどういう仕組みなのかわからない。
PHPで掲示板って作れる?
理想としてはガールズちゃんねるそのまんまなのが作れたら最高
0513nobodyさん
垢版 |
2018/07/14(土) 17:24:51.99ID:???
掲示板と言っても、DBを使う/使わないで難易度が大きく変わる

作らなくてもその辺にサンプルどころかそのまま使えるものが山程落ちてるよ
それを改造するところから初めてみては
0514nobodyさん
垢版 |
2018/07/14(土) 17:37:27.52ID:8nY3xhKd
>>513
DBを使わないPHPの簡易掲示板はコピペしたり改造したりしてなんとか作れた。
ただ、txtファイルに書き込みデータを保存する方法だと簡易的すぎるかなと。

理想はガルちゃんみたいにユーザーが自由にトピックを立てられる形にしたいから、DBを使ってやりたい…

どっかにわかりやすい雛形でもあればいいんだけど、何から手をつければいいかすらわからない…
0515nobodyさん
垢版 |
2018/07/14(土) 17:46:54.13ID:???
>>514
俺も昔やろうとしたんだけど、掲示板はセキュリティに気をつけないとあっという間に終わる
更にセキュリティ的に問題なくても、連投や巨大投稿、大量の改行コードだけの投稿などをどう取り扱うかで永久に終わらない

トピックというかスレでいいなら
「2ch風掲示板 cgi」
「2ch風掲示板 php」
この辺で検索してみてはどうかな
0516nobodyさん
垢版 |
2018/07/14(土) 17:48:37.61ID:???
要求仕様を実現するのに最低限必要なことと、そうでないことを切り分けられる頭がないと無理

ガルch形式のbbsも2ch形式のbbsもc, perl, php, その他わりとどんな言語でも作れる
それとtxt方式かDB利用かは直接関係ないし
どちらにしてもどのようにデータを読み書きするかという設計を自分で出来ないと話にならない

コピペと改造でなんとか、ってレベルで何が簡易的なのか判断しようとしてる時点でおかしいことに気付け
0517nobodyさん
垢版 |
2018/07/14(土) 17:50:06.34ID:???
まぁこういうアドバイスはガン無視して、結局自分で作ってから気づくんだよね
俺の時もそうだった
とりあえずDBは使わない形がいいよ、セキュリティと言う名の闇が待っている
0518nobodyさん
垢版 |
2018/07/14(土) 17:54:21.71ID:???
技術がなにで出来てるのか勘違いしてるパターン
0519nobodyさん
垢版 |
2018/07/14(土) 17:55:49.32ID:???
cgi拾ってきてcssとjs設定すれば終わりなのに、何でそんなに難しくしたがるんだろう
0520nobodyさん
垢版 |
2018/07/14(土) 18:23:17.42ID:???
テキストかデータベースかは、見た目や運用上の設計には関係ないから、とりあえずテキストでいいと思うよ。
書き込みや読み込みの処理の部分をあちこちでやらずに1箇所で行うように設計すれば、あとでデータベース式に変更するのも修正箇所が少なくて済む。

テキストファイルは拡張子をphpとかplとかにして、直接アクセスされたら実行エラーになるようにしておけばよいかと。
0521nobodyさん
垢版 |
2018/07/14(土) 18:24:08.65ID:???
BBS {
 int createThread(string $title);
 bool deleteThread(int $threadId);
 Gererator readThread($threadId);
 bool writeThread($threadId);
 bool saveHTML(string $template);
}
0522nobodyさん
垢版 |
2018/07/14(土) 18:37:57.75ID:8nY3xhKd
>>515
っぽいねー。
実はtxt自動生成して書き込み保存する簡単な掲示板を設置して見たことがあるんだが、放置してたら謎の大量文字化け(スクリプト?)の投稿で荒らされまくってダメだった…
0523nobodyさん
垢版 |
2018/07/14(土) 18:39:40.35ID:8nY3xhKd
>>516
ありがとう。
txtかDBってとこがポイントではないんだね。
txtファイルでも書き込み内容の分類やら保管やらをしっかり設計できれば運営していけるってことか…。
なんとなく通常のサービスはDBを利用してるからDBが正義だと思ってたわ。
0524nobodyさん
垢版 |
2018/07/14(土) 18:44:13.44ID:???
まぁ最初から完璧なものなんて作れるわけないしまずはウダウダ言ってないで動くものを作れと
0525nobodyさん
垢版 |
2018/07/14(土) 19:21:07.65ID:???
>>522
海外アクセス弾くだけでほぼ無くなる。「htaccess 海外 拒否」などで検索

もしくはNGワードの処理をかます。
これは書き込み後にテキトーに判定してdie()するだけでいい。めんどくさい事は後で考えて、生産的な事をまずやろう
0526nobodyさん
垢版 |
2018/07/14(土) 20:48:13.31ID:???
>>525
私は書き込み文字の中に全角文字がひとつも無かったら、「全角文字を含めてね」ってメッセージを出して弾くようにしたら、海外のスパム書き込みは100%排除できました。
0527nobodyさん
垢版 |
2018/07/14(土) 21:12:36.64ID:???
>526
頭いいな、いろんな意味で完璧な対策と思う
素直にすごい
0528nobodyさん
垢版 |
2018/07/14(土) 21:25:53.98ID:???
中国弾けなさそう
0529nobodyさん
垢版 |
2018/07/14(土) 21:46:15.25ID:???
>>528
確かに中国語だと弾けないですね笑
でも今まで中国語の書き込みは無いです。

てか、もし私が中国のスパム業者なら、日本や欧米の掲示板に中国語で書き込んだりせず、書くならやっぱり英語だと思います。
0530nobodyさん
垢版 |
2018/07/14(土) 23:27:28.81ID:???
ジェレレーターw
0531nobodyさん
垢版 |
2018/07/15(日) 14:57:05.88ID:OQU8pbJ/
考える人より手を動かした人の方が早く覚えるよ
まずは本買うなりサイト見るなりして作ってみればいい
0532nobodyさん
垢版 |
2018/07/15(日) 18:25:13.91ID:???
外部設計と内部設計の違いもわからないような奴が
いくら本を読んでも手を動かしても100%無理
既存のサービスやプログラムをとっかかりにして
仕様も機能もひとつひとつなぜ存在するのかなぜこうなってるのか学ぶしかない
0533nobodyさん
垢版 |
2018/07/15(日) 18:40:30.19ID:???
公開されてるの?
0534nobodyさん
垢版 |
2018/07/16(月) 01:05:08.50ID:???
公開されてるのもある
公開されてないものも設計を考える力を養うにはもってこいの材料
0535nobodyさん
垢版 |
2018/07/16(月) 21:26:48.20ID:???
!omikujiみたいな公開しないとわからん機能じゃなくて
使ってて目に見える部分であれば
たいていどういう風に作るかイメージが沸く
このスレの人はtwitterだろうがfacebookだろうが作ろうと思えば作れるんじゃないか?
気力がない 作っても流行らない うっかり流行ったら500との闘い 解消するためにサーバ月何十万
PHPerの限界とは経済力と時間の限界なのである
0536nobodyさん
垢版 |
2018/07/16(月) 21:30:35.61ID:Jh/2B4in
AWSもLinuxもそこそこ扱えるし作ろうと思えば作れるけど、
レッドオーシャンに飛び込むような元気はない
0538nobodyさん
垢版 |
2018/07/16(月) 22:36:10.37ID:???
機能それぞれ単体なら比較的容易
全部まとめて、さらにセキュリティ、速度、……となると設計だけでも
かなり複雑になってくるから時間がかかるようになる

ただ、10年前の自分じゃ機能単体もおぼつかなかったと思う
0539nobodyさん
垢版 |
2018/07/17(火) 20:43:36.89ID:???
>>536
今の知識もったまま20年前にタイムスリップしたいよな
0541nobodyさん
垢版 |
2018/07/20(金) 17:25:59.13ID:???
JSのように
$a = 10;
$b = $a || 20;
echo $b; //20
にならんかなあ
これ糞便利なんだけど
論理演算子はorだけでもいいよねえ
0542nobodyさん
垢版 |
2018/07/20(金) 17:26:34.38ID:???
$a = 10;
$b = $a || 20;
echo $b; //20
ごめんこれ10だわw
$a = 0って書いたつもり
0543nobodyさん
垢版 |
2018/07/20(金) 17:50:29.12ID:???
null合体演算子(??)を使え
短絡評価した結果何を返すのかなんて後から変えられるわけねぇだろ
0544nobodyさん
垢版 |
2018/07/20(金) 19:43:58.83ID:???
型ってもんがあるからtrue/falseで返してくれないと怖い
0546nobodyさん
垢版 |
2018/07/20(金) 23:26:40.30ID:???
>>545
いっそそこまで覚悟出来るならやればいいとは思う
混乱はあったけど結果としてPythonの決断は正しかったのだろう

とは言え短絡評価を結果をbooleanにするのも最終評価値にするのも良し悪しだからなぁ
0547nobodyさん
垢版 |
2018/07/20(金) 23:57:25.93ID:???
何が入るかわからないのがな
最悪を想定するなら短絡評価の前に中身の判別を入れなきゃならない
想定した型かどうか事前に判別するなら短絡評価要らない
0548nobodyさん
垢版 |
2018/07/21(土) 17:38:08.88ID:gWhxLgcg
$b = (!empty($a)) ? $a : 20;
NULL合体演算子はissetだからだめだな
0549nobodyさん
垢版 |
2018/07/21(土) 19:13:06.04ID:???
JavaScriptも三項演算子使えるんだからそれでよくね
短絡評価は言語ごとに差があるからあんまり使いたくない
0550nobodyさん
垢版 |
2018/07/21(土) 19:16:09.41ID:???
愚直でもわかりやすい判断分岐で書かれてると読む人間にはありがたい
0551nobodyさん
垢版 |
2018/07/21(土) 19:18:20.55ID:???
なんでも短絡や三項にすれば短いだろってより
素朴にIF文使って書いてある方が
読みやすい場合が多々あるな
0552nobodyさん
垢版 |
2018/07/21(土) 19:25:35.94ID:???
ネストしてないに限れば三項演算子は読みやすいな
条件部分を>>548のようにちゃんと()で囲ってればif文の変化形にも見えるし
コーディング規約で禁止してるとこは結構あるし賛否両論なのは確かだが
0553nobodyさん
垢版 |
2018/07/21(土) 19:33:59.72ID:???
phpで三項演算子のネスト書く奴は頭からカレーかけられても文句言えない
ネスト階層が深けりゃコーンスープ付き
0554nobodyさん
垢版 |
2018/07/22(日) 05:26:38.13ID:???
ifだとクロージャー使って即時実行したくならない?
if (!!$a) {
 $b = $a;
} else {
 $b = 20;
}

$b = (function() use ($a) {
 if (!!$a) {
  return $a;
 } else {
  return 20;
 }
})();

上だとなんか感覚的にいやだ
0555nobodyさん
垢版 |
2018/07/22(日) 05:45:59.43ID:???
何に代入しているのかを特に明示したいならそれでいんじゃね

単純な代入ならインデントで即わかるとは思うが

読みやすさわかりやすさを理由に(if等で)わかりやすい分岐を・・・って話の流れで
if使いながら$aそのまま(のbool変換値)ifに流すだけなところと
ifに渡すだけの箇所で!!$aってやってるところが意味不明だが
0556nobodyさん
垢版 |
2018/07/22(日) 06:26:18.55ID:???
> !!$a

これ、 $a == true と等価だよな?

数文字タイプする手間を惜しんで2回反転させる計算コストを発生させてる?
0557554
垢版 |
2018/07/22(日) 06:58:19.63ID:???
booleanキャストのつもりで使ったが
確かにいらんな
0558nobodyさん
垢版 |
2018/07/22(日) 07:54:39.39ID:???
素直メンはイケメン
0559nobodyさん
垢版 |
2018/07/22(日) 08:21:29.99ID:???
!!って書けることを知らなかったw
!!!もできる?
0560nobodyさん
垢版 |
2018/07/22(日) 08:32:08.34ID:???
やってどうすんのよ
0561nobodyさん
垢版 |
2018/07/22(日) 09:22:46.00ID:???
エントロピーを増大させるのだ
0562nobodyさん
垢版 |
2018/07/22(日) 10:22:27.72ID:???
>>560
その発想がなかったから、そんな事できるんだって目から鱗なだけ。
0563nobodyさん
垢版 |
2018/07/22(日) 10:39:15.79ID:???
!!!$varは!$varと等価だろ
0564nobodyさん
垢版 |
2018/07/22(日) 11:57:10.28ID:???
いやだからさ、そんな事もできるんだ!
すごい面白い!
じゃあ何個まで重ねられるんだろう?って話だよ。
どこかでエラーにされて怒られるとは思うけどさ。
0565nobodyさん
垢版 |
2018/07/22(日) 13:15:13.80ID:???
eval()あんだから自分で試してみりゃいいじゃん
0566nobodyさん
垢版 |
2018/07/22(日) 13:35:16.79ID:???
>>554
下はJavaScriptが好きそうだな
「名前空間が汚れる」とか言って
でも上のシンプルな方が読みやすい

>>556
>$a == true
これもこの素朴な方が分かりやすい
「!!$a」とか多用すると読みにくい

トリッキーな書き方より
それを抑えて読みやすくする方が大事
0568nobodyさん
垢版 |
2018/07/22(日) 17:01:30.11ID:???
>>550
>>551
同意
書く方は短い方が書きやすいんどろうけど
0569nobodyさん
垢版 |
2018/07/22(日) 19:17:55.24ID:???
短く書くことが目的化してるコードはバグ出やすい上にデバッグし難いんだよなあ
0570nobodyさん
垢版 |
2018/07/22(日) 19:19:38.87ID:???
でもさすがにisset($_POST/$_GET)は三項演算子使うでしょ?
0572nobodyさん
垢版 |
2018/07/22(日) 19:35:16.04ID:???
まとめて初期化、まとめて確認って手もあるしなあ
スタンダードというわけじゃなし
0573nobodyさん
垢版 |
2018/07/22(日) 19:40:11.51ID:???
filter_inputってバリデーションでしょ?
issetしたあとに使うものだよね?
0574nobodyさん
垢版 |
2018/07/22(日) 19:56:43.65ID:???
転載アフィか何かなの?
0575nobodyさん
垢版 |
2018/07/22(日) 20:01:42.81ID:???
その辺の処理は各々好きにしろとしか
・NOTICEが出ない
・その後の処理でバグを生まないようにする(デフォルト値設定、検証除去etc)
これが出来てれば良いわけで
0576nobodyさん
垢版 |
2018/07/22(日) 20:10:17.68ID:???
>>573
マニュアル読んでみ。幸せになれる。スーパーグローバルから開放されるぞw
0577nobodyさん
垢版 |
2018/07/22(日) 20:36:58.12ID:???
>>554
elseまでいかんでも
$b = $a;
if (!$b) $b = 20;
0578nobodyさん
垢版 |
2018/07/22(日) 20:41:29.86ID:???
>>575
後々、それが出来てるかどうか、バグを生んだのがそこかどうか確認するのに
文字数少ない代わりにわかりにくい書き方とか最悪だろって話
0579nobodyさん
垢版 |
2018/07/22(日) 20:47:50.31ID:???
$aの型が例えばintなどと保証されてるのか?

保証されてるなら!$aなんてint(0)の判別にしかならないのに直感的じゃない

保証されてないなら'abc'やarray(0)が来た時どうすんの
0580nobodyさん
垢版 |
2018/07/22(日) 20:52:50.72ID:???
三項演算子の何がわかりにくいのか理解に苦しむな
ワンライナーで書けるってだけでif-elseと変わらんのに
(condition)
?
 when-true
:
 when-false
;
0581nobodyさん
垢版 |
2018/07/22(日) 21:18:33.98ID:???
プログラム書く上で1行で書けるかどうかってなんか価値があるの?
コードゴルファーphp?
0582nobodyさん
垢版 |
2018/07/22(日) 21:22:28.39ID:???
if( ~~~~ ) ~~~~; else ~~~~;
三項演算子の特権じゃないじゃん
0583nobodyさん
垢版 |
2018/07/22(日) 21:25:51.63ID:???
>>581
1行だ短いだなんだじゃなくて、何がわかりにくいのか理解不能
0584nobodyさん
垢版 |
2018/07/22(日) 21:34:23.08ID:???
ワンライナーって見ただけで私アホですと脳内変換されるわ
0586nobodyさん
垢版 |
2018/07/22(日) 21:39:59.36ID:???
>>585
ワンライナー
-rオプション使いまくってる人?えっ違うのですか?

ぺちぱー
吠えてるだけ
0587nobodyさん
垢版 |
2018/07/22(日) 21:42:00.36ID:???
関数型言語で発狂してこいよ
0588nobodyさん
垢版 |
2018/07/22(日) 21:42:30.07ID:???
価値はある
行数ベースで費用計算してるとき安くなる
0589nobodyさん
垢版 |
2018/07/22(日) 21:43:56.87ID:???
三項演算子は短く書くためのものじゃないが。
その程度の理解なのなら自分で言ってるように使わないのが無難だな。
無駄にマウント取ってるのは笑えるがw
ifelseは組み込み制御構文で三項演算子のように式が要求されるところには置けない(評価されて値になれない)
0590nobodyさん
垢版 |
2018/07/22(日) 22:05:07.77ID:???
同じことが実現できる場合の書き方の比較であって
誰もそんな当たり前の話しとらんのだが
0592nobodyさん
垢版 |
2018/07/22(日) 22:09:52.68ID:???
ドヤ顔マウンターぺちぱー(笑)
0593nobodyさん
垢版 |
2018/07/22(日) 22:25:04.60ID:???
で、1行でかけることになにか価値あるの?
0594nobodyさん
垢版 |
2018/07/22(日) 22:29:44.80ID:???
ないよ。正確にいうと関係ない。
一行で書くためにあるものじゃないからね。三項演算子は。
0595nobodyさん
垢版 |
2018/07/22(日) 22:34:07.28ID:???
なんで話の流れと関係ないのに、三項演算子だけの特権でもないのに、ワンライナーで書けるってことをわざわざ書いたの?
0596580
垢版 |
2018/07/22(日) 22:39:48.38ID:???
ん?俺がワンライナーとか言ったのがまずかったのか?
普通三項演算子はワンライナーで書くもんだからそう言っただけなのだが
別にそこはメインじゃないし主題ではない

?:という2つの演算子しか使っておらず、間違い探しをするようなものでもなく
何がわかりづらいのか理解できないって話をしただけ

ちなみに会話してんの俺じゃないぞ・・・
0597nobodyさん
垢版 |
2018/07/22(日) 22:40:24.80ID:???
少ない行がいいなら最期に¥rと¥nを置き換えて1行にすればいいやんm
0598nobodyさん
垢版 |
2018/07/22(日) 22:44:10.15ID:???
>普通三項演算子はワンライナーで書くもんだから

俺ルール広めようとしないでくれない?
■ このスレッドは過去ログ倉庫に格納されています

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