【PHP】下らねぇ質問はここに 9

レス数が900を超えています。1000を超えると表示できなくなるよ。
2017/12/20(水) 18:00:20.28ID:1xaO/YRR0
PHPに関する質問スレです

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

次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/10/14(日) 16:07:22.22ID:nHJacGHV0
>>800
ありがとうございます
やってみます
2018/10/15(月) 13:04:12.63ID:tYDBCfF70
>>792
昔遊んだセガのスマホゲーム
Wiresharkでキャプチャして中身見たら
Jsonをちょこっとエンコード(暗号化ですらない)しただけのデータでやり取りしてたから
デコードしてクラックして遊んでたよ

まあクラックしたところでクライアント側に反映されるだけで
サーバには反映されなかったから
さすがにサーバ側でチェックはしてるんだろうけど

俺も>>791に一票
phpレベルでやる事なんてさ
グダグダ言ってる暇あったらさっさと動くもん作れって話だw
2018/10/15(月) 13:10:02.66ID:tYDBCfF70
>>801
いやいやw
シェルスクリプト使えww
>>800も書いてるがphpでやる意味が全くない
2018/10/15(月) 13:12:14.00ID:tYDBCfF70
>>802間違えた
使ったのはWiresharkじゃなくてBurp Suiteだったw
2018/10/15(月) 13:21:42.85ID:4PSVnYhZ0
制御やら関数やら使うならPHPでもいいんじゃない
シェルスクリプトってやったことない人には地味に面倒だと思うし
2018/10/15(月) 14:59:49.79ID:mndugOSMa
PHP入ってる前提の環境ならPHPでシェルスクリプトっぽいことやったっていいと思うけどね楽だし
Python書けるならその方がいいとは思うけど
2018/10/15(月) 17:19:44.72ID:EiXwBhFU0
>>802
暗号化していないんだったら>792の要件を全然満たしてないじゃん
単に自分が
「暗号化されてないゲームのパケットキャプチャしたぞ(ドヤ」
の話だよね
2018/10/15(月) 17:32:28.40ID:Obfj9PeS0
暗号解読法知りたいなら、このスレではないぞ
2018/10/16(火) 13:07:24.26ID:FKF9rkIY0
>>807
は?
大手のセガですらそんな感じなんだから
791が言ってるように、つべこべ言ってる暇あったらプロト作れよ
って話をしたかっただけなんだがw

メモリ保護みたいなチート対策と混同してる奴いるし
何なのこのスレww さすがPHPerwww
2018/10/16(火) 13:13:55.52ID:dIjk/xku0
一般的な質問しかしていないのにプロトタイプも糞もないぞ
勘違いしているのはお前だろう
2018/10/16(火) 13:31:22.77ID:1YlWxxt/0
ざっとしか見てないから結局元の質問が何なのかよく分からないけど
せめて通信の秘匿化・通信内容の暗号化・その他ぐらいは分けて考えないと
そこをごちゃごちゃに書く人がいるからわけが分からなくなる
#たぶん何となくしってる事を適当に並べただけなんだろう

とりあえずapiみたいにhttp(s)使ってピンポン形式でやり取りするだけならプロトぐらいはすぐ作れるでしょ
2018/10/16(火) 13:40:34.39ID:dIjk/xku0
質問者の聞きたいことは
出来るか出来ないかなので
出来ないと言う結論が出て
質疑は終了していると思うけど
2018/10/16(火) 19:12:19.10ID:XYy62ZSp0
非正規蔵を作られて鯖にアクセスされたくないってのが元々の質問内容

それに対して、暗号化して定期的に別パターンに変更するのが当たり前(ドヤ
とか宣い始めたのが>790>809(もうちょっと前から)なんだよね。

当たり前っつーならそれ挙げてみ?って書いたら、全然そうなってない例しか
挙げられなかった始末。

挙げ句の果てには809の言いぐさで論点すり替えて未だにマウンティング
しようと必死なわけ。


普通に考えたら、暗号化までは普通だろうが、暗号化パターンを定期的に変更
しようなら短スパンでの蔵の更新か暗号パターンファイルの更新をして配布
しなきゃならん。当然鯖の方も対応せにゃならん。
(日付時間を種にしてやる方法もなきにしもあらずだが穴がある)

809の脳味噌はそこまで一切考えずにゲーム脳の脊椎反射でマウントドヤドヤ
してるだけだろ。
2018/10/16(火) 19:28:52.29ID:gETK/lfa0
https://mevius.5ch.net/gamedev/

こっちの板でやれよ
馬鹿にされないようにな
ここから来ましたって絶対に言うなよ
2018/10/16(火) 19:41:14.46ID:+HAYOFLG0
>>814
俺は横からツッコんだだけで、むしろお前がガッツリ絡んでた話題だろ
なに他人の振りしてんだよ禿
2018/10/16(火) 19:46:16.42ID:YwbSFpxf0
自動でログインしてセッション確立して投稿するようなスクリプトがあるけど
HTTPに限らず通信手順をちゃんと模倣できていればそれが可能
防ぎたいのなら通信部分を解析されない対策をとればいいのだけど
まあ専門外になるしPHPerには難しいと思うよ
2018/10/16(火) 21:29:00.95ID:9ty9KlTGM
いいからさっさとプロト作れよ
2018/10/16(火) 22:59:18.93ID:k//Fq9Pi0
俺、セガよりも大手でゲーム作ってたけど、
>>802の言ってることは何も間違ってないと思うぞ
話の流れよく分からんからこれ以上のことは何も言えんが
2018/10/17(水) 01:43:49.88ID:3pfHQO2y0
話の前の方から引用すると
>最初から毎週暗号化しろっていってんじゃん。

これやってないよねって話でしょ
802自身が実際にはキャプチャしたら暗号化すらしてないって言ってる

毎週暗号パターン変更してるのかしてないのかの事実関係は
どうでもいいんだけど、上から目線で言う事毎回矛盾してるのはどうなのって話なのでは
2018/10/17(水) 03:56:11.78ID:leuazgxV0
別口からのアクセスおさえたいなら暗号化しろと
>>746あたりのレスに>>760が答えたのと
>>792に対するレスとして>>802が答えたのは関連があるのか?
2018/10/17(水) 14:21:09.22ID:D/px6urb0
関連ないのを持ち出されても関連ないとしか言いようがないな
>>787から「ゲーム会社では〜」を持ち出し、>>787-790で「毎週変えられたら」
という話が出たから>>792を書いたに過ぎない

結果的にゲーム会社でそこまでやってる例を挙げてるつもりで、暗号化されてない
例を挙げてドヤ顔してるやつが居るよなって話になってるだけ
822デフォルトの名無しさん (ワッチョイ e79e-JlWZ)
垢版 |
2018/10/17(水) 17:09:22.67ID:xHybN1E+0
配列で得られたデータをオブジェクトに変換してリターン
している例を見たのですが、何かメリットがあるのでしょうか?
return (object)$arr;
2018/10/17(水) 17:54:36.83ID:ovwDg+Xe0
何かよく分からんが
勝手にマウント(笑)がどうとかと勘違いして
勝手にドヤ顔(笑)がどうとか喚き散らしてるだけって事はよく分かったw

つかプライドが高いのかなんなのかしらんが
現実世界で話したら実に面倒臭そうなやつばっかだなw


セガでもそんな感じなんだし難しい事考える前に適当に作って動かしてみれば

俺が言いたいのはこれだけ
何をそんなに噛み付く必要があるんだw キモすぎww
2018/10/17(水) 17:57:45.30ID:ovwDg+Xe0
>>822
返り値を受け取る側でオブジェクトの方が都合が良いからだろ

まあPHPerは配列大好きだからな

例えばPDOのPDOStatementなんかはTraversableだから
そのまんまforeachでぶん回せるのに
それをわざわざfetch()とかで配列にしてみたりとかさw
2018/10/17(水) 18:05:15.78ID:3pfHQO2y0
>>823
偉そうに自己矛盾を認めないで草を生やして相手を卑下している時点で、どっちが面倒なのかな。
826デフォルトの名無しさん (ワッチョイ e79e-JlWZ)
垢版 |
2018/10/17(水) 18:07:27.22ID:xHybN1E+0
>>824
なるほど。
ありがとうございました。
2018/10/17(水) 20:44:36.79ID:swlX/dQc0
とりあえずプロトタイプをというのは至極まっとうな意見だと思うので
何をそんなに顔真っ赤にする必要があるのやら全くもって理解不能
2018/10/17(水) 20:51:29.44ID:sCj44sRT0
マウント
ドヤ顔
上から目線
このあたりの単語を好んで使う人は自己愛性人格障害だから相手にしないのが吉
2018/10/17(水) 20:56:47.75ID:D/px6urb0
>>792に答えてって質問に対して的外れなことばかり言ってんじゃねえよ
的外ればっかだし、もうマウント取るしか能が無いよね?って話で図星突かれて
さらに的外れ続けんの?無能すぎね?
2018/10/17(水) 21:10:08.06ID:3pfHQO2y0
う〜ん。
自分も非正規蔵の件について話に入ってたけど、認識違いとかのズレで
まあどうでもいいやと思って黙ってたけど、結論はいいとして方法論で
これが当然のようにいいながら矛盾しつつ相手を卑下するやり方には
同意しかねるね。
議論の内容より相手を叩く事に重点を置いてるだけにしか見えない。

まあこんなところで議論とか求めても仕方ないけど、筋が通ってない分
ヤクザにも及ばないタチの悪さとは思う。
2018/10/17(水) 21:11:16.32ID:sCj44sRT0
792は自分が馬鹿にされてると勘違いしてるのか
大手でもそんなことやってないと818も言ってるんだなら答え出てるだろ
やっぱり病気だわお前
2018/10/17(水) 21:27:10.80ID:swlX/dQc0
ローカルプロキシ使ってキャプチャするぐらいなら簡単にできるんだから実際にどんなデータになってるか見てみればいいのにね
他の人が言ってるとおり意外と簡素なものも少なくないと思うよ
2018/10/17(水) 21:38:17.22ID:xvHZsaXfd
毎週暗号化手段を変えろ

>>792 そんなことやってるアプリあるの?

>>802 セガでもやってなかったぞ
>>818 セガより大手でもやってないぞ

>>792 激おこ

うん。意味が分からない
2018/10/17(水) 21:49:17.31ID:3pfHQO2y0
>>833
当人じゃないが、端から見てて

>>792 そんなことやってるアプリあるの?

>>802 セガでもやってなかったぞ


そうじゃなくて
>>802 セガでこんなのやってたぞ(やってない)

としか読んでなかったですわ。
2018/10/17(水) 23:02:30.73ID:leuazgxV0
読み返してみてだいたいどうしてこうなったか理解した

毎週変える対策すればクライアントなんて出来ないはず→
「はず」ってのは考えが甘い→
言い方がわるかった「はず」ではなくて不可能→
毎週変えなかったら解析されてしまうだろ→
最初から毎週変えろいってる

この最後のはそういう前提で話をしてるってことであって
別にそれが当たり前だとは言ってないと思うんだわ
2018/10/17(水) 23:26:36.20ID:wTgde3Ka0
話の流れがイマイチ読めないが暗号化のキーは共通鍵って話なの?
それとも暗号化のアルゴリズムを変えるとかトンでも理論の話なの?

どっちでもおかしな話だけれど
そんなことしてるアプリあったら教えてほしいw
2018/10/17(水) 23:46:17.27ID:leuazgxV0
ttps://www.otwo.jp/blog/cheat_measures/
多分こんな感じの話
2018/10/18(木) 10:11:12.44ID:1rhihpgt0
>>829
>>792の毎週暗号化法を変えてるアプリはあるの?
に対する答えは
1.そういう事をやってるものもある「かも」
2.やってないものもある
のどちらかなわけで
1の具体例はまだないが
>>802は2の具体例なんだから別に的外れじゃないでしょ

誰も”全部そうしてる””絶対にそんな事はない”という0か1かの話しじゃないのにさ
マウントだの何だの言ってるあなたの方がよほど的外れだ
2018/10/18(木) 11:09:28.82ID:cOwpgSZ30
外から解析できるような鍵なら毎週変えたところで無意味だし、
リバースして解析されるならそれこそ毎週変えても無意味だと思うの。
だからそんなことは置いといて、さっさとプロト作れってこった。
それが出来たらパラメタのチェック方法を掘り下げていく方が効果的。
2018/10/18(木) 11:13:40.24ID:or/egUOV0
>>836
>どっちでもおかしな話
だよなw

暗号化やハッシュ値生成のためのアルゴリズムは高度な数学の話になるから
そのアルゴリズム自体を毎週新しく生み出せってのはトンデモ話だが

既存のアルゴリズムの組み合わせ順を変えるとか
暗号化⇔複合に使うキーやベクトル値を変えるとかって話なら
週ごとどころか通信毎にランダム化できるんだから別に非現実的な話じゃないよな
※つか、なぜ”週”単位なのかの方がよく分からんw

>>838
もうそいつの事はほっとけよw

>>839
特に下2行には激しく同意
2018/10/18(木) 12:49:16.43ID:snT/KIMy0
>>838
>>792では「【あって当たり前な流れになってるけど】あるなら具体例を教えてくれ」であって「あるかないか教えてくれ」ではないんだよ
単純明快な日本語でなにもおかしくないだろ

求めてるのは完全に1.(あればだが)なんだが、なんで2.でOKみたいな流れになってんのよ
2018/10/18(木) 13:30:57.93ID:KrxjH9oQd
いつまでクソみたいな揚げ足取りをやってるんだか
特にお前の話は糞の役にも立ってないんだから黙ってクソして寝てろ
マウントとかドヤ顔って単語を好んで使う奴ってほんとゴミクズだわ
2018/10/18(木) 13:36:14.98ID:1rhihpgt0
>>841
じゃああなたの質問には誰も何も答えないのが正解ってことね
それで満足?

はいはい
こんな人を真面目に相手にした俺が馬鹿でしたよ
2018/10/18(木) 13:52:25.45ID:or/egUOV0
まあでもlocalに串立ててGUIでデータの中身見るなんてのは
専門知識も要らない低レベルな話なんで
そんな話をドヤ顔だのマウントだのと言われて俺困惑ww

何がこいつの逆鱗に触れたんだろうw
おちょくる分には面白いが
2018/10/18(木) 14:09:16.92ID:xfUBwp3TM
おまえらほんとおもしろいな
2018/10/18(木) 17:01:50.49ID:snT/KIMy0
あるなら教えてくれ(あればな)→これでドヤ!(ないけど)→ねえんだろ何ドヤ顔してんの

この流れで悔しがってるのが802以外に居るのが不思議だね
本人か親兄弟か何か?
2018/10/18(木) 19:15:49.02ID:1B/W+3ebM
PHP 7でASPタグが廃止された理由ってなに?
セキュリティ?パフォーマンス?
2018/10/18(木) 20:27:57.21ID:aXklSebk0
(当たり前というのは思い込みだが)当たり前の流れにしたくなさそうな>>792
加勢した>>802になぜか噛み付いてるんだもん
wiresharkでパケットキャプチャしたってのが何か高度なスキルに思えて
そんな自己満披露せんでいいよとかキレちゃったのかはわからないけど
傍からみててなぜキレてるのかさっぱりわからないw
2018/10/18(木) 21:10:48.74ID:RrGSa6XE0
自分も誤読した立場なんでどっちでも取れるレスだったなあと思えたけど、
こうやって一々煽りに来るのが一番悪いと思いますね
いつまで続けるんです?
2018/10/18(木) 21:13:25.23ID:iDy8I7c80
>>847
英語だけどこれかな
https://wiki.php.net/rfc/remove_alternative_php_tags
2018/10/18(木) 21:21:54.89ID:DXkQKcQs0
>>848
wiresharkじゃなくてburpsuite
burpsuiteの方がそういう用途に特化してて簡単
それでも>>792にとってはドヤ顔に見えてしまった
つまり792はその程度の知識の持ち主だってこと

もう相手にするのはよそう
2018/10/18(木) 21:25:29.56ID:uh9efSuM0
>>850
こういうproposalに対してさえnoを投じるrasmusほんま老害
2018/10/18(木) 21:47:24.32ID:snT/KIMy0
>>851
採用例を求めてるのに、採用してなかった一例のみ挙げて加勢とか判断材料にもならん
馬鹿としか思えんし、その加勢方法がキャプチャなんて所がむしろ失笑しかしてないけど?
高度でもないのに自分でそんな詳細一々紹介しに来る神経がもう、背伸び精一杯だろ

やっぱりドヤ顔してたんで?
ドヤ顔指摘がツボすぎるから悔しくて粘着して煽りに来てるんだろ?
2018/10/18(木) 21:49:30.72ID:3Uf/lafq0
>>850
ありがとです!
使用頻度が低いことや、言語の発展上の弊害になると考えられたようだね
2018/10/18(木) 22:15:50.71ID:Vx517U3q0
ドヤ顔君まだ暴れてて草
2018/10/20(土) 03:05:30.62ID:mGvzmAJw0
strlen()にintegerを渡してもちゃんと桁数が返ってくるのはなぜですか?
stringじゃなくても動作するってことは、どこかで型変換されてるんですか?
2018/10/20(土) 15:36:54.08ID:gEDPu4pz0
http://php.net/manual/ja/functions.arguments.php
> 強い型付け ¶
> デフォルトでは、間違った型を渡された場合でも、可能な限りは来されている型に変換します。
> たとえば、string を想定している関数のパラメータに integer が渡された場合は、その値を string 型として受け取ります。

declare(strict_types=1);
気になるなら、これいれるとTypeError投げるようになる。
2018/10/21(日) 00:28:16.60ID:aes4F1Ww0
>>857
うえ、そんなんありっすか
噂に違わぬPHPの片鱗ということですね
ありがとうございました
2018/10/21(日) 01:43:34.95ID:0/W2nHVs0
寧ろ動的型付けの言語なら普通の挙動だけど
2018/10/21(日) 03:14:09.66ID:Pz2IqIp+0
> 組み込み関数内からの関数呼び出しは、 strict_types 宣言の影響を受けません。
とも書いてあるな。
strlenはもろに影響受けてるようだけど、よくわからなくなってきたw
2018/10/21(日) 12:16:46.38ID:TfVuD13o0
>>858
逆にこういう挙動じゃない動的型付けの言語教えて
862デフォルトの名無しさん (ワッチョイ 377e-Pr2h)
垢版 |
2018/10/21(日) 15:33:51.77ID:8uJUIhMV0
文字列のUnicodeを10進数または16進数の配列として取得するにはどうすればよいですか?
2018/10/21(日) 15:48:19.30ID:FEyhRhG60
>>862
文字列を $s としたとき、$s[$i] で $i バイト目の文字が得られる。
これを ord するとその ASCII値が得られる。

UNICODE文字単位でそれがやりたいなら、mb_substr を組み合わせてやる感じかな。
2018/10/22(月) 10:46:42.37ID:zqf9WRrQ0
>>862
$str = 'unkoうんこ';
$arr = [];

foreach (preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY) as $char) {
  $arr[$char] = [
    'hex' => bin2hex($char),
    'unicode' => base_convert(bin2hex(mb_convert_encoding($char, 'UTF-32BE', 'UTF-8')), 16, 16),
    'json' => json_encode($char),
  ];
}

print_r($arr);

あとは結果見て都合の良いように改変してどうぞ
2018/10/27(土) 20:45:15.13ID:LtQGrCdd0
よろしくお願いします。

$date=date('Y-m-d H:i:s');
$sql="INSERT INTO tableName (name,comment,created) VALUE (:name,:comment,'{$date}')";

のこコード中で、最後の出てくる ' { $date } ' が、シングルクォートで囲まれているのは何故でしょうか?
$dateが文字列になるからなのでしょうか?
866デフォルトの名無しさん (ワッチョイ e3d2-8L5D)
垢版 |
2018/10/28(日) 02:50:58.85ID:GS4HIDpq0
>>865
前後がないとわからんがPDOかな?
:nameや:commentはパインド変数だから
型を意識する必要ないけど$dateはバインドしてないから
文字扱いにしてるんやろね
んで、文字列でシングル使いたいから全体はダブルで括るという
2018/10/28(日) 06:36:36.32ID:75+SpqZNM
SQLでは文字列リテラルはシングルクオーテーションで囲まないと駄目ってだけだぞ
SQL文として正しくなるように文字列を組み立ててるだけって事を理解しろ
2018/10/28(日) 07:26:54.25ID:7IwsJv31M
さらに言うと
{$date}は 2018/01/01 01:00:00 みたいに展開されるわけだが
シングルクォートが無いとこの部分は数値と除算と…のように解釈されてエラーになるわけだ

MySQLだと日付時刻の指定はYYYYMMDDhhmmssかYYMMDDhhmmssの形式の数値でもいいから
$date=date('YmdHis')かdate('ymdHis')
だったらクォートいらないけどな
2018/10/28(日) 07:45:59.64ID:/wLLb6M30
みなさま、ありがとうございました!
朝からスッキリできました!
皆様偉大な先生です。本当にありがとうございました!!
2018/10/30(火) 23:58:06.08ID:04COuKNl0
下記のように名前空間(ディレクトリ名)とクラス名が重複するのって何かデメリット的な事ありますか?

use Myapp\FooBar\FooBar;
FooBar::new();
871デフォルトの名無しさん (ワッチョイ 859e-o1DS)
垢版 |
2018/10/31(水) 09:43:19.86ID:J8G9WBiJ0
http://php.net/manual/ja/language.variables.scope.php

例1 global の使用
を実行すると3ではなくて2になるのですが、なぜですか?
2018/10/31(水) 10:59:37.08ID:BXLRnHBs0
>>871
どこをどう見ても3にしかならないし
実際実行しても3が出力されるんで
何かどっかがおかしいんだろ

つか変数のglobal宣言なんていまさら使うことなんかないから
理解できんのなら忘れていいよこんなもんw
873デフォルトの名無しさん (ワッチョイ 859e-o1DS)
垢版 |
2018/10/31(水) 17:59:49.38ID:J8G9WBiJ0
>>872
検証ありがとうございました。
その後、必死でテストしたのですが2しか出ません。
>つか変数のglobal宣言なんていまさら使うことなんかないから
なぜですか?
2018/10/31(水) 18:04:01.05ID:dV3e+Ndf0
>>873
宗教上の理由。
global だって使うときは使うから使い方は覚えておいた方がいい。
2018/10/31(水) 19:01:40.49ID:BXLRnHBs0
>>873
必死ってのがよく分からんw
コードをコピペして実行するだけなんだから数秒で終わる話だと思うんだが
ひょっとしてコードを見よう見まねで手打ち(「写経」という)してね?

写経が無駄だとは言わんが
もうちょい色々分かりだしてからやった方がいいぞ


globalについては
グローバル汚染って言葉でググってみ

今PHPをやってるって事はセットでJavaScriptもやる可能性が高いわな?

そこも踏まえて言語を問わず
今自分がどこの空間を使っててそこを「汚染」しないようにはどうすりゃいいか
意識した方がいいぞってことだ

って書くのが面倒くさかったから適当に書いたw 適当すぎだなww

今はよく分からなくてもその内何となく分かってくるから
今わかんないなら気にするなw
2018/10/31(水) 19:21:20.91ID:V+5pvMby0
使い方は覚えておいた方がいいけど
なるべく使わずにすむようにした方がいいだろうね

WordPressはglobal宣言しまくってるけど設計としてはあまりまねしてほしくないのは確か
2018/10/31(水) 19:28:03.24ID:rEIsu6q2d
wpは歴史的に仕方ない
ポリシー的に後方互換を大事にしてるしな
設計はまねするなという意見には同意

そろそろ後方互換を捨てろよって思うけどfirefoxみたいなことになる可能性もあるからなー
2018/10/31(水) 21:49:30.59ID:8LMDJ4U80
wordpressって推奨はPHP7以降になっているけど、
実際はPHP5.2とmysql5.0でも最新版が動くらしい
下手すると10年以上前?
>>876を見て久しぶりにコードのぞいたら本当にglobalだらけで笑った
こういう古い設計のコードを見てPHPがくそ言語だと言われるのはモヤッとする
2018/10/31(水) 22:25:32.37ID:rEIsu6q2d
プラグインやテーマもテンプレートエンジンを使わずに素のPHPを使ってるもんだからXSSやCSRFとかの対策が完全自動化されてないのも問題
2018年にもなって素のPHPで書いたテンプレートなんか読みたくないよ。。。
2018/10/31(水) 22:47:31.62ID:7+pd6iJs0
5.2っていうと配列をarray()って書いてた時代か
名前空間も無名関数もタイプヒンティングもないし
定数定義にdefine使ってグローバルで衝突しないように接頭辞を付けるようにしてたっけ
WordPress頑張りすぎだろ
2018/10/31(水) 23:43:21.16ID:aqQK2dvp0
まぁ現状のコードベース維持するならコードスタイルもコードベースに合わせざるを得ないわな
モダンな書き方にするなら新規で書き起こした方が低コストだろうし
2018/11/01(木) 11:47:34.96ID:YMjHonMD0
>>881
だな
まあWPはしゃーない
プラグインとテーマの豊富さが売りなんだから
そこ切り捨てちゃったらそれこそFireFoxみたいなことになるw

大昔はこんな実装をしてたんだと反面教師にするにはいい材料だ
モダンなものに触れるだけじゃなぜそうすべきなのかが理解できないしな

俺の知り合いにもWPに親殺されたみたいなのがいるから
WPがこの世から消えれば幸せになれるやつも少なくないんだろうが
逆にWPだけで飯食ってるようなやつもいるからなあw
883デフォルトの名無しさん (ワッチョイ fe92-rn+T)
垢版 |
2018/11/01(木) 21:57:02.20ID:nscXvzWP0
サイトマップから各ページのURL読み込むの作ってたら
http://mutimutigazou.com/sitemap.xml
こういうのができたのだがどう処理すればいい?
2018/11/01(木) 22:43:57.33ID:bYTPTsyya
アニメは他所でやれ
2018/11/02(金) 06:31:57.91ID:rR4ZFPRy0
お願いします。下記はテキストからの抜粋です。
新規登録するメールが、DBで重複していないかチェックするコードです。

function email_exists($dbh,$email){
$sql="SELECT COUNT(id) FROM members where email=:email";
$stmt=$dbh->prepare($sql);
$stmt->bindValue(':email',$email,PDO::PARAM_STR);
$stmt->execute();
$count=$stmt->fetch(PDO::FETCH_ASSOC);
if($count['COUNT(id)']>0){
return TRUE;
}else{
return FALSE;
}
}

解説では、入力するメールアドレスが「何件あるか」調べます。取得する値は0か1。
しっかりと行数をカウントし、メールアドレスが登録済みかチェックします。

と記載されています。
コードを見ていると、fetchで連想配列を1行だけ$count変数に格納しているだけに読めてしまい、
「何件存在しているか」、「行数をカウントする」、という部分の記載が、コード上理解できません。
上記のコードで、DB上で該当する行の行数をカウントしている部分はどこにあたるのでしょうか?
2018/11/02(金) 09:48:39.29ID:Io9E5js5M
SQL文自体でカウントしてるから1行読むだけでいいやん
てか、1行しか返ってこないし
2018/11/02(金) 10:05:36.78ID:6yQoCIiM0
>>885
カウントはSQLの集計関数であるCOUNT()でやってる
SELECT COUNT(id)
のところな

こういう時は
"SELECT COUNT(id) AS cnt FROM members";
みたいに別名を付けるくせを付けといた方がいい


ちなみに今回のようにカラム1個のデータだけ欲しい時は
fetch()ではなfetchColumn()を使って

$count = $stmt->fetchColumn();

とすれば
$count には配列ではなく直接 COUNT(id) の値が入るんで楽


さらにこうやって書けば
$count = $stmt->fetch(PDO::FETCH_ASSOC);
以下の冗長な6行がこうやってたった1行で書けるわな

return (bool) $stmt->fetchColumn();
2018/11/02(金) 10:09:06.54ID:6yQoCIiM0
>>885
さらに言えばw

メアドが登録済みかどうかを知りたいだけなら
COUNT()なんか使う必要はなく

$sql="SELECT id FROM members where email=:email LIMIT 1";

でいい

まぁその例はあくまでも教科書的に「何件あるか」を調べる方法を書いてるだろうが
DB処理ってのはボトルネックになりやすいんで
sqlはなるべく簡素にするのが基本な
2018/11/02(金) 10:13:15.59ID:6yQoCIiM0
>>883
XMLなんだからsimplexml系とか(他にも色々あるが)で処理すればいいだろ?

gzされてるデータの扱いが分からんのか?

gzされてるデータはローカルに保存した上でgzopen()で開いて処理してもいいし
データ取得にcurl使って CURLOPT_ENCODING => 'gzip' ってオプション指定して自動展開してもいいし
そのままとってきてgzdecode()通してもいいし

好きなようにすりゃいい
890デフォルトの名無しさん (ワッチョイ fe92-rn+T)
垢版 |
2018/11/02(金) 13:12:23.63ID:H0U+eOT90
>>889
できました。
ありがとうございます。
2018/11/02(金) 16:43:43.64ID:lKWT8t9P0
>>886
>>887
>>888
ありがとうございます。
$count には ['COUNT(id)']=>行数という連想配列が、
$count['COUNT(id)'] には 行数が、
それぞれ格納されているのですね。

return (bool) $stmt->fetchColumn();や
実務的なSQLの考え方を教えてくださってありがとうございます!
2018/11/02(金) 17:13:43.40ID:6yQoCIiM0
>>891
お、おう
そういうレベルだったのかw

変数の中身がどうなってるかわけ分からん時はすぐに
var_dump($count);
ってするんだ

$countが「配列」や「オブジェクト」だと分かってる時は
print_r($count);
ってした方が見やすいから使い分けるといいぞ

とにかく初心者の内はちょっとでもあれ?って思ったらすぐ var_dump() しろ
2018/11/02(金) 20:07:32.22ID:lKWT8t9P0
>>892
はい、ありがとうございます
2018/11/03(土) 08:11:13.12ID:29KucSII0
>>885の変数COUNT(id)なのですが
$sql="SELECT COUNT(id) で、変数宣言された、ということでしょうか?
2018/11/03(土) 08:54:23.76ID:XGyq6I+i0
連想配列の添え字という
2018/11/03(土) 14:45:26.63ID:3f9xsIAr0
>>894
上でも書かれてるけどそういう疑問を持ったら実行してvar_dump

スクリプト言語はそうやって簡単に実行して結果が見れるのがメリットなんだから、
もし今それができないなら環境構築から見直さないとものにならないよ
あと上の人もだけどPHPというよりはSQLが分かってない
勉強の仕方が間違ってる
897デフォルトの名無しさん (ワッチョイ 5b80-Q1ft)
垢版 |
2018/11/03(土) 15:52:27.60ID:rSl2Ac3O0
コレは解説のサンプルコード書いてるヤツが頭ワルイわ
$countを$$colum_valuesとか別の名前にするべき
countと直接一切関係ない

$stmt->fetch()は行の列を全部とってくるのは分かるヤツがみれば
コード書いたアホがなにをやりたいかなんとなく分かる

きっとなウンコphpのウンコライブラリ使うと
辞書の連想配列にカラムの値が格納される仕様になってるのは分かる

コレでわかる

$$column_values=$stmt->fetch(PDO::FETCH_ASSOC);
if($$column_values['COUNT(id)']>0){

↓低学歴知恵遅れが書いた解説コードはペケ
$count=$stmt->fetch(PDO::FETCH_ASSOC);
if($count['COUNT(id)']>0){
898デフォルトの名無しさん (ワッチョイ 5b80-Q1ft)
垢版 |
2018/11/03(土) 15:57:47.32ID:rSl2Ac3O0
$$2個は$1個だからな
気にしなくていい
2018/11/04(日) 11:12:58.45ID:XAVCAs+90
PHP 7.2の初歩的な質問をさせてください。
下記のようにコンストラクタの戻り値を宣言すると __construct() cannot declare a return type エラーになります。

__construct( ): void { }

コンストラクタは何も型宣言をしてはいけないということでしょうか?
2018/11/04(日) 17:56:28.09ID:A3PnxJ3qa
>>899
> コンストラクタは何も型宣言をしてはいけないということでしょうか?
その通り

というかコンストラクタの返却値型宣言していい言語ってある?
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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