【PHP】下らねぇ質問はここに 9
■ このスレッドは過去ログ倉庫に格納されています
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 Laravelを使ってサイト作成しようとしてます。 ブログみたいに左側にサイドメニューがあって メニューの項目をクリックすると中央のページにその項目の情報が表示されるという ページを作りたいのですが、 サイドメニューを表示させる方法がわからないので教えてください。 調べたところ、レイアウトを設定するかもしれないところまではわかりました。 >>796 適当なシェルスクリプorバッチファイルを作成してキックかな https://webkaru.net/php/function-exec-system/ 本当にPHPでやる必要があるのか疑問だが >>792 昔遊んだセガのスマホゲーム Wiresharkでキャプチャして中身見たら Jsonをちょこっとエンコード(暗号化ですらない)しただけのデータでやり取りしてたから デコードしてクラックして遊んでたよ まあクラックしたところでクライアント側に反映されるだけで サーバには反映されなかったから さすがにサーバ側でチェックはしてるんだろうけど 俺も>>791 に一票 phpレベルでやる事なんてさ グダグダ言ってる暇あったらさっさと動くもん作れって話だw >>801 いやいやw シェルスクリプト使えww >>800 も書いてるがphpでやる意味が全くない >>802 間違えた 使ったのはWiresharkじゃなくてBurp Suiteだったw 制御やら関数やら使うならPHPでもいいんじゃない シェルスクリプトってやったことない人には地味に面倒だと思うし PHP入ってる前提の環境ならPHPでシェルスクリプトっぽいことやったっていいと思うけどね楽だし Python書けるならその方がいいとは思うけど >>802 暗号化していないんだったら>792の要件を全然満たしてないじゃん 単に自分が 「暗号化されてないゲームのパケットキャプチャしたぞ(ドヤ」 の話だよね >>807 は? 大手のセガですらそんな感じなんだから 791が言ってるように、つべこべ言ってる暇あったらプロト作れよ って話をしたかっただけなんだがw メモリ保護みたいなチート対策と混同してる奴いるし 何なのこのスレww さすがPHPerwww 一般的な質問しかしていないのにプロトタイプも糞もないぞ 勘違いしているのはお前だろう ざっとしか見てないから結局元の質問が何なのかよく分からないけど せめて通信の秘匿化・通信内容の暗号化・その他ぐらいは分けて考えないと そこをごちゃごちゃに書く人がいるからわけが分からなくなる #たぶん何となくしってる事を適当に並べただけなんだろう とりあえずapiみたいにhttp(s)使ってピンポン形式でやり取りするだけならプロトぐらいはすぐ作れるでしょ 質問者の聞きたいことは 出来るか出来ないかなので 出来ないと言う結論が出て 質疑は終了していると思うけど 非正規蔵を作られて鯖にアクセスされたくないってのが元々の質問内容 それに対して、暗号化して定期的に別パターンに変更するのが当たり前(ドヤ とか宣い始めたのが>790>809(もうちょっと前から)なんだよね。 当たり前っつーならそれ挙げてみ?って書いたら、全然そうなってない例しか 挙げられなかった始末。 挙げ句の果てには809の言いぐさで論点すり替えて未だにマウンティング しようと必死なわけ。 普通に考えたら、暗号化までは普通だろうが、暗号化パターンを定期的に変更 しようなら短スパンでの蔵の更新か暗号パターンファイルの更新をして配布 しなきゃならん。当然鯖の方も対応せにゃならん。 (日付時間を種にしてやる方法もなきにしもあらずだが穴がある) 809の脳味噌はそこまで一切考えずにゲーム脳の脊椎反射でマウントドヤドヤ してるだけだろ。 https://mevius.5ch.net/gamedev/ こっちの板でやれよ 馬鹿にされないようにな ここから来ましたって絶対に言うなよ >>814 俺は横からツッコんだだけで、むしろお前がガッツリ絡んでた話題だろ なに他人の振りしてんだよ禿 自動でログインしてセッション確立して投稿するようなスクリプトがあるけど HTTPに限らず通信手順をちゃんと模倣できていればそれが可能 防ぎたいのなら通信部分を解析されない対策をとればいいのだけど まあ専門外になるしPHPerには難しいと思うよ 俺、セガよりも大手でゲーム作ってたけど、 >>802 の言ってることは何も間違ってないと思うぞ 話の流れよく分からんからこれ以上のことは何も言えんが 話の前の方から引用すると >最初から毎週暗号化しろっていってんじゃん。 これやってないよねって話でしょ 802自身が実際にはキャプチャしたら暗号化すらしてないって言ってる 毎週暗号パターン変更してるのかしてないのかの事実関係は どうでもいいんだけど、上から目線で言う事毎回矛盾してるのはどうなのって話なのでは 別口からのアクセスおさえたいなら暗号化しろと >>746 あたりのレスに>>760 が答えたのと >>792 に対するレスとして>>802 が答えたのは関連があるのか? 関連ないのを持ち出されても関連ないとしか言いようがないな >>787 から「ゲーム会社では〜」を持ち出し、>>787-790 で「毎週変えられたら」 という話が出たから>>792 を書いたに過ぎない 結果的にゲーム会社でそこまでやってる例を挙げてるつもりで、暗号化されてない 例を挙げてドヤ顔してるやつが居るよなって話になってるだけ 配列で得られたデータをオブジェクトに変換してリターン している例を見たのですが、何かメリットがあるのでしょうか? return (object)$arr; 何かよく分からんが 勝手にマウント(笑)がどうとかと勘違いして 勝手にドヤ顔(笑)がどうとか喚き散らしてるだけって事はよく分かったw つかプライドが高いのかなんなのかしらんが 現実世界で話したら実に面倒臭そうなやつばっかだなw セガでもそんな感じなんだし難しい事考える前に適当に作って動かしてみれば 俺が言いたいのはこれだけ 何をそんなに噛み付く必要があるんだw キモすぎww >>822 返り値を受け取る側でオブジェクトの方が都合が良いからだろ まあPHPerは配列大好きだからな 例えばPDOのPDOStatementなんかはTraversableだから そのまんまforeachでぶん回せるのに それをわざわざfetch()とかで配列にしてみたりとかさw >>823 偉そうに自己矛盾を認めないで草を生やして相手を卑下している時点で、どっちが面倒なのかな。 とりあえずプロトタイプをというのは至極まっとうな意見だと思うので 何をそんなに顔真っ赤にする必要があるのやら全くもって理解不能 マウント ドヤ顔 上から目線 このあたりの単語を好んで使う人は自己愛性人格障害だから相手にしないのが吉 >>792 に答えてって質問に対して的外れなことばかり言ってんじゃねえよ 的外ればっかだし、もうマウント取るしか能が無いよね?って話で図星突かれて さらに的外れ続けんの?無能すぎね? う〜ん。 自分も非正規蔵の件について話に入ってたけど、認識違いとかのズレで まあどうでもいいやと思って黙ってたけど、結論はいいとして方法論で これが当然のようにいいながら矛盾しつつ相手を卑下するやり方には 同意しかねるね。 議論の内容より相手を叩く事に重点を置いてるだけにしか見えない。 まあこんなところで議論とか求めても仕方ないけど、筋が通ってない分 ヤクザにも及ばないタチの悪さとは思う。 792は自分が馬鹿にされてると勘違いしてるのか 大手でもそんなことやってないと818も言ってるんだなら答え出てるだろ やっぱり病気だわお前 ローカルプロキシ使ってキャプチャするぐらいなら簡単にできるんだから実際にどんなデータになってるか見てみればいいのにね 他の人が言ってるとおり意外と簡素なものも少なくないと思うよ 毎週暗号化手段を変えろ ↓ >>792 そんなことやってるアプリあるの? ↓ >>802 セガでもやってなかったぞ >>818 セガより大手でもやってないぞ ↓ >>792 激おこ うん。意味が分からない >>833 当人じゃないが、端から見てて >>792 そんなことやってるアプリあるの? ↓ >>802 セガでもやってなかったぞ ↑ そうじゃなくて >>802 セガでこんなのやってたぞ(やってない) としか読んでなかったですわ。 読み返してみてだいたいどうしてこうなったか理解した 毎週変える対策すればクライアントなんて出来ないはず→ 「はず」ってのは考えが甘い→ 言い方がわるかった「はず」ではなくて不可能→ 毎週変えなかったら解析されてしまうだろ→ 最初から毎週変えろいってる この最後のはそういう前提で話をしてるってことであって 別にそれが当たり前だとは言ってないと思うんだわ 話の流れがイマイチ読めないが暗号化のキーは共通鍵って話なの? それとも暗号化のアルゴリズムを変えるとかトンでも理論の話なの? どっちでもおかしな話だけれど そんなことしてるアプリあったら教えてほしいw ttps://www.otwo.jp/blog/cheat_measures/ 多分こんな感じの話 >>829 >>792 の毎週暗号化法を変えてるアプリはあるの? に対する答えは 1.そういう事をやってるものもある「かも」 2.やってないものもある のどちらかなわけで 1の具体例はまだないが >>802 は2の具体例なんだから別に的外れじゃないでしょ 誰も”全部そうしてる””絶対にそんな事はない”という0か1かの話しじゃないのにさ マウントだの何だの言ってるあなたの方がよほど的外れだ 外から解析できるような鍵なら毎週変えたところで無意味だし、 リバースして解析されるならそれこそ毎週変えても無意味だと思うの。 だからそんなことは置いといて、さっさとプロト作れってこった。 それが出来たらパラメタのチェック方法を掘り下げていく方が効果的。 >>836 >どっちでもおかしな話 だよなw 暗号化やハッシュ値生成のためのアルゴリズムは高度な数学の話になるから そのアルゴリズム自体を毎週新しく生み出せってのはトンデモ話だが 既存のアルゴリズムの組み合わせ順を変えるとか 暗号化⇔複合に使うキーやベクトル値を変えるとかって話なら 週ごとどころか通信毎にランダム化できるんだから別に非現実的な話じゃないよな ※つか、なぜ”週”単位なのかの方がよく分からんw >>838 もうそいつの事はほっとけよw >>839 特に下2行には激しく同意 >>838 >>792 では「【あって当たり前な流れになってるけど】あるなら具体例を教えてくれ」であって「あるかないか教えてくれ」ではないんだよ 単純明快な日本語でなにもおかしくないだろ 求めてるのは完全に1.(あればだが)なんだが、なんで2.でOKみたいな流れになってんのよ いつまでクソみたいな揚げ足取りをやってるんだか 特にお前の話は糞の役にも立ってないんだから黙ってクソして寝てろ マウントとかドヤ顔って単語を好んで使う奴ってほんとゴミクズだわ >>841 じゃああなたの質問には誰も何も答えないのが正解ってことね それで満足? はいはい こんな人を真面目に相手にした俺が馬鹿でしたよ まあでもlocalに串立ててGUIでデータの中身見るなんてのは 専門知識も要らない低レベルな話なんで そんな話をドヤ顔だのマウントだのと言われて俺困惑ww 何がこいつの逆鱗に触れたんだろうw おちょくる分には面白いが あるなら教えてくれ(あればな)→これでドヤ!(ないけど)→ねえんだろ何ドヤ顔してんの この流れで悔しがってるのが802以外に居るのが不思議だね 本人か親兄弟か何か? PHP 7でASPタグが廃止された理由ってなに? セキュリティ?パフォーマンス? (当たり前というのは思い込みだが)当たり前の流れにしたくなさそうな>>792 に 加勢した>>802 になぜか噛み付いてるんだもん wiresharkでパケットキャプチャしたってのが何か高度なスキルに思えて そんな自己満披露せんでいいよとかキレちゃったのかはわからないけど 傍からみててなぜキレてるのかさっぱりわからないw 自分も誤読した立場なんでどっちでも取れるレスだったなあと思えたけど、 こうやって一々煽りに来るのが一番悪いと思いますね いつまで続けるんです? >>848 wiresharkじゃなくてburpsuite burpsuiteの方がそういう用途に特化してて簡単 それでも>>792 にとってはドヤ顔に見えてしまった つまり792はその程度の知識の持ち主だってこと もう相手にするのはよそう >>850 こういうproposalに対してさえnoを投じるrasmusほんま老害 >>851 採用例を求めてるのに、採用してなかった一例のみ挙げて加勢とか判断材料にもならん 馬鹿としか思えんし、その加勢方法がキャプチャなんて所がむしろ失笑しかしてないけど? 高度でもないのに自分でそんな詳細一々紹介しに来る神経がもう、背伸び精一杯だろ やっぱりドヤ顔してたんで? ドヤ顔指摘がツボすぎるから悔しくて粘着して煽りに来てるんだろ? >>850 ありがとです! 使用頻度が低いことや、言語の発展上の弊害になると考えられたようだね strlen()にintegerを渡してもちゃんと桁数が返ってくるのはなぜですか? stringじゃなくても動作するってことは、どこかで型変換されてるんですか? http://php.net/manual/ja/functions.arguments.php > 強い型付け ¶ > デフォルトでは、間違った型を渡された場合でも、可能な限りは来されている型に変換します。 > たとえば、string を想定している関数のパラメータに integer が渡された場合は、その値を string 型として受け取ります。 declare(strict_types=1); 気になるなら、これいれるとTypeError投げるようになる。 >>857 うえ、そんなんありっすか 噂に違わぬPHPの片鱗ということですね ありがとうございました > 組み込み関数内からの関数呼び出しは、 strict_types 宣言の影響を受けません。 とも書いてあるな。 strlenはもろに影響受けてるようだけど、よくわからなくなってきたw >>858 逆にこういう挙動じゃない動的型付けの言語教えて 文字列のUnicodeを10進数または16進数の配列として取得するにはどうすればよいですか? >>862 文字列を $s としたとき、$s[$i] で $i バイト目の文字が得られる。 これを ord するとその ASCII値が得られる。 UNICODE文字単位でそれがやりたいなら、mb_substr を組み合わせてやる感じかな。 >>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); あとは結果見て都合の良いように改変してどうぞ よろしくお願いします。 $date=date('Y-m-d H:i:s'); $sql="INSERT INTO tableName (name,comment,created) VALUE (:name,:comment,'{$date}')"; のこコード中で、最後の出てくる ' { $date } ' が、シングルクォートで囲まれているのは何故でしょうか? $dateが文字列になるからなのでしょうか? >>865 前後がないとわからんがPDOかな? :nameや:commentはパインド変数だから 型を意識する必要ないけど$dateはバインドしてないから 文字扱いにしてるんやろね んで、文字列でシングル使いたいから全体はダブルで括るという SQLでは文字列リテラルはシングルクオーテーションで囲まないと駄目ってだけだぞ SQL文として正しくなるように文字列を組み立ててるだけって事を理解しろ さらに言うと {$date}は 2018/01/01 01:00:00 みたいに展開されるわけだが シングルクォートが無いとこの部分は数値と除算と…のように解釈されてエラーになるわけだ MySQLだと日付時刻の指定はYYYYMMDDhhmmssかYYMMDDhhmmssの形式の数値でもいいから $date=date('YmdHis')かdate('ymdHis') だったらクォートいらないけどな みなさま、ありがとうございました! 朝からスッキリできました! 皆様偉大な先生です。本当にありがとうございました!! 下記のように名前空間(ディレクトリ名)とクラス名が重複するのって何かデメリット的な事ありますか? use Myapp\FooBar\FooBar; FooBar::new(); >>871 どこをどう見ても3にしかならないし 実際実行しても3が出力されるんで 何かどっかがおかしいんだろ つか変数のglobal宣言なんていまさら使うことなんかないから 理解できんのなら忘れていいよこんなもんw >>872 検証ありがとうございました。 その後、必死でテストしたのですが2しか出ません。 >つか変数のglobal宣言なんていまさら使うことなんかないから なぜですか? >>873 宗教上の理由。 global だって使うときは使うから使い方は覚えておいた方がいい。 >>873 必死ってのがよく分からんw コードをコピペして実行するだけなんだから数秒で終わる話だと思うんだが ひょっとしてコードを見よう見まねで手打ち(「写経」という)してね? 写経が無駄だとは言わんが もうちょい色々分かりだしてからやった方がいいぞ globalについては グローバル汚染って言葉でググってみ 今PHPをやってるって事はセットでJavaScriptもやる可能性が高いわな? そこも踏まえて言語を問わず 今自分がどこの空間を使っててそこを「汚染」しないようにはどうすりゃいいか 意識した方がいいぞってことだ って書くのが面倒くさかったから適当に書いたw 適当すぎだなww 今はよく分からなくてもその内何となく分かってくるから 今わかんないなら気にするなw 使い方は覚えておいた方がいいけど なるべく使わずにすむようにした方がいいだろうね WordPressはglobal宣言しまくってるけど設計としてはあまりまねしてほしくないのは確か wpは歴史的に仕方ない ポリシー的に後方互換を大事にしてるしな 設計はまねするなという意見には同意 そろそろ後方互換を捨てろよって思うけどfirefoxみたいなことになる可能性もあるからなー wordpressって推奨はPHP7以降になっているけど、 実際はPHP5.2とmysql5.0でも最新版が動くらしい 下手すると10年以上前? >>876 を見て久しぶりにコードのぞいたら本当にglobalだらけで笑った こういう古い設計のコードを見てPHPがくそ言語だと言われるのはモヤッとする プラグインやテーマもテンプレートエンジンを使わずに素のPHPを使ってるもんだからXSSやCSRFとかの対策が完全自動化されてないのも問題 2018年にもなって素のPHPで書いたテンプレートなんか読みたくないよ。。。 5.2っていうと配列をarray()って書いてた時代か 名前空間も無名関数もタイプヒンティングもないし 定数定義にdefine使ってグローバルで衝突しないように接頭辞を付けるようにしてたっけ WordPress頑張りすぎだろ まぁ現状のコードベース維持するならコードスタイルもコードベースに合わせざるを得ないわな モダンな書き方にするなら新規で書き起こした方が低コストだろうし >>881 だな まあWPはしゃーない プラグインとテーマの豊富さが売りなんだから そこ切り捨てちゃったらそれこそFireFoxみたいなことになるw 大昔はこんな実装をしてたんだと反面教師にするにはいい材料だ モダンなものに触れるだけじゃなぜそうすべきなのかが理解できないしな 俺の知り合いにもWPに親殺されたみたいなのがいるから WPがこの世から消えれば幸せになれるやつも少なくないんだろうが 逆にWPだけで飯食ってるようなやつもいるからなあw サイトマップから各ページのURL読み込むの作ってたら http://mutimutigazou.com/sitemap.xml こういうのができたのだがどう処理すればいい? お願いします。下記はテキストからの抜粋です。 新規登録するメールが、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上で該当する行の行数をカウントしている部分はどこにあたるのでしょうか? SQL文自体でカウントしてるから1行読むだけでいいやん てか、1行しか返ってこないし >>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(); >>885 さらに言えばw メアドが登録済みかどうかを知りたいだけなら COUNT()なんか使う必要はなく $sql="SELECT id FROM members where email=:email LIMIT 1"; でいい まぁその例はあくまでも教科書的に「何件あるか」を調べる方法を書いてるだろうが DB処理ってのはボトルネックになりやすいんで sqlはなるべく簡素にするのが基本な >>883 XMLなんだからsimplexml系とか(他にも色々あるが)で処理すればいいだろ? gzされてるデータの扱いが分からんのか? gzされてるデータはローカルに保存した上でgzopen()で開いて処理してもいいし データ取得にcurl使って CURLOPT_ENCODING => 'gzip' ってオプション指定して自動展開してもいいし そのままとってきてgzdecode()通してもいいし 好きなようにすりゃいい >>886 >>887 >>888 ありがとうございます。 $count には ['COUNT(id)']=>行数という連想配列が、 $count['COUNT(id)'] には 行数が、 それぞれ格納されているのですね。 return (bool) $stmt->fetchColumn();や 実務的なSQLの考え方を教えてくださってありがとうございます! >>891 お、おう そういうレベルだったのかw 変数の中身がどうなってるかわけ分からん時はすぐに var_dump($count); ってするんだ $countが「配列」や「オブジェクト」だと分かってる時は print_r($count); ってした方が見やすいから使い分けるといいぞ とにかく初心者の内はちょっとでもあれ?って思ったらすぐ var_dump() しろ >>885 の変数COUNT(id)なのですが $sql="SELECT COUNT(id) で、変数宣言された、ということでしょうか? >>894 上でも書かれてるけどそういう疑問を持ったら実行してvar_dump スクリプト言語はそうやって簡単に実行して結果が見れるのがメリットなんだから、 もし今それができないなら環境構築から見直さないとものにならないよ あと上の人もだけどPHPというよりはSQLが分かってない 勉強の仕方が間違ってる コレは解説のサンプルコード書いてるヤツが頭ワルイわ $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){ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる