1 名前:デフォルトの名無しさん (ワッチョイ 1342-Xqtn) mailto:sage [2016/11/09(水) 11:03:26.15 ID:eAjeihOa0.net] PHPに関する下らない質問用避難スレです。 まず読むこと【PHPマニュアル】 www.php.net/manual/ja/ 前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 5(実質6) echo.2ch.net/test/read.cgi/tech/1462971286/ 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 次スレを立てる時は本文の1行目に以下を追加して下さい !extend:on:vvvvv:1000:512 VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
596 名前:デフォルトの名無しさん (ワッチョイ 2b42-yz8t) mailto:sage [2017/01/09(月) 23:03:00.28 ID:yvmBF9eo0.net] 画像が大量にあってアクセスが多いとか、いろいろ考慮して お金がたっぷりあってサーバーに余裕がある時は考慮しても良いかも 昔ファイルシステムがボトルネックになったことあるからね。 もちろん管理しやすさ重視だったけど
597 名前:デフォルトの名無しさん (ワッチョイ 6ba0-4j6q) mailto:sage [2017/01/10(火) 00:15:48.11 ID:Zz1rnY0L0.net] 正規表現を使って preg_match_all('/<a.*href\s*=\"?([\-_\.\!\~\*\'\(\)a-z0-9\;\/\?\:@&=\+\$\,\%\#]+(jpg|jpeg|gif|png|bmp))/i', file_get_contents($file), $img_path_list); こんな感じに作って画像リンクを抽出するようにしたんだけど たまに改行がなく一文にソースコードがずらーと書いてあるやつがあってうまく取り出せない 何か良い方法はないでしょうか? こうしたい <a href="img01.jpg" target="_blank">img01</a> <a href="img02.jpg" target="_blank">img02</a> ↓ Array ( [0] => img01.jpg [1] => img02.jpg )
598 名前:デフォルトの名無しさん (ワッチョイ 1bf8-HvS5) mailto:sage [2017/01/10(火) 01:11:41.52 ID:91nFXcAZ0.net] href="([^"]+\.jpg|jpeg|gif|png|bmp)
599 名前:デフォルトの名無しさん (ワッチョイ 1bf8-HvS5) mailto:sage [2017/01/10(火) 01:16:54.93 ID:91nFXcAZ0.net] href="([^"]+\.(jpg|jpeg|gif|png|bmp))" スマン色々抜けてた 相対リンクは含めないとかでない限り ごちゃごちゃしたの書くより"が現れるまでをとったほうがいいんじゃない
600 名前:デフォルトの名無しさん (ワッチョイ bbc7-pn3f) mailto:sage [2017/01/10(火) 01:39:10.15 ID:fP39RQYT0.net] >>590 その処理は正規表現じゃなきゃ駄目か? phpQueryとかのライブラリ使ってやる方が素直だし読みやすいと思うが 一応その正規表現の問題点を挙げておくと, <a.* の段階で貪欲にマッチして後続の, href\s*=\"?([\-_\.\!\~\*\'\(\)a-z0-9\;\/\?\:@&=\+\$\,\%\#]+(jpg|jpeg|gif|png|bmp)) にマッチする最後の部分までの間にある全ての文字を食い尽くす よって <a.* の部分がとてもマズい HTMLタグにきちっとマッチさせる正規表現は書けるけど面倒
601 名前:デフォルトの名無しさん (ワッチョイ 6b56-IbiL) mailto:sage [2017/01/10(火) 17:34:14.17 ID:eoRQxw730.net] >>590 なるべく元のコードに手を加えない方向でいけば a.* ⇒ a.*? にするだけでいいと思うが 最短マッチと最長マッチの違い どのみちタグの中にダブルコーテーションが無いとかシングルコーテーション使ってたり =の後に空白文字があったら駄目だけど 正規表現って最初は試行錯誤しながら学ぶもんだから 初心者のうちはあんまり他人が書いたものをコピペするのはおすすめしない
602 名前:デフォルトの名無しさん (ワッチョイ 6ba0-4j6q) mailto:sage [2017/01/10(火) 17:37:36.65 ID:Zz1rnY0L0.net] >>592 綺麗にできました。 正規表現は使えるとホント便利ですね いつかしっかり勉強したいです。 その他の方もありがとうございました。
603 名前:575 (アウアウウー Saf3-OYug) [2017/01/12(木) 11:50:13.88 ID:P6PzELH5a.net] おかげさまでできました。ありがとうございます。 >>585 DBに保存したほうがセキュリティ上好ましいとどこかで見た気がしたので そうしているのですが、呼び出しがやや面倒です。 書き込みを拝見させていただくとDBに保存したほうが 動作も重くなるみたいなのですが、DBに保存するメリットってありますか? なければやめようかと思うのですが・・・
604 名前:デフォルトの名無しさん (ワッチョイ c356-YL17) mailto:sage [2017/01/12(木) 12:58:17.42 ID:JoWqZZGk0.net] DBに画像をバイナリ保存するのは 類似画像検索するとかバイナリデータ内に含まれる情報を元にソートや抽出をするといった「明確な目的」があるからであって 特に目的もないのにそうする事はリソースの無駄以外の何者でもない 偉そうな事をいって申し訳ないが セキュリティ上好ましいってその理由を理解もせずに鵜呑みにしたら駄目だと思う
605 名前:デフォルトの名無しさん (ワッチョイ 67f8-dHfL) mailto:sage [2017/01/12(木) 15:40:42.15 ID:hdlSpXcO0.net] セキュリティ上好ましいっていうのは上のほうでも誰か書いてたけど たぶん直リンで簡単にアクセス出来ないからとかそんな理由なんじゃない? 特定の人しかアクセス出来ない非公開画像なんかの場合はちょっとした工夫が必要だけど 別にDBである必要はないね
606 名前:デフォルトの名無しさん (JP 0H8e-vSov) mailto:sage [2017/01/12(木) 17:13:18.12 ID:zvW9UYRyH.net] >>596 詳しくは、書籍『SQLアンチパターン』のファントムファイルを参照するとして、データベースに保存するメリットを列挙すると、 ・ファントムファイル(幻のファイル:データベースのレコードはあるがファイルが存在しない)が起こらない ・画像の保存・変更・削除がデータベースのトランザクションと一致する ・ロールバックしたときに不要なファイルが残るということがない ・一般ファイルとして保存すると、File I/Oエラーのときにトランザクションをロールバックするなどのコードが必要になる ・データベースをバックアップすれば、画像も一緒にバックアップされる(一貫した完全なデータセットでバックアップできる) 「SQLアンチパターン ファントムファイル」でググれば、書籍を買わなくてもいろいろと記事が見つかる。
607 名前:デフォルトの名無しさん (JP 0H8e-vSov) mailto:sage [2017/01/12(木) 17:21:55.51 ID:zvW9UYRyH.net] あ、念のため書いておくと、『SQLアンチパターン』でアンチパターンとされているのは、 データベースに画像をバイナリで保存することではなくて、 「物理ファイルの使用(データベースにはパスのみ格納)を必須と思い込む」ことで、 たいした考慮もなしにそう実装してしまうというものです。
608 名前:デフォルトの名無しさん (ワッチョイ b222-GBI4) [2017/01/12(木) 18:12:29.36 ID:LTmK9cNB0.net] サイト間の文字コードについて質問させてください。 今仕事でブログパーツを作成しているのですが、 文字コードが異なるサイトでは <script src=
609 名前:デフォルトの名無しさん (ワッチョイ b222-GBI4) [2017/01/12(木) 18:15:23.38 ID:LTmK9cNB0.net] 規制が掛ってしまったのでプロトコル名は全角のhttpと記載しました。 サイト間の文字コードについて質問させてください。 今仕事でブログパーツを作成しているのですが、 文字コードが異なるサイトでは <script src="http://hoge/fuge.php?charset=utf8"></script> のように「charset」明示して読み込めばもちろん判別できるのですが いくつかの有名サイトではcharsetなしで自動的に文字判別しているようです。 ソースを見ると出力の段階で正しい文字コードになっています。 アダルトサイトのブログパーツで恐縮なのですが、↓など サイト1 <div id="immoral_parts_1" class="immoral_parts"></div> <script src="http://p.immoral.jp/parts.php?width=200&layout=1& keyword=&num=4&id=1&filter="></script> サイト2 <div id="eroterest_partsv2" class="eroterest_partsv2"></div> <script src="http://bpm.eroterest.net/v2/?w=&e=&n=6&rn=2&spn=&sprn=& fc=&ts=&tp=&tbg=&tsz=&tr=&tc=&tmc=&tu=1&is=1&mts=&ds=&dsz=&dr=&dc=&df=& ibg=&ibm=&ids=&ib=&ibc=&ir=&sf="></script> どの文字コードのページに埋め込んでも正しく表示されます。 どなたかご教示いただけないでしょうか?
610 名前:デフォルトの名無しさん (ワッチョイ db2c-dHfL) mailto:sage [2017/01/12(木) 19:13:19.50 ID:taUnzxu50.net] レスポンスのContent-Typeヘッダのcharsetでブラウザに文字コード教えるだけなのでは リクエスト時にこの文字コードをくれではなくレスポンスでこの文字コード使ってるからクライアントで勝手に解釈しろという流れ
611 名前:デフォルトの名無しさん (ワッチョイ 3eaf-dHfL) [2017/01/12(木) 23:35:18.23 ID:yNVhW+sq0.net] sjisのページにこれ貼り付けても文字化けしないけど 判定とかしてないでしょ
612 名前:デフォルトの名無しさん (ワッチョイ d3d5-oERZ) [2017/01/12(木) 23:56:56.78 ID:tDwhqFa10.net] 自作ゲーム即売会「ゲームマーケット」に1万人超 www.nikkansports.com/general/nikkan/news/1750500.html ボードゲームのオリジナルオーダー制作 www.logygames.com/logy/ordermade.html カードゲームを自作する1 【自宅でカード印刷】 tanishi.org/?p=801 100円ショップでボードゲームを自作しよう https://sites.google.com/site/jun1sboardgames/blog/makeyourbg ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」 boardgamelove.com/archives/boardgame-make-1/ ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中 gigazine.net/news/20150820-board-game-crowdfunding/ 実際のところ、自作ボードゲームってどれぐらい売れるもんなの? roy.hatenablog.com/entry/2016/12/20/220102 オリジナル アナログゲーム・絵カード印刷 www.shobundo.org/index.html ゲームマーケット2016春にて初参加サークルさんに作成数アンケートをとってきました hidarigray.blog35.fc2.com/blog-entry-614.html
613 名前:デフォルトの名無しさん (ワッチョイ f67b-S3/X) mailto:sage [2017/01/13(金) 00:39:02.36 ID:84sZuYo80.net] >>601-602 2chのバグだろう 書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。 " の代わりに、\" とエスケープすれば、どうだろう? それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
614 名前:575 (アウアウウー Saf3-OYug) [2017/01/13(金) 09:18:20.76 ID:zdP6lRcka.net] >>597-600 ありがとうございます、検索してきました。とても勉強になりました。 用途ごとで考えていかないといけないんですね
615 名前:デフォルトの名無しさん (ワッチョイ b222-GBI4) mailto:sage [2017/01/13(金) 17:40:23.42 ID:pW3G4Um70.net] >>603 ありがとうございます! header("Content-type: application/x-javascript; charset=utf-8"); で行けました。 こんなに簡単だったなんて・・・
616 名前:デフォルトの名無しさん (ワッチョイ f230-sWU2) mailto:sage [2017/01/15(日) 10:07:50.48 ID:96oN4X0D0.net] ファントムファイルの話おもしろいな 久しぶりに有意義なレス読めて嬉しいわ
617 名前:デフォルトの名無しさん (ワッチョイ c3a0-kZbI) mailto:sage [2017/01/17(火) 00:12:19.85 ID:rCvGxOoa0.net] 文字列がだいたいあってればtrueって返すのってどうにかできないか? 「あいうえおかきくけこ」≒「あ■うえお■きくけこ」 =>true 「あいうえおかきくけこ」≒「さしすせそたちつてと」 =>false
618 名前:デフォルトの名無しさん (ワッチョイ 4f42-q48i) mailto:sage [2017/01/17(火) 00:43:41.02 ID:ch2PxU+N0.net] 「だいたい」と言う言葉を厳密にまず定義してみて 人によっては、先頭の一文字さえ合えば合っているって言うかもしれない
619 名前:デフォルトの名無しさん (ワッチョイ 1fc7-q48i) mailto:sage [2017/01/17(火) 00:45:23.61 ID:vaY8CLG20.net] >>610 文字列の集合上の距離関数(Levenshtein距離など)とtrueを返す距離の閾値を引数にとる関数を考えればよい
620 名前:デフォルトの名無しさん (ワッチョイ 4f46-YL17) mailto:sage [2017/01/17(火) 12:40:52.39 ID:34x6WvLV0.net] >>610 611の言うとおり とてもプログラミングする人間の質問とは思えない
621 名前:デフォルトの名無しさん (ワッチョイ c356-YL17) mailto:sage [2017/01/17(火) 12:43:30.29 ID:AoWcBh8D0.net] あいうえお と AいうeO とが「だいたい」同じとみなすなら >>612 の方法ではダメだしね ある程度定義がないと答えようがない
622 名前:デフォルトの名無しさん (ワッチョイ c3a0-kZbI) mailto:sage [2017/01/17(火) 17:30:26.50 ID:rCvGxOoa0.net] すまない 定義も言わずに無茶な質問したなと思っている 定義としていいのかどうかわからないが ベースとなる文字列に対して対象となる文字列との合致率が80%以上あればいい 最初はベースとなる文字列を2文字ずつ分解して類似を消し、 対象となる文字列内にその文字か含まれるか調査して それが80%を超えればtrueにしようと考えていたんだけど これでいいのか、もっといい方法があるんじゃないか?で不安になって質問した
623 名前:デフォルトの名無しさん (アウアウカー Sa5f-kkJw) mailto:sage [2017/01/17(火) 18:04:45.68 ID:0If6Z2WBa.net] >>614 距離関数の定義と設定する閾値次第 文字列の近さの評価は距離関数に丸投げするわけだ 用途や目的, 想定に合わせて距離関数を実装してコールバックとして渡す
624 名前:デフォルトの名無しさん (アウアウカー Sa5f-kkJw) mailto:sage [2017/01/17(火) 18:17:37.68 ID:0If6Z2WBa.net] >>615 その「一致率」ってのが, 文字列の比較でどこに着目して何を重視するかによって変わる指標でしかないんだけども とりあえずよく使われる例として上でも挙げたLevenshtein距離とその実装アルゴリズムのBitapを調べてみてはどうか 尚マルチバイト文字列でなければ組み込みのlevenshtein関数がある
625 名前:デフォルトの名無しさん (アウアウカー Sa5f-kkJw) mailto:sage [2017/01/17(火) 18:54:34.88 ID:0If6Z2WBa.net] Bitapは実装アルゴリズムじゃないわ失礼
626 名前:デフォルトの名無しさん (ワッチョイ c356-YL17) mailto:sage [2017/01/17(火) 19:48:09.06 ID:AoWcBh8D0.net] >>616 日本語って漢字もカタカナもひらがなもアルファベットもあるからさ Googleみたいな天才集団ならまだしも俺みたいな凡人レベルだと 一度ローマ字読みに統一(それすらYahooAPIに丸投げ)してから Levenshteinにほとんど丸投げみたいな感じで 似たようなことならやった事があるが参考になるかね もう5年ぐらい前の話だから今はもっといい方法あるかもな
627 名前:デフォルトの名無しさん (ワッチョイ c356-YL17) mailto:sage [2017/01/17(火) 19:49:45.70 ID:AoWcBh8D0.net] 619は616ではなく>>615 へのレスの間違いだ 失礼
628 名前:デフォルトの名無しさん (ワッチョイ c3a0-kZbI) mailto:sage [2017/01/17(火) 20:26:24.43 ID:rCvGxOoa0.net] いろいろありがとうございます。 Levenshteinというのがうまく使えそうなので これでやってみたいと思います。
629 名前:デフォルトの名無しさん (ワッチョイ b3a0-07nx) mailto:sage [2017/01/19(木) 01:02:50.61 ID:Iza9bQoq0.net] 質問よろしいでしょうか 文字と6〜11桁の数値の混ざった文字列があり、 この数値以降の文字列を削除したいのですが何か良い方法はないでしょうか? abcd1234567app-00 → abcd1234567 xyz1234567890xx/0123 → xyz1234567890
630 名前:デフォルトの名無しさん (ワッチョイ 2342-SmTw) mailto:sage [2017/01/19(木) 02:17:05.14 ID:TMXa1TOT0.net] <?PHP $src = array("abcd1234567app-00", "xyz1234567890xx/0123"); print_r($src); $dst = preg_replace('/^([a-z]+[0-9]+)[^0-9].*$/', '$1', $src); print_r($dst);
631 名前:デフォルトの名無しさん (ワッチョイ b3a0-07nx) mailto:sage [2017/01/19(木) 11:38:32.06 ID:Iza9bQoq0.net] ありがとうございます。 もう一つ同じような質問になってしまい恐縮なのですが、 aa.bb5.com/topics/0123456789/58- ll.bb1.com/topics/1234567890/s12 cc.bb8.com/topics/2345678901 こういったURLを一律に aa.bb5.com/topics/0123456789/ ll.bb1.com/topics/1234567890/ cc.bb8.com/topics/2345678901/ このような形に整える場合、どうすると良いのでしょうか?
632 名前:デフォルトの名無しさん (ワッチョイ b356-JQ1R) mailto:sage [2017/01/19(木) 13:26:19.40 ID:Y9xRubnq0.net] 「topics+数字10桁」が固定なら $url = array( 'aa.bb5.com/topics/0123456789/58- ', 'll.bb1.com/topics/1234567890/s12 ', 'cc.bb8.com/topics/2345678901 ' ); print_r(preg_replace('/(topics\/\d{10}).*$/', '$1/', $url)); とかさ とりあえず正規表現勉強しよう こんなの初歩中の初歩だし
633 名前:デフォルトの名無しさん (ワッチョイ 637b-jh1Y) mailto:sage [2017/01/19(木) 15:41:48.95 ID:+8JGp/PH0.net] 別々のサイトを同じ正規表現で処理するのってどうなのかな? できたとしても、普通しないんじゃあないかな?
634 名前:デフォルトの名無しさん (ワッチョイ 8fc9-3qL8) mailto:sage [2017/01/19(木) 16:09:49.05 ID:+apAMdxY0.net] >>626 対象が普通じゃないときにはよくやる。
635 名前:デフォルトの名無しさん (ワッチョイ b356-JQ1R) mailto:sage [2017/01/19(木) 17:33:26.13 ID:Y9xRubnq0.net] >>626 そんなもん場合によるとしか言いようがない ドメインが違っても同じシステム上で動いてるならhost以下のURLは同じパターンになる事だってある parse_url()あたり使ってドメイン別に処理を分岐させるてもいいし 条件が複雑になってもpreg_replace_callback()使ってコールバック関数に投げれば大抵の事は正規表現でできる(正規表現にこだわる必要性はないが)
636 名前:デフォルトの名無しさん (ワッチョイ 2346-JQ1R) mailto:sage [2017/01/19(木) 17:36:45.27 ID:DEEPX58W0.net] 2chミラー系のサイトとかパスの部分は本家と同じルールの事が多いよな
637 名前:デフォルトの名無しさん (ワッチョイ 03f8-3qL8) mailto:sage [2017/01/19(木) 17:49:38.07 ID:Yy/ywFZD0.net] 相手方が仕様変更したら、都度変更するってのは当たり前のことだしね。
638 名前:デフォルトの名無しさん (ワッチョイ b3a0-07nx) mailto:sage [2017/01/19(木) 17:56:49.57 ID:Iza9bQoq0.net] >>625 うまくいきました。 「preg_replace」こういった便利なものをもっと活用できる様努力したいです。 正規表現はまだ勉強していませんでした。 皆さんはどのように勉強されましたか?
639 名前:デフォルトの名無しさん (ワッチョイ b356-JQ1R) mailto:sage [2017/01/19(木) 18:05:43.35 ID:Y9xRubnq0.net] 俺はwebでどうしても作りたいサービスがあって それを実現するために必要なものを都度、本を見たり他人のソース読んで独学で覚えていったなー 正規表現もその内の1つ 当時はPHPなんてまだ実用レベルではなかったけど、プログラミングなんてそんなもんじゃね? ※ちなみに作ったサービスが大ヒットして20代で起業できた 正規表現は言語や環境を超えて色んな場面で使えるから早いとこ覚えた方がいいよ
640 名前:デフォルトの名無しさん (アウアウカー Sac7-Taza) mailto:sage [2017/01/19(木) 19:26:50.82 ID:IJcB5l5+a.net] Perlで覚えたっておっさんは多そう
641 名前:デフォルトの名無しさん (ワッチョイ 2342-SmTw) mailto:sage [2017/01/19(木) 20:10:06.40 ID:TMXa1TOT0.net] sed使って覚えたw
642 名前:デフォルトの名無しさん (ワッチョイ b3a0-07nx) mailto:sage [2017/01/19(木) 23:55:33.82 ID:Iza9bQoq0.net] ありがとうございました。 正規表現に関する書籍などもあるようなので始めのうちはそちらで勉強しようと思います。
643 名前:デフォルトの名無しさん (JP 0H27-Up5i) mailto:sage [2017/01/20(金) 08:28:28.07 ID:Nvso2zBqH.net] 気の利いたテキストエディタなら 検索条件に正規表現が使えるよ そんなに身構えるほどのものでもない でも直感的にすぐできそうなことが できなかったり遠回りさせられたりするケースは多い
644 名前:デフォルトの名無しさん (JP 0H7f-Taza) mailto:sage [2017/01/20(金) 15:15:26.51 ID:ytgAV8a7H.net] 所詮有限オートマトンでしかないからなぁ 文脈自由言語を表現したいことはそこそこあるし
645 名前:デフォルトの名無しさん (ワッチョイ 6f5b-WaXM) mailto:sage [2017/01/21(土) 11:23:45.42 ID:W/zpHkC+0.net] あああああああああああああ
646 名前:デフォルトの名無しさん (ワッチョイ 634a-OQjX) mailto:sage [2017/01/22(日) 11:25:23.82 ID:yhCK3ont0.net] echo "あああああ"; で出力している行が沢山あるのだが、C言語のマクロみたいに #define echo などとして、一時的にechoをしないように出来ますか? #define echo echo で元に戻すとか。
647 名前:デフォルトの名無しさん (ワッチョイ f342-WaXM) mailto:sage [2017/01/22(日) 12:29:06.17 ID:Bs668zcL0.net] ob_startでダミー関数へ出力を流して捨てるとか まぁecho以外のものも全部影響するけど
648 名前:デフォルトの名無しさん (ワッチョイ 634a-OQjX) mailto:sage [2017/01/22(日) 16:56:50.88 ID:yhCK3ont0.net] >>640 サンキュウ。 PHP初心者の俺には難しそうなのであきらめるわ。
649 名前:デフォルトの名無しさん (ワッチョイ f342-WaXM) mailto:sage [2017/01/22(日) 17:44:31.99 ID:Bs668zcL0.net] 自分も初心者で、この前試してみたら動いたよ。 echoで出力したやつを mongodb へ出力するようにしてみた callback関数に慣れてないので、結局 ob_get_contents で文字列として取り出してやることになったけどww(一応callback関数も動いたんだけどねw)
650 名前:デフォルトの名無しさん (ワッチョイ 634a-OQjX) mailto:sage [2017/01/24(火) 07:22:42.90 ID:GW7wBcmJ0.net] echo '文字列'; echo('文字列'); どちらも行けるのはなぜ?
651 名前:デフォルトの名無しさん (ワッチョイ 03f8-3qL8) mailto:sage [2017/01/24(火) 10:15:59.16 ID:9JkkYn/G0.net] なぜって言われても仕様だからとしか echoは言語構造で関数ではないが関数風の記述も出来る
652 名前:デフォルトの名無しさん (シャチーク 0C67-x36u) mailto:sage [2017/01/24(火) 13:11:54.10 ID:qMNsZ9tKC.net] <?php $shell = new COM('WScript.Shell'); $shell->Popup(mb_convert_encoding('日本語', 'SJIS')); ↑のように書けば文字化けはしないのですが <?php $shell = new COM('WScript.Shell'); $shell->Popup('日本語'); ↑のように書いても文字化けしない設定はありますか? 環境は、Windows7 x64、PHP 5.6.27、ソースファイルの文字コードはUTF-8です。 現状、以下のようなエラーも発生しています。 PHP Warning: Unknown: Could not convert string to unicode: `Unicode 文字のマッピングがターゲットのマルチバイト コード ページにありません。' 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
653 名前:デフォルトの名無しさん (ワッチョイ 634a-OQjX) mailto:sage [2017/01/24(火) 13:28:04.90 ID:GW7wBcmJ0.net] >>644 サンキュウ。 勉強になったわ。 ちなみにそういう特徴があるのは echo だけなの?
654 名前:デフォルトの名無しさん (ワッチョイ 63c7-SmTw) mailto:sage [2017/01/24(火) 18:11:00.05 ID:eJZROb7k0.net] >>646 引数をとる言語構造は概ね require_onceとか
655 名前:デフォルトの名無しさん (ワッチョイ ff30-waAN) mailto:sage [2017/01/24(火) 22:59:12.64 ID:I87canmV0.net] 色々なCMSとかECで管理画面のURLを変更できますがどういう実装なんでしょうか デフォルト /adminlogin 変更後 /hogehogelogin ルーター?あたりでリクエストを見てごにょごにょ変更したりなんだりなんでしょうか
656 名前:デフォルトの名無しさん (ワッチョイ b356-JQ1R) mailto:sage [2017/01/25(水) 17:48:43.07 ID:Rne6Kw8A0.net] Apacheサーバ上で動作するものならmod_rewriteで変更するのが定番中の定番
657 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/01/26(木) 00:36:54.30 ID:KyKDhrRS0.net] >>649 それはルータのURIでしょうよ >>648 そうでしょうね
658 名前:デフォルトの名無しさん (ワッチョイ 1fd6-Q0kd) mailto:sage [2017/01/26(木) 01:34:40.14 ID:MO+7T8JD0.net] mod_rewrite楽でいいじゃんって感じで rewriteしまくってわけわかんなくなってるサイトとか マジ、いじりたく
659 名前:ないのが実在する [] [ここ壊れてます]
660 名前:デフォルトの名無しさん (ワッチョイ 5b42-y5A3) mailto:sage [2017/01/26(木) 23:05:32.18 ID:VOhYXAVW0.net] 単に管理用のプログラムの置く場所を、そのサイトで変えていると言うだけなんてことは無い?
661 名前:デフォルトの名無しさん (ワッチョイ f7ce-AZYz) mailto:sage [2017/01/26(木) 23:45:40.57 ID:cKDcvF/b0.net] if文の条件でorを多用する時、スマートな書き方ってありますか? if (A || b() || (C && d()) || $E || F); ↑こういうヤツです
662 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/01/27(金) 11:14:04.21 ID:r9WH4ZGI0.net] >>653 あんまり量が多いようなら switch case で羅列する
663 名前:デフォルトの名無しさん (ワッチョイ 5320-Cjs8) mailto:sage [2017/01/27(金) 12:08:48.97 ID:0yUPeU9L0.net] ネットで調べまくっても解決しないので質問させてください。 Win7にXAMPPをインストールしてPHPを勉強しているのですが、 mb_send_mailでメールが届きません。 ttps://techacademy.jp/magazine/4129 で説明のようにphp.iniとsendmail.iniを設定して 下記のPHPを読み込むと「送信成功」と出るのですがメールが届きません。 php.iniとsendmail.iniの設定は他のサイトで説明されている設定でもいろいろ試したのですが 変わらず届かないので他の問題があるのかなと考えているのですが 同じ症状を経験された方いませんか? 「送信成功」と出てsendmailのエラーが出ていないのでerror.logは作成されません。 迷惑メール等にもメールは見当たらず、gmailやyahooメール等いろんなsmtpを設定しても届いていません。 <?php if (mb_send_mail('xxx@xxx.com', 'メール送信テスト', 'これはメール送信テストです')) { print '送信完了'; } else { print '送信失敗'; }
664 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/01/27(金) 12:22:22.94 ID:r9WH4ZGI0.net] >>655 宛先が間違っているんやろなぁ
665 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/27(金) 12:22:47.97 ID:d1ED6onW0.net] 認証方法が変わったりしたんだろ? とりあえずPHPは後回しにして手動とか、コマンドで出来るか試す。
666 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/01/27(金) 15:46:24.32 ID:qE/DB39Q0.net] >>655 mailヘッダ情報の設定やってる? これデバッグできないなら諦めて 他のメールパッケージ使ったほうがいいよ それでも動作しないなら、sendmailが原因
667 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/27(金) 16:17:02.67 ID:ywWwL4iXH.net] >>655 今xamppをダウンロードしてみたんだが、ローカルのSMTPサーバを使うのがデフォルトみたいだぞ。
668 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/27(金) 16:22:12.36 ID:ywWwL4iXH.net] で、ローカルのSMTPサーバを起動したらコントロールパネルでログを見られるみたいだから、 原因の切り分けができるのでは? https://screenpresso.com/=GRn6e
669 名前:デフォルトの名無しさん (ワッチョイ 6f42-P4zY) mailto:sage [2017/01/27(金) 18:34:40.27 ID:K/AcGzHR0.net] Windows 7だから、ローカルにメールサーバーが入ってないってことかも? Linuxのディストリビューションだと、デフォルトで入ってるから悩まなくてもできるけど Windowsだと・・Virtualboxとか使った方が早いかも?
670 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/27(金) 19:02:58.26 ID:dfMoaU/d0.net] xamppにメールサーバーはいってたはずだが ただし原理は不明だが送信相手かプロバイダに弾かれるかして動作しなかったような・・ メールサーバーとして認められるなんらかの手続きがいるはずかと・・不明だが しかしグーグル経由して送信するんだろ?
671 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/27(金) 19:11:25.07 ID:dfMoaU/d0.net] これとおなじだろ。本物サーバーでなくて、メーラーと同様な動作させたいってことだろ? サーバーはグーグルまかせで。 xamppのMercuryを使ってローカル開発環境からメールを送信する xamppなどを利用してローカルでメールフォームなどを開発する場合、その動作を確認できなくて困ることがあります。 原因は、単純にローカルマシン自身がSMTPサーバではないからです。 xamppにはその問題を解消するために「Mercury」というソフトが同胞されています。これまで、幾度となく何度もチャレンジしたのですが、うまくメールを送信できませんでした。 しかし、今回、設定に成功したのでメモとして残しておきます。 メールが送信されるしくみ PHPの関数mb_send_mailなどでメールを送信すると、コマンドsendmailなどを使ってメールが送信されるのが通常です。 今回のMercuryを使う場合は、PHPでメールが送信されるとMercuryを経由して、Mercuryで設定したSMTPサーバにメールが投げられます。 つまり、Mercuryはローカルプログラムから受け取ったメールを、メーラーソフトと同じようにしてメールを送信しているわけです。 したがって、この環境を実装するためには、SMTPサーバが必要です。 もちろん、今利用しているISPのSMTPサーバで問題ありません。 helog.jp/xampp/mercury-mail/
672 名前:655 (ワッチョイ 5320-Cjs8) mailto:sage [2017/01/27(金) 19:26:49.62 ID:0yUPeU9L0.net] 返答遅れて申し訳ないです。 >>656 宛先は何度も確認して別のアドレス宛てにも送っているんで 間違いは無いと思います。 >>657 認証についてはよくわからないのですが、 PHPの本やmb_send_mailを説明しているサイトでは そのまま問題なくできているようなのです。 メーラーやコマンドライン使って問題なくメールは送れました。 >>658 ヘッダー情報の設定もしてみたのですが結果は同じでした。 PHPのmb_send_mailの勉強なので、もっと出来るようになったら他の方法も勉強してみようと思います。 >>659 ローカルのSMTPサーバを使うまで進んでいませんが mb_send_mailができないようでしたら勉強してみます。
673 名前:デフォルトの名無しさん (ワッチョイ f7f8-TlWQ) mailto:sage [2017/01/27(金) 19:30:01.77 ID:5anwLQVh0.net] phpとは違うけど自分もメール送信できない事があってはまった事があった 原因はアンチウイルスソフトで大量メール送信をブロックしていたためだった virusscanをもし使っていたら下記リンクを参考にしてブロックを外してみて kayulog.seesaa.net/article/159312396.html
674 名前:655 (ワッチョイ 5320-Cjs8) mailto:sage [2017/01/27(金) 19:48:09.53 ID:0yUPeU9L0.net] >>661-663 自分が試みているのは「xamppのfake sendmailを使ってローカル開発環境からメールを送信する」の方で、 ↓のサイトでも問題なく出来ているみたいなんですが 同じ設定をしてもメールが届かないんです。 helog.jp/xampp/fake-sendmail/
675 名前:デフォルトの名無しさん (ワッチョイ 7e7b-316P) mailto:sage [2017/01/27(金) 20:02:05.93 ID:SOi9h9fX0.net] Wireshark を使って、通信パケットでも見れば?
676 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/28(土) 10:35:24.40 ID:13qnO7m90.net] 質問です 「$sql = 'select time from sbdate';」 これを使って時間のデータの「40日前〜10日前」を呼び出したいのですがどう書き足すといいでしょうか? また、登録されている時間のデータで一番新しいデータの呼び出し方も教えていただけると助かります。
677 名前:デフォルトの名無しさん (ワッチョイ 1fd6-Q0kd) mailto:sage [2017/01/28(土) 11:31:58.90 ID:7mM7CN4P0.net] >これを使って時間のデータの「40日前〜10日前」を呼び出したいのですがどう書き足すといいでしょうか? $sql = "SELECT time FROM sbdate WHERE time >= :start_date AND time <= end_date"; $params = array( "start_date" => date("Y-m-d", strtotime("-40 day")), "end_date" => date("Y-m-d", strtotime("-10 day")) ); $result = SomeDBAccessLibrary::getInstance()->query($sql)->bind($params)->execute(); >また、登録されている時間のデータで一番新しいデータの呼び出し方も教えていただけると助かります。 $sql = "SELECT * FROM sbdate ORDER BY time DESC LIMIT 1"; $result = SomeDBAccessLibrary::getInstance()->query($sql)->execute();
678 名前:デフォルトの名無しさん (ワッチョイ ea30-Ve17) mailto:sage [2017/01/29(日) 00:24:45.60 ID:RwW5ifSZ0.net] windowsと
679 名前:Linuxでまるっきり挙動が違うってのに初めて遭遇したんだけど そうなるとやっぱりXAMPPって使わないほうがいいのかね? [] [ここ壊れてます]
680 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/01/29(日) 01:23:23.51 ID:q/JB8S+S0.net] 手元でもテストするけど最終的にはDockerで実環境を再現したコンテナ作ってテスト走らせるわ
681 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/29(日) 02:09:49.58 ID:9y6Ir6At0.net] >>669 ありがとうございました。 XAMPPって駄目なのか 簡単に設定できたからずっと使ってた 今はローカルでやる場合は何が主流なんだろう
682 名前:デフォルトの名無しさん (ワッチョイ 5b42-y5A3) mailto:sage [2017/01/29(日) 02:27:11.14 ID:c27yycvu0.net] 仮想環境で実環境と同じOS使うのが楽だと思う
683 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/01/29(日) 02:38:41.26 ID:vdPv4D6s0.net] 別にだめじゃない。 XAMPP使っていて問題が起きるような人は結局、本番環境で開発しないと動かないコードが出来上がるタイプ。 つまりOS以外での差もあるわけで、Linuxで開発したからといって、本番環境のLinuxで動くとも限らないということ。 ていうか具体的にどこで問題がおきたの? Windows専用とか、Windowsだと制限されてるものとかはあるだろうけど(初めて使うものはちゃんと調べる)、 PHPは曲がりなりにもマルチプラットフォームであって、OS差を埋めるためのコードはちゃんと存在するはず。 例えば定数とかうまく使えてる?
684 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/01/29(日) 03:10:55.44 ID:CzSBugT30.net] 本番サーバがLinux環境なら、ローカルもLinuxに合わせたほうがよくない? 環境維持は大事だと思う
685 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/29(日) 09:40:28.87 ID:9y6Ir6At0.net] PHPの開発環境は皆どうしてる? Google ChromeとTeraPadで書いて確認してたけど なんかいいのあれば教えてください 流石に疲れました
686 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/29(日) 09:49:26.20 ID:VE53RC2e0.net] エディタは好きなのでいいし、PHP開発の大部分はブラウザは不要だろ? そっちがメインになることもあるだろうけど。 HTMLなど見える部分以外の動作を作るほうが多いからブラウザでの確認はあとでいい。
687 名前:デフォルトの名無しさん (ワッチョイ ea30-Ve17) mailto:sage [2017/01/29(日) 10:21:35.96 ID:RwW5ifSZ0.net] 画像周りのライブラリ拾ってきたときにWinとLinuxで動作違ったりしたな
688 名前:デフォルトの名無しさん (ワッチョイ ea30-Ve17) mailto:sage [2017/01/29(日) 10:24:34.69 ID:RwW5ifSZ0.net] って670俺だわ酔っ払ってたすまん >>674 mPDFでWinだと画像パス指定するだけでHTMLそのまま吐くんだけどLinuxだと404になってるのよね
689 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/01/29(日) 11:13:17.56 ID:vdPv4D6s0.net] サードパーティ製はさすがにわからないけど、 症状からしても画像パスの指定方法に問題があるのだろう。
690 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/30(月) 21:53:03.65 ID:Jl7rOjwJ0.net] ライブドアブログに記事をアップロードできるようにしたいがどうしたものか? AtomPub APIというのを使えばできるとらしいが 使い方がわからん… これは何かダウンロードして使うものなのだろうか?
691 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/30(月) 22:34:22.73 ID:gPTswH1+0.net] そのくらい初心者でもできるだろ。じぶんも初心者だが・・・ ためしにやってるみる
692 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/30(月) 23:21:18.49 ID:gPTswH1+0.net] >>681 投稿できたぞ これそのままつかった https://github.com/seiyaan/LiveDoorBlogAtomPub
693 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/31(火) 00:15:35.31 ID:6jwW0/Fs0.net] >>683 ありがとうございます。 とても助かります。 「通信に PEAR の HTTP_Request2 を使用しております。インストールをお願いします。」 うう… また知らん機能を… PEAR とか HTTP_Request2 って何なんじゃい 今日はもうギブアップ
694 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 00:40:09.72 ID:4WQSXuaN0.net] http request2って古いな 普通にfile_get_contentsでできるんちゃうか
695 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/01/31(火) 00:48:01.99 ID:H/15YF7/0.net] guzzlehttp/guzzleがPSRのインターフェイスの実装になってるからオヌヌメ
696 名前:デフォルトの名無しさん (JP 0H13-zSxl) mailto:sage [2017/01/31(火) 04:06:45.41 ID:WN418v1sH.net] windows環境で何年も開発してるけど、本番環境で問題起こったことないよ?
697 名前:デフォルトの名無しさん (ワッチョイ 3338-P4zY) [2017/01/31(火) 09:16:31.18 ID:HVCS3sQm0.net] phpの知識がないのですが、一通り学ぶのにオススメの本を教えてください。 おいらはC#でプログラム書いてます。 javascriptとperlの知識もあります。
698 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/31(火) 09:18:56.40 ID:I3GVvv+h0.net] つ php_manual_ja.chm (18,027,986 bytes) php.net/get/php_manual_ja.chm/from/a/mirror
699 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) mailto:sage [2017/01/31(火) 10:25:42.13 ID:AzvNrs+Ya.net] 質問です。投稿フォームからPOSTされた内容AとBを格納し 格納された値Aを サイトに投稿、Bをメールで自分のアドレスに飛ばす、ということをやりたいです。 <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $rows = json_decode(file_get_contents('bbs1.json'), true); if (!empty($_POST['write'])) { $row = array( 'A' => $_POST['A'], 'B' => $_POST['B'], ); array_unshift($rows, $row); file_put_contents('bbs1.json', json_encode($rows)); } ?> 〜htmlによる入力フォーム。省略〜 <?php foreach($rows as $row): ?> <strong><?php echo h($row['A']) ?></strong> <?php endforeach ?> <?php foreach($rows as $row): ?> <?php $_POST['B'] = $B; mb_send_mail("example@yahoo.co.jp", $B) ?> <?php endforeach ?> としたのですが動きません。見当違いな箇所は多々あることは自覚していますが どうすれば良いのか全く分かりません。何かアドバイスをお願いいたします。
700 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 11:02:26.33 ID:4WQSXuaN0.net] $_POST['B'] = $B; 逆じゃないの?
701 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 11:04:20.78 ID:4WQSXuaN0.net] このソース自分で書いたの? <?php foreach($rows as $row): ?> <?php endforeach ?> htmlのこれどっちもいらんでしょ
702 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 11:23:13.97 ID:AzvNrs+Ya.net] お返事ありがとうございます >>691 $B = $_POST['B']; ということでしょうか?やってみましたが投稿はできてもメール送信ができません・・・ >>692 ttp://ponk.jp/php/file/bbs1 を参考に見よう見まねで打ちました 実際には4つぐらいの項目を入力したいのでこうした方が良いのかなと考えた次第です
703 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 11:54:46.58 ID:4WQSXuaN0.net] >>693 掲示板だったのね。なら下のforeachだけ要らない mb_language("Japanese"); mb_internal_encoding("UTF-8"); ↑を<?phpの下に書いて メールの部分をこうすれば送信できるんじゃないか $email = "example@yahoo.co.jp"; $to = 'example@yahoo.co.jp''; $header = "From: $email\nReply-To: $email\n"; mb_send_mail($to '題名', h($row['B']), $header);
704 名前:デフォルトの名無しさん (ワッチョイ 7e7b-316P) mailto:sage [2017/01/31(火) 12:07:20.02 ID:SZ8YrWi+0.net] >>688 山田祥寛(よしひろ)、翔泳社 10日でおぼえる PHP 入門教室、第4版、2012 この本では最短で、一通り作れるようになるけど、文法の解説は少ない。 それに、もっと新しい本もあるかも知れない
705 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:45:54.81 ID:143GYQRi0.net] >>688 perlでwebアプリ作成経験あるなら 関数リファレンス1冊あれば十分 それすらPHPマニュアル読めばいいから無くてもいい あとはperlで作ったのと同じものをPHPで組んでみればいい PHPは○○の処理する時には××という組み込み関数(あるいはライブラリ)がある という事をできるだけたくさん知っておく事が大事だと思う 細かい使い方までは覚えて無くていい(使う時になって調べればいいだけ) 楽してなんぼのスクリプト言語で車輪の再発明はするなって事
706 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:48:39.39 ID:143GYQRi0.net] >>676 PHP Storm一択 テキストエディタでシコシコPHP書くとか何の苦行だよって思うw
707 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:55:57.11 ID:143GYQRi0.net] >>675 案件による 俺はCentOS環境を用意してるけど 最近のPHPで実装できるレベル(ハッキリいうとレベルが低い)の案件なら 大半はwindows環境でxamppで開発しても何ら問題ないな
708 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:00:49.60 ID:AzvNrs+Ya.net] >>694 ありがとうございます!教えていただいたように <?php foreach($rows as $row): ?> <strong><?php echo h($row['A']) ?></strong> <?php endforeach ?> <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $email = "example@yahoo.co.jp"; $to = "example@yahoo.co.jp"; $header = "From: $email\nReply-To: $email\n"; mb_send_mail($to , h($row[B]), $header); ?> としたのですが合ってますでしょうか?"題名"の部分があるとエラーになってしまうので 一旦空白にしました 動かしてみたのですがメールは届くのですが内容が From: example@yahoo.co.jp Reply-To: example@yahoo.co.jp だけでBに入力した情報は届きませんでした・・・ もし修正箇所等あればお教えください。質問ばかりですみません
709 名前:デフォルトの名無しさん (JP 0H13-zSxl) mailto:sage [2017/01/31(火) 13:03:28.72 ID:WN418v1sH.net] windowsでいいよ 環境による違いって1%以下じゃね? それなら開発しやすいwindowsのほうが楽
710 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 13:13:47.97 ID:4WQSXuaN0.net] >>699 mb_send_mail($to, '題名', h($row['B']), $header); , が消えてた あと [B] じゃなくて['B'] だからな それとフォームでBにpostしてるんでしょうね? ↑でダメならとりあえず $row['A'] で表示されるか試してみなよ
711 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 13:14:05.61 ID:143GYQRi0.net] >>699 一連の流れを読んでないのに茶々を入れて申し訳ないが メール送るのにmb_send_mail()使うとかやめとけ(細かい理由はググって勉強して) 俺は昔ZendFrameWorkのコードを元に自作してしまったが 探せばlocalからでも外部のSMTPサーバー使ってでも送れる 便利なライブラリがいくらでもあるだろう PHPはメール一通送るのに苦労するような言語じゃないぞ 楽してなんぼの言語だ
712 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:31:33.78 ID:AzvNrs+Ya.net] >>701 失礼しました 今度は題名は表示できましたが他は空白で$row['A']でもダメでした・・・ すみませんもしかしたら誤解を与えていたかもしれないですが投稿フォームは一つで サイトへの投稿とメール送信をしたい、という意味でした。>>690 で省略したフォームは <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>掲示板1</title> </head> <body> <form method="post"> A: <input name="A"><br> B: <input name="B"><br> <input type="submit" name="write" value="送信"> </form> <hr> です
713 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:37:03.58 ID:AzvNrs+Ya.net] >>703 またちょっと日本語が変でした AとBという入力フォームと一つのボタンでAをサイトへ投稿、Bをメール送信したい という意味です >>702 そうなのですか?上級者向けだとか脆弱性があるとかでしょうか? ともかくありがとうございます、調べてみます
714 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 13:46:41.41 ID:4WQSXuaN0.net] >>703 ごめん $rowが書き換えられてたから表示されないんだわ <?php foreach($rows as $r): ?> <strong><?php echo h($r['A']) ?></strong> <?php endforeach ?> こうしたらできると思うわ ちゃんと勉強して改造したほうがいいと思うけど
715 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 13:53:32.88 ID:143GYQRi0.net] >>704 mb_send_mail()はPHPのmb周りの文字エンコーディングの扱いの事をよく理解しておかないと 文字化けを起こしたり予期せぬ動作を起こすから メールソフトでメールを作るのと同じ感覚で from,to,subject,cc,bcc,添付ファイルetcを指定するだけで簡単にメールを送ることができるライブラリがあるのに わざわざメールヘッダを自分で組み立てる必要があるmail()・mb_send_mail()関数は PHPで使う必要性は全くない
716 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/01/31(火) 14:00:11.16 ID:iovKNvqi0.net] mailでメール送るぐらいならpopenでMTAにコマンド送る方がまだ勉強にはなるわな mail使ってメール送ったところでこの関数の糞みたいな仕様を覚えるだけで融通が効かないし
717 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 14:03:28.08 ID:143GYQRi0.net] >>707 そうそう mb_send_mail()なんてPHPのダメな部分を凝縮したような関数だと思うw
718 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 14:09:43.37 ID:AzvNrs+Ya.net] >>705 ありがとうございます!できました! 本当に感謝です。そうですね、ちゃんと噛み砕いて改造できるようにします >>706 なるほど、そういうことですね 他の送信方法を調べてみますね。ありがとうございます
719 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/31(火) 15:18:40.23 ID:desKHZjFH.net] >>707 > mailでメール送るぐらいならpopenでMTAにコマンド送る方がまだ勉強にはなるわな 勉強にはなるだろうが、実用度はどうかな
720 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/01/31(火) 15:46:06.26 ID:khfbkkxs0.net] >>708 同時にもっとも便利な側面でもあるよな
721 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/01/31(火) 16:57:19.69 ID:GujF4JLqa.net] 何も考えずswiftmailer使っとけばいいよ
722 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 17:21:30.16 ID:143GYQRi0.net] >>710 localのMTAから添付ファイル付きのHTMLメールを送るとかだと mail()関数使うよりpopenで直接MTA叩くほうがまだ簡単かもなw
723 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/31(火) 17:44:39.09 ID:desKHZjFH.net] >>713 オナニーは一人でやってろ
724 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/01/31(火) 19:14:14.64 ID:iovKNvqi0.net] メールで添付ファイル送る時にpopenを使うのってPHP4の頃は結構普通だったけどなあ mailで送るのとコードの行数ほとんど変わらんだろ
725 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 19:32:41.67 ID:143GYQRi0.net] 行数っていうかコードの内容自体がほとんど一緒になる(当たり前) PEAR(笑)を使いたくない時は使ってたっけ とりあえずオナニーって言葉が使いたかっただけかなとw
726 名前:デフォルトの名無しさん (ワッチョイ a33c-bF0B) mailto:sage [2017/01/31(火) 21:06:08.09 ID:JTv4YpQ+0.net] mail($to, $subject, $message, $headers); が $m = popen($mta_path, 'w'); fwrite($m, $headers); fwrite($m, $message); になるだけだし mail関数って何年か前から脆弱性を指摘されてたのに結局根本的な解決はされないまま最近になってやっとphpマニュアルに警告が載せられたでしょ 実用度でも後者の方が上だけど710はライブラリがどう実装されてるかコードなんて読んだ事ないんだろう まあペチパーらしいよ
727 名前:デフォルトの名無しさん (ワッチョイ a33c-bF0B) mailto:sage [2017/01/31(火) 21:18:03.59 ID:JTv4YpQ+0.net] >>715 今でも普通 自前で実装するかライブラリ側で実装してるかの違いだけで
728 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/02/01(水) 04:18:07.09 ID:8zVZaxIi0.net] socketでsmtp実装するとかなんかと勘違いしてんじゃね
729 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/02/01(水) 11:20:13.83 ID:y1IRJd7eH.net] >>717 お前こそmail()の中身知らずにいってるだろ まずはPHPのコード読んでからもの言え お前のは、単なるオリジナルコードの劣化実装に過ぎない
730 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:05:05.01 ID:AQgy4mwi0.net] PHPのmail関数の実装って 簡単にいえばMTAパイプオープンしてコマンド流してるだけだろ その過程で余計な事をやってるから使いにくいわけで だったらmail()なんか使わずにpopenしてしまった方が楽って話 を皆さんがしてると思うわけだが 1人だけトンチンカンなのが居て笑えるw
731 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:14:12.24 ID:AQgy4mwi0.net] ちなみに717が書いてる >mail関数って何年か前から脆弱性を指摘されてた ってのもPHPが「余計な事」をやってるせい まぁそれこそ実装コード読めば分かること 今PHPマニュアル見たらやっとこの件について追記されたんだな ほんと今更だけどw
732 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/02/01(水) 12:25:58.75 ID:LECYUBIq0.net] Perlの頃はパイプ開いてやってたなー
733 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/02/01(水) 12:29:39.79 ID:2dY+W0qT0.net] PHPMailerで話題になった脆弱性の件かなあ PHPのコードレベルでいえば mailやmb_send_mailの第5引数にphp_escape_shell_cmdを通してるのが原因のやつ PHPマニュアルに書かれたのは俺も今はじめて知った >1人だけトンチンカンなのが居て笑えるw たしかに mb_send_mailの糞の上に糞を塗り固めたようなPHPのコードとか本当に読んだことあるのかね
734 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:47:28.06 ID:AQgy4mwi0.net] そうそう PHPの関数で言うとescapeshellcmd()が勝手に適用される(PHPって本当にこういうのが多い) せいでMTAがsendmailだと任意のコマンドを実行できてしまうって話 postfix使ってれば関係ないし今更sendmailねぇ…って思うけど sendmailとか苦行過ぎて二度と触りたくないw
735 名前:デフォルトの名無しさん (オイコラミネオ MM76-bF0B) mailto:sage [2017/02/01(水) 13:00:46.75 ID:IzshbyCZM.net] 今の若いサバ管だとsendmail触れないのも多いんだろうな いや俺ももう関わりたくはないけどさ
736 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 16:23:09.34 ID:C9GybJdQ0.net] 【OS】windows【PHP】5.6【連携ソフト】MySQL exec()を使い別のPHPファイルを実行し、その別ファイルで主にmysqlで処理したいのですが、サーバー上ではなぜかsqlに接続できません。 条件として、exec()を使うにあたって呼び出し先のPHPは、サーバーで用意されているPHPと別のカスタムインストールしたPHP(同じホスト内)を使います。*利用しているサーバーでexec()を使用するために必要な措置。 exec()を使わなければMySQLは問題なく使えています。 そして、exec()を使って別のPHPファイルを実行するところまでは成功しています。 原因が分かる方いましたらよろしくお願いします。
737 名前:デフォルトの名無しさん (アウアウアー Sa76-R94c) mailto:sage [2017/02/01(水) 17:00:19.08 ID:dFm0/nQHa.net] macOSを利用しておりmampを使って環境を準備しようとしてるのですが、数点教えてもらいたい事があります macOSのターミナルでphp -v のコマンドを入力すると、5.系が出てきます mampで7.xをインストールした後に、上記のコマンドを入力したのですが、変化がありませんでした そこで、適当なphpファイルを作りmampのdocルートに配置、phpversion()を使って本当に動かしてるバージョンを出力したところ7.x系が表示されました これって、mampがOSとは別にphpの実行環境を作って、OSとは無関係に動作させてるのでしょうか 後、mampはインストールして不要になって削除したりした場合にOSに影響出るとかはありますか 基本的にパスとかいじらなければ問題ないのでしょうか mampのスレがなかったのでこちらに書き込みしましたがご存知でしたらお願いします
738 名前:デフォルトの名無しさん (ワッチョイ 6bc1-ngM0) [2017/02/01(水) 17:32:00.71 ID:LECYUBIq0.net] >>727 お前はそれだけ聞いて原因が特定出切ると思うのか? >>728 どのMAMP使ってるか知らんけどその程度よく分かってないならMAMPなんて使っちゃあかんで macOSならそもそも標準でPHP入ってるし最新版もHomebrewで簡単にインストール出来る
739 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 17:56:31.57 ID:C9GybJdQ0.net] >>729 もし使ってる人なら特定できないまでもある程度の見当は付くのではないかと思ってかなり省略しましたが、逆に他に何が必要でしょうか?
740 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 17:59:02.93 ID:AQgy4mwi0.net] >>727 エスパーで答えてみるw 呼び出し元のPHPを「A」とし、Aから呼び出されるPHPを「B」とすると Aを経由せずにBから直接MySQLに繋げられるか試してみたら? たぶん繋がらない
741 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 18:04:44.97 ID:AQgy4mwi0.net] >>728 ターミナルから php -i を実行して mampのdocルートに置いたPHP <?php phpinfo(); でを実行して比較してみ PHPのバージョン以外に違うところが分かるから 特にインストールパスに関する部分をよくみるといい
742 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 18:25:08.21 ID:C9GybJdQ0.net] >>731 レスありがとう。早速試してみました。 呼び出し元をaaa.php、exec()による呼び出し先をbbb.phpとすると、 ローカル環境だとaaa.php、exec()使用による呼び出しのbbb.php、bbb.php直接ともにsqlに繋がります。 サーバーだと、aaa.phpとそれ以外もexec()不使用であればどれもsqlに繋がります。またbbb.php直接でも繋がります。 サーバーでexec()を使ったbbb.phpによるsqlの接続が出来ない状態です。(今のところSQL以外は問題なく実行できてる) ホストは同じなのですが別のPHPからbbb.phpを実行しているのが原因でしょうか。サーバーの都合で別PHPを使っていてローカルでは同じPHPからの実行なので。。
743 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/02/01(水) 18:49:36.91 ID:2dY+W0qT0.net] >>733 1.サーバー環境 2.aaa.phpとbbb.phpとmysqlは全て1の同一サーバー上にあるのか 3.aaa.php内で実行されるexec()の内容(具体的にどうやってbbb.phpを呼び出してるか) 4.bbb.phpからmysqlへはどうやって繋いでるか(pdoその他) あたりを書いてみては? そもそもexec()を使って実行ってのを本当にする必要があるのかってところから疑問ではある
744 名前:デフォルトの名無しさん (ワッチョイ 6bc1-R94c) mailto:sage [2017/02/01(水) 19:00:17.38 ID:LECYUBIq0.net] まずどういうエラーで繋がらねぇのかが問題 つか出せる情報全部出せや何を出し渋っとんじゃ
745 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/02/01(水) 19:08:26.13 ID:z0RwPWf30.net] >>735 こういうアホ(に見られがちな初学者)は、 何が「情報全部」になるのかわからないんだよ だから、全部出せなんていうのじゃなくて ○○と△△と□□を書け と具体的に指示すべき
746 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 19:08:52.47 ID:AQgy4mwi0.net] こういうレベルの質疑所では少ない情報からエスパーで回答を導き出すのも1つの楽しみ方ではある いや質問する以上は出せる情報は出すべきなのは確かなんだけどw >>733 なんかあまり読まずに適当なこと書いてすまなかった
747 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/02/01(水) 19:19:51.15 ID:O7iUTg1Sa.net] >>736 ご尤もではあるがテンプレ読まない従わないはNG >>737 悪くはないが勘違いを生産しないためにもこっちがオススメよー エスパーが質問に答えるスレ ttp://echo.2ch.net/test/read.cgi/tech/1187922645/
748 名前:デフォルトの名無しさん (アウアウウー Sa7f-R94c) mailto:sage [2017/02/01(水) 19:39:38.68 ID:Dgu+KGMra.net] あんがとさんです >>729 ホームブロウ?実はこれを使いたくないというのがmamp使う理由で、まあ言って仕舞えばOS汚したくない病なんですよね、、、 今のところ仮想環境にもう1つmacOS入れるかたまに使う仮想Windowsにmampを入れようか検討 けど、リソース無駄だし快適に操作したいからmacOSに直接入れるか悩んでるんですよね 前にPythonとか勉強してたときはLinux仮想で何とでもなったんですが、mampがLinuxないから めんどくさがらずxammpとか使えば良いのか、、、 >>732 やってみたのですがパスはデフォの/usr/bin/phpでござった、というかよくわからんかったです
749 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/02/01(水) 19:47:06.68 ID:O7iUTg1Sa.net] >>739 homebrewなんかよりMAMPの方がよっぽど何やってるか分からんと思うのだが お前さんの現状がそれを証明してるでしょ homebrewが嫌なら標準のもの以外何使ったって一緒だし プログラムより先にその辺勉強したら?
750 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 21:05:47.39 ID:yFAqAUso0.net] >>739 もし可能であれば、 homebrewを使う or vagrantを使う 個人的には後者で、Lamp環境などをCentOSで構築したい派 ただしその場合、Linux環境を整える知識もいるけど、 サーバサイド開発者にとってLinux操作は欠かせないからやろうぜ
751 名前:デフォルトの名無しさん (ワッチョイ bf17-bE/B) mailto:sage [2017/02/01(水) 21:16:11.38 ID:+ImP5E6S0.net] >>740 あんまりその辺理解しないでMAMP使おうとしたのがそもそもだめだったのね 別の言語で環境とかでめんどくさい思いしたから楽できるなら楽しようかと思ったのが間違いか >>741 一応、Linuxのエンジニアだからそっちの知識はそれなりにあるんだけど、 さっとPHPの本とか勉強して簡単なものなら作れるくらいになりたいなーって思って ま、出直してきます
752 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/02/01(水) 21:23:04.08 ID:LECYUBIq0.net] >>742 Linuxのエンジニアの癖にwhichも知らんとかうっそだろお前
753 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 22:44:15.69 ID:yFAqAUso0.net] >>742 Linuxエンジニアなら、尚更mamp使う必要ないし vagrantなり、VM環境でやったほうがいいよ
754 名前:デフォルトの名無しさん (ワッチョイ bf17-R94c) mailto:sage [2017/02/01(水) 23:02:41.06 ID:+ImP5E6S0.net] >>743 ホントでっせ whichはわかるが、今回のお悩み解決に自力で繋がらなかったからここで聞いたんよ、許して >>744 アドバイス通りさっきsuseさんでphp7の環境作った!楽しようとしたのがあかんかった 実務で使うわけじゃないがmampで本番環境とか動かしてるところなんてなさそうだし 自分で環境作るってのは大事な勉強と痛感いたしました
755 名前:デフォルトの名無しさん (ワッチョイ 6f42-P4zY) mailto:sage [2017/02/01(水) 23:10:31.30 ID:OMBPerng0.net] >>727 よくあるトラブルとしては、環境変数周りかな localとサーバーで違ったりするから あとexecだと、パスが違うとか、インクルードがうまくできてないとかも多いけど エラーログとかに普通は何か出てるからわかると思うが
756 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/02/01(水) 23:23:53.32 ID:sVMiC1ZCa.net] たびたび質問失礼します。掲示板を作っているのですが10件ごとに表示するには どのように書けば良いでしょうか。現行では <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="css/bootstrap.min.css"> </head> <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $rows = json_decode(file_get_contents('back.json'), true); if (!empty($_POST['write'])) { $row = array( 'A' => $_POST['A'] ); array_unshift($rows, $row); file_put_contents('back.json', json_encode($rows)); } ?> <?php foreach($rows as $r): ?> <p><?php echo h($r['A']) ?></p> <hr> <?php endforeach ?> </body> </html> このような形になっております。色々調べてたのですが書き込み内容を一度格納してから 表示する場合でのやり方が分からず悩んでいます。どうか宜しくお願い致します
757 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/02/01(水) 23:35:28.37 ID:sVMiC1ZCa.net] >>747 追記です 掲示板のhtml等は入りきらないので省略しております [] [ここ壊れてます]
759 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/02/01(水) 23:36:54.53 ID:ciQGnh7G0.net] すでに存在してるサンプルで勉強したほうがいい
760 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/02/01(水) 23:40:56.03 ID:ciQGnh7G0.net] いまぐぐってみたところ。 PHP と SQLite を使った掲示板 https://oku.edu.mie-u.ac.jp/~okumura/php/sqbbs.php PHP+SQLite3で2ちゃんねるっぽい掲示板を作る - Qiita qiita.com/torokko/items/8a07519782f01a68c627 PHPとSQLiteで簡易BBSの作成 | 勉強したことのメモ taitan916.info/blog/?p=1923 八角研究所 : PHPで週末プログラミング(1) - 掲示板を作ってみよう(1) www.hakkaku.net/articles/20080818-260 jQueryとPHPとSqliteを使ったAjaxのシンプルなチャット picxpic.com/?p=104 SQLite 簡易掲示板 rrr-kb.grrr.jp/php/sqlite_bbs/index.php 掲示板 UTF-8版PHP掲示板,画像ファイル他アップロード,スマホ対応,PHP7対応,スパム対策 www.vector.co.jp/soft/unix/net/se453023.html .
761 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 23:57:07.31 ID:yFAqAUso0.net] >>747 デバッグ方法を参考までに教えます。 $rows = json_decode(file_get_contents('back.json'), true); # $rowsにはデータは格納されているか確認する var_dump($rows);exit; 問題なければ、 if (!empty($_POST['write'])) { # ここを通過しているか # $row配列を作る前に、適当にechoしてみる。 # exitもすること。 問題なければ、 file_put_contentsされているかを確認 中身のデータがどうなっているのか、 順序もって確認してみましょう。 ここまでできれば道は開かれる。
762 名前:デフォルトの名無しさん (ワッチョイ 13d4-xTzd) mailto:sage [2017/02/02(木) 00:09:14.77 ID:Vu6mO5aQ0.net] データが配列に入ってるぽいからarray_slice()で10件取り出すとか
763 名前:デフォルトの名無しさん (アウアウウー Sa07-gztn) [2017/02/02(木) 00:52:50.08 ID:8sL76eTEa.net] >>750 わざわざありがとうございます。もちろん参考にはさせていただきたいのですが あくまで一度格納したデータを書き込んだ上で件数ごとに表示させたいのです その先行事例が見つけられず・・・もちろんそもそも参考にできないのも力不足ゆえですが >>751 ありがとうございます。すみません、デバックというのもやったことが無いのですが このコードを書き込んでサイトが表示されれば問題が無いというようなことでしょうか? >>752 ありがとうございます 調べたのですがどのように使えば良いか検討つきません・・・ この場合、<?php foreach($rows as $r): ?> の部分から変える必要があるという事でしょうか
764 名前:デフォルトの名無しさん (ワッチョイ cf7b-gPBI) mailto:sage [2017/02/02(木) 01:31:57.69 ID:QtNjUxgZ0.net] homebrew を使わなかったら、パッケージの依存関係を管理できない。 Linuxでもdeb/rpm を使わなかったら、何もできない パッケージマネージャーを使わないで、自分でパッケージを入れるなんて、100%無理だろ。 複数のパッケージのインストールの順番が異なるだけで、違ってくる。 ABC, BCA という順番では、結果が違うし、そんなことまでユーザーがわかるわけがない Chef, vagrant, Docker などのレシピを取ってくればいい Chefのレシピも結局は、OSの種類を見て、debian系ならdeb、RedHat系ならrpmを使うから、 ユーザーは、個別のパッケージマネージャーを意識しないで済むだけ
765 名前:デフォルトの名無しさん (ワッチョイ 03c1-yene) mailto:sage [2017/02/02(木) 04:01:01.54 ID:ICaoPi9S0.net] >>745 何ていうかPHPの初心者ってだけなら分かるけどLinuxのエンジニアがその程度の問題を解決出来ないのは許されねぇと思うわ
766 名前:デフォルトの名無しさん (ワッチョイ c346-1ST5) mailto:sage [2017/02/02(木) 12:25:55.17 ID:sBmZcLbl0.net] >>753 で、751が書いてくれてる var_dump($rows); exit; は実行してみた? 752が書いてくれてる array_sliceのPHPマニュアルを読んで print_r($rows, 0, 2); とかは試してみた? もしそれすら試さずに質問してるなら ハッキリ言うけどプログラミングには向いてないわ 手遅れにならないうちに違う道に進むことをおすすめする
767 名前:デフォルトの名無しさん (ワッチョイ b3c9-C7TH) [2017/02/02(木) 15:08:51.61 ID:t2qREDFK0.net] 例外を別のファイル(呼び出し元)で受けたいのですが、どのように例外と判断すればよいのでしょうか? a.php//呼び出し元 <?php $hoge = new classB(); $result = $hoge->get(); // この$hoge->get()でエラー発生(PDOでの接続エラーとか) // エラーをa.phpで処理(エラー内容の取得と、エラーメッセージ表示)したい ?> b.php//呼び出される側 <?php class hoge { function get(){ try { //pdoで接続とか } catch (PDOException $e) { //サイトとかの例だと、ここでエラーメッセージ等の処理をしてしまいます。 //呼び出し元のa.phpで、エラー時の処理をしたいのです。 } } どなたか教えてください。
768 名前:デフォルトの名無しさん (ワッチョイ c346-1ST5) mailto:sage [2017/02/02(木) 15:15:09.65 ID:sBmZcLbl0.net] >>757 例えば Bで期待された結果が得られた時は”○”と出力 そうでなければ”×:例外内容”を出力 AはBの出力結果(○ or ×)によって処理 ○とか×は例で書いただけで実際はHTTPのステータスコードみたいに 200ならOK とか 50Xならエラーとか きちんと仕様を決めるといい web APIとか扱ったことないのかな? あれと同じことだよ
769 名前:デフォルトの名無しさん (ワッチョイ 03c1-4SR0) mailto:sage [2017/02/02(木) 16:01:33.97 ID:ICaoPi9S0.net] >>757 例外はレイヤーで設計する 低レベルAPIが投げた例外は高レベルAPI内部でキャッチして集約(元々の例外は$prevでチェーン) 或いはキャッチしたAPIで処理し切る(復旧するなり落とすなり) いずれにしてもどのレイヤーが何処までの例外に対応するかは決めておかにゃならん 途中でキャッチしてエラー吐く処理して親に例外通知しないならそこで例外処理は完結していなければならない 例外安全とかも考えるべし
770 名前:757 (ワッチョイ b3c9-C7TH) mailto:sage [2017/02/02(木) 18:02:37.06 ID:t2qREDFK0.net] >>758 web APIとか扱ったことないです。 >>759 すみません。おっしゃることの半分も理解できません。 a.phpでエラーが起きているのかどうか、エラー内容も知りたいのですが・・・。 もし初心者向けの質問スレがありましたら、ご紹介してもらえませんか? ちょっと探したのですが見つかりませんでした。 サイト検索すると、例外処理は、例外の発生したファイル(箇所)で 行うのばかりで、他のファイルで処理する方法が見つけられませんでした。
771 名前:デフォルトの名無しさん (ワッチョイ d356-1ST5) mailto:sage [2017/02/02(木) 18:06:19.95 ID:I2XsCSbD0.net] 758の内容が理解できないならYahoo知恵遅れとかのがいいと思う
772 名前:デフォルトの名無しさん (ワッチョイ 8f5b-1ST5) mailto:sage [2017/02/02(木) 18:24:29.29 ID:5vn48hDV0.net] >>757 ちょっと質問の意図がわからんのだが a.phpでエラーが出ているの? catchのPDOExceptionをa.phpに表示させたいの? まずやりたいことを教えてくださいな
773 名前:デフォルトの名無しさん (ワッチョイ 8f5b-1ST5) mailto:sage [2017/02/02(木) 18:30:28.72 ID:5vn48hDV0.net] >>757 追記すると、 PDOExceptionで吐かれたエラーを そのままechoさせないで、変数なり渡す それをa.phpで$resultが判定 catchでどんな書き方してるかわからんけど 要領としてはこんな感じ ただ、これをする意味があるのかは不明
774 名前:デフォルトの名無しさん (JP 0H07-4SR0) mailto:sage [2017/02/02(木) 18:32:25.93 ID:yqvkGsV5H.net] >>760 親に例外通知したいなら例外をキャッチしないか, キャッチした例外をそのまま投げ直すか, キャッチした例外を高レベルの例外でラップして投げるかの何れか
775 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/02(木) 18:49:28.99 ID:bt5fyjk60.net] get()のとこでしないでa.phpで例外処理するだけ
776 名前:デフォルトの名無しさん (ワッチョイ d3a0-TTqS) mailto:sage [2017/02/03(金) 01:16:26.70 ID:5q5mSgpk0.net] >>684 です。 PEARやHTTP_Request2をなんとか準備して一先ず、ブログに記事をアップロードできるようになりました。 ですが、いくつか問題が残りました。 1本文はすべて「記事を書く」に入ってしまい「続きを書く」に入れることができない。 2画像をアップロードして、ブログ上での画像のURLの取得方法がわからない。 3タグが追加できない。 1と3も問題ですが、2ができないと非常に困ったことになります。 何か良い方法はないでしょうか?
777 名前:デフォルトの名無しさん (ワッチョイ 8f5b-1ST5) mailto:sage [2017/02/03(金) 03:58:43.49 ID:Ixnwxz7P0.net] >>766 状況わからないけど ブログからどういう形式でデータを取得してるの? APIでやってるの?
778 名前:デフォルトの名無しさん (ワッチョイ d3a0-TTqS) mailto:sage [2017/02/03(金) 10:56:49.07 ID:5q5mSgpk0.net] 正直、初心者過ぎて何やってるのかほとんどわからない とりあえず https://github.com/seiyaan/LiveDoorBlogAtomPub output-ism.info/2014/03/08/1561/ でアップロードは確認できた。 主に下のやつでいろいろ試している状態
779 名前:757 (ワッチョイ b3c9-C7TH) mailto:sage [2017/02/03(金) 11:15:01.38 ID:eixaQSD90.net] >>764 ,>>765 ひょっとしてエラーは呼び出し元へ戻ってくるのでしょうか? b.phpのクラスhoge->get()で起きたエラーは、呼び出し元のa.phpで、 try { $hoge->get();} catch (PDOException $e) { echo $e->getMessage(); } とすれば、hoge->getでのDB接続エラーを捕捉できるということでしょうか?
780 名前:デフォルトの名無しさん (ワッチョイ 6f50-cqZ0) [2017/02/03(金) 12:47:01.16 ID:Nsh1g7Ol0.net] >>746 サーバーの設定やらなんやらいじったらしばらくサイトが表示されなくなってしまって対処してました。。 環境変数やパスは確認済みで、考えられるのはsocket周りかなとは思うんですけど、ini等で変更してみても上手く行かないんですよね ググってもその例が出てこなくてどうにもならない。。 目的は非同期の別プロセスで重い処理をしたいので、もう少し調べてみてダメだったら諦めてajaxでやろうかと思います
781 名前:デフォルトの名無しさん (ワッチョイ c359-0MWP) mailto:sage [2017/02/03(金) 14:18:44.41 ID:XND6iDtO0.net] まだ直せないのかエンジニア
782 名前:デフォルトの名無しさん (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/03(金) 15:23:46.05 ID:ZDAGU2jx0.net] インスタンス生成時に複数のメソッドを実行する場合 function __construct() {
783 名前:772 (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/03(金) 15:25:20.61 ID:ZDAGU2jx0.net] 書き込み押しちゃいました function __construct() { $this->a; $this->b; } public function a() {} public function b() {} といった使い方をしてもいいんでしょうか?
784 名前:デフォルトの名無しさん (ワッチョイ d356-1ST5) mailto:sage [2017/02/03(金) 16:32:04.20 ID:AZd6IUX40.net] 逆に何でだめだと思ったの? あと好みの問題かもしれないけど public function a() { return $this; } public function b() { return $this; } みたいにしておくと $this->a()->b(); みたいにメソッドチェーンできてスマートかな
785 名前:デフォルトの名無しさん (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/03(金) 16:42:27.65 ID:ZDAGU2jx0.net] >>774 レスありがとうございます __construct内でプロパティの初期化以外の実例が見つけられなかったので 一般的には使われていないのかと思いました
786 名前:デフォルトの名無しさん (ワッチョイ 03c1-yene) mailto:sage [2017/02/03(金) 20:29:36.44 ID:Y5WAIXu10.net] >>769 例外は「キャッチされない限り」コールスタックを遡り続ける throw new Exception(); で例外は投げられるから自分で挙動を確かめてみるといい (勿論実用上はExceptionかその子孫を継承した例外クラスを実装して投げる)
787 名前:デフォルトの名無しさん (ワッチョイ 1342-vqxm) mailto:sage [2017/02/03(金) 23:26:01.79 ID:nOd+Bj3o0.net] >>770 あーなるほど、バックグラウンドで動かすってやつですね。 sshで入ってコマンドラインで実行するとOKで execで動かすとダメ、ということだと、やっぱり環境変数関連が一番怪しいかな execに限らないけど、バッチとかでphpを動かす時は まずカレントが違う可能性も高いかな。なるべくフルパスで指定するようにしてたな。 環境変数も最低限しか設定されてないので、環境変数に依存するのはやめた方がいい(MySQLの接続先を環境変数でやるとかよくあるから) もしくはシェルスクリプト作って、その中で export するとか まぁ相当Linuxに詳しくないと・・よくハマるよね(自分もこの前ハマったw)
788 名前:デフォルトの名無しさん (ワッチョイ c359-0MWP) mailto:sage [2017/02/04(土) 02:11:09.03 ID:yz7EyBEj0.net] >>777 そも、実行しているPHPが意図しているものかの確認をしているかどうかが彼のレスからは読み取れなくないか
789 名前:デフォルトの名無しさん (ワッチョイ 33ce-0MWP) mailto:sage [2017/02/04(土) 16:29:21.48 ID:n3v1YVLA0.net] 下記の記述で、Aパターンの場合はinclude先のsub.php内にて、 $Foo->method()だけでFoo内のメソッドを呼び出せるんですが、 Bパターンではsub.php内で再びFooインスタンスを生成しないと method()にnot objectのエラーが出て、呼び出すことができません。 sub.phpから直接Foo内にアクセスする場合は sub.phpをnew Fooと同一のメソッド内でincludeする必要があるんでしょうか? Aパターン <?php //main.php class Example { public function sample() { $Foo = new Foo(); //Foo.php include 'sub.php'; } } $example = new Example; $example->sample(); Bパターン <?php //main.php class Example { public function sample() { $Foo = new Foo(); //Foo.php $this->bar(); } public function bar { include 'sub.php'; } } $example = new Example; $example->sample();
790 名前:デフォルトの名無しさん (ワッチョイ 7f17-3Ibi) mailto:sage [2017/02/04(土) 23:09:46.50 ID:VQZ3VZ/F0.net] phpでmysqlに’日付’,と'オナぬした回数'をそれぞれ一日ごとに格納しています mysql_fetch_arrayを使いechoすると 1日目、2日目、3日目、、、に対して 5回抜、2回抜、3回抜、、、と帰ってくるのですが4日目に入力し忘れた場合 1日目、2日目、3日目、5日目、、 5回抜、2回抜、3回抜、9回抜、、となります 入力忘れの日に自動で「日付」と「0回」を補完するにはどうすれば良いのでしょうか? テーブル作成時のSQL ↓ CREATE TABLE onanimaster( onani int(11), nukibi date default '0000-00-00')
791 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/05(日) 11:42:59.55 ID:pJp2c9va0.net] ・毎日(0回の日にも)ちゃんとinsertをする ・格納前に最後のnukibi_dateを取り出して今日と日付が連続するか比較する ・last_inserted(next)_onani, last_inserted(next)_dateを管理するテーブルを作る 好きなのどうぞ
792 名前:デフォルトの名無しさん (ワッチョイ d3d6-RMO+) mailto:sage [2017/02/05(日) 21:48:00.12 ID:xV17TEr+0.net] >>780 ばかじゃね? 1日5回も抜いてるから後々息が切れてきて抜かない日が出来るんじゃん。 最大2回でがまんすればいいんだよ。そうすれば断続的に抜けるから。
793 名前:デフォルトの名無しさん (ワッチョイ cf42-yene) mailto:sage [2017/02/05(日) 22:28:23.20 ID:z02c26Xt0.net] 後からで良いから、抜けてる日付のデータを入れておくと楽だよ
794 名前:デフォルトの名無しさん (ワッチョイ 33f8-dbIh) mailto:sage [2017/02/05(日) 23:05:41.71 ID:rvJfY1g90.net] 事前にカレンダーテーブル作ってupdate していくか 後からカレンダーテーブル作って連結してnullはゼロにする
795 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/05(日) 23:15:32.54 ID:pJp2c9va0.net] 781だけど ちゃんと読んでなかったスマンコ
796 名前:デフォルトの名無しさん (ワッチョイ 7f17-LFJd) mailto:sage [2017/02/06(月) 01:05:03.78 ID:/6p41uPl0.net] >>781 780ですが ・last_inserted(next)_onani, last_inserted(next)_dateを管理するテーブルを作る こちらの方法が気になりました ググっても last_insted_id() 関係の記事やページしか見つけられなくて.... 参考になるようなマニュアル、リファレンス、記事などありましたら教えていただけないでしょうか?
797 名前:デフォルトの名無しさん (ワッチョイ 1376-yene) mailto:sage [2017/02/06(月) 01:07:34.79 ID:MbdNwU5U0.net] cakephp3って最初にアクセスするページのデザイン変わりましたか? 参考サイトだと緑で、 get the ovens ready と書いてあるところが、 自分のだとヘッダーが赤で welcome to cakephp 3.3.13 red velvet. build fast grow solid って書いてあるんだけど composer 経由でのインストールだからバージョンも選べないし、このまま進めていいのか不安です
798 名前:デフォルトの名無しさん (アウアウウー Sa07-J+fW) mailto:sage [2017/02/06(月) 01:19:49.57 ID:Y3CDv6Uea.net] >>787 かわったよ
799 名前:デフォルトの名無しさん (ワッチョイ 1376-yene) mailto:sage [2017/02/06(月) 01:23:11.63 ID:MbdNwU5U0.net] >>788 ありがとうです。 このまま進めたいと思います。 たいへん助かりました。
800 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/06(月) 06:46:03.10 ID:BQS7D9EJ0.net] >>786 それは出てこないだろうね 英語の意味通りで別にそういう関数があるって話じゃないから 早い話が設定値を保存するテーブル(KVS)作れってことだけど onaniってのは回数じゃなくて日数だと思ってたし 質問読んでなくてほんとすまんかった 最後挿入したnukibiをとるだけなら SELECT nukibi FROM onanimaster ORDER BY nukibi DESC LIMIT 1 で出来る 挿入する前にこれと昨日の日付比較して日数に空白があれば その分だけINSERTするようにすればいいんちゃう
801 名前:790 (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/06(月) 07:12:47.14 ID:BQS7D9EJ0.net] あ、もう1つ追伸しとくと これからの方策を示しただけで 現在のぶっ壊れたデータベースを修正するって話じゃないんでそこよろしく
802 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 09:57:07.81 ID:LFg06LIZ0.net] >>790 抜いてばかりの童貞にinsertは無理だろ
803 名前:デフォルトの名無しさん (アウアウウー Sa07-VnDS) mailto:sage [2017/02/06(月) 19:16:02.72 ID:ozwc9aFfa.net] >>792 誰がうまいこと言えと
804 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 19:50:18.02 ID:Qfr8LDq90.net] データベーススレ死んでるのでここで 自分の「お気に入りの本」を無制限で登録できるシステムがあるとき、 そのお気に入りの本の順序もデータベースへ保存したいと考えています どのようなテーブル構造にすればよいでしょうか?
805 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 19:53:11.14 ID:LFg06LIZ0.net] >>794 順序って何さ?
806 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 19:56:54.25 ID:Qfr8LDq90.net] >>795 1番目、2番目・・・などのユーザーが本を並び替えした順番のことです これはただの順序であって、ランキング的な意味合いではありません
807 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 20:00:24.61 ID:LFg06LIZ0.net] 列1: 本のタイトル 列2: 順番 でいいんじゃないか?
808 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 20:17:46.69 ID:Qfr8LDq90.net] いい感じのパッケージありました https://github.com/spatie/eloquent-sortable
809 名前:デフォルトの名無しさん (ワッチョイ d3d6-RMO+) mailto:sage [2017/02/06(月) 21:57:45.78 ID:c35vGYE60.net] >>797 プライマリキーくらいつくれ、能無し
810 名前:デフォルトの名無しさん (ワッチョイ 7f17-pD/q) [2017/02/07(火) 00:04:49.40 ID:Mn/5HQ4m0.net] >>780 ですが 一応できました もっと効率のいい書き方、変数の使い方、抜き方、等ありましたら教えてください pastebin.com/pHhnxtc7
811 名前:デフォルトの名無しさん (ワッチョイ 7f17-pD/q) [2017/02/07(火) 00:10:20.64 ID:Mn/5HQ4m0.net] >>800 すいませんミスりました 30行目 39行目 $benkyoukaisibi とありますが $nukikaisibi のまちがいでした
812 名前:757 (ワッチョイ b3c9-C7TH) [2017/02/08(水) 09:18:47.18 ID:FV7NOXvo0.net] お礼が遅くなりました。なんとなく(?)例外処理がわかりそうな気がします。 あと一つ関連で教えていただきたいのですが A.php で try{ B.php内の関数} catch($error){例外処理} としているとき、 B.php の関数で、DB処理をしてトランザクション処理をするときは、 B.phpで処理の必要があると思うのですが、そのあと、改めて例外を投げて A.phpで補足するのが定番なのでしょうか。 例えばB.php 内の慣習(A.phpから呼び出される)で try{sql処理} catch($error){ロールバック処理;throw $error} といった形ということです。
813 名前:802 (ワッチョイ b3c9-C7TH) [2017/02/08(水) 09:19:56.66 ID:FV7NOXvo0.net] ごめんなさい。関数というのは、B.phpで作られるクラスのメンバ関数のことです。
814 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/08(水) 09:23:32.00 ID:+f0LmjaI0.net] PDOのエラーモードを例外にしてんなら、 全部PDO関連の例外はPDOExceptionに集約されるでしょ。 そこでトランザクション中ならロールバックすればいいだけ。 php.net/manual/ja/pdo.intransaction.php
815 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/08(水) 09:40:39.44 ID:+f0LmjaI0.net] try { $pdo = new PDO(〜); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 〜 //実行 } catch (PDOException $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } } もしくは try { $pdo = new PDO(〜); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 〜 try { //実行 } catch (PDOException $e) { $pdo->rollBack(); } } catch (PDOException $e) { } 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
816 名前:デフォルトの名無しさん (JP 0Hff-w8tn) mailto:sage [2017/02/08(水) 10:14:53.81 ID:WP/XTf2IH.net] >>802 基本的に、データベースアクセスするメソッド内ではtransactionを開始しないこと(呼び出し側で処理する)。 なので、B内ではtry-catchは不要。 A内でcatchするのがrollbackの為だけなら、それも不要。commitしなければ自動ロールバックされるし。 データベースエラーのときだけログをごにょごにょしたいなら、exception handler内でexceptionのクラスを調べて、 PDOExceptionの場合にそうすればいい。
817 名前:757=802 (ワッチョイ 9bc9-Ev9t) [2017/02/09(木) 13:06:47.11 ID:90f1Xg3G0.net] >>804 ,805,806 説明が下手でごめんなさい。ロールバックの仕方がわからないのではなくて、 呼び出し先(B.php)でロールバックされたことをA.phpで知って「登録されませんでした」と いったメッセージをA.phpで送りたいんです。 >>806 A.phpでDB接続のロジックを書きたくないんです。接続せずにトランザクション開始ってできないですよね。 B.phpのクラスでDB関連のロジックをまとめて、A.phpでは結果だけ取得したいです。 結果というのは、正しい結果もあれば例外オブジェクトと思っています。 なので、A.phpでtry{b->function}catch($e){例外処理}としたいのですが、考え方が おかしいでしょうか?A.phpがコントローラ、B.phpがロジックの場合、どのように処理するのが 定番なのでしょうか
818 名前:デフォルトの名無しさん (JP 0H0e-oA82) mailto:sage [2017/02/09(木) 13:45:35.85 ID:dfCX7ZDmH.net] >>807 例えば、B.phpの立場と同じUserModel.phpを考えてみましょうか。 まず、class UserModel自身がデータベース接続を確立するのはこのましくありません。 なぜなら、ユーザの登録と同時に何かの登録をしたいとき、 $user = new UserModel(); $foo = new FooModel(); $user->add($user_data); $foo->add($foo_data); と書くと思いますが、トランザクションはこのコードの外側で操作する必要があります。 $conn = DBConnection::getConnection(); $conn->begin(); $user = new UserModel($conn); $foo = new FooModel($conn); $user->add($user_data); $foo->add($foo_data); $conn->commit(); このコードがコントローラに存在するなら、データベース接続はコントローラで行わなければならないということになります。
819 名前:デフォルトの名無しさん (JP 0H0e-oA82) mailto:sage [2017/02/09(木) 13:47:44.35 ID:dfCX7ZDmH.net] それから、上でも書きましたが、エラー発生後他の処理をしないなら、exception handlerで全てのexceptionを処理するのが簡単です。
820 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/09(木) 18:57:33.26 ID:jEjnqqv00.net] >>807 呼び出し先でエラーがあったらメッセージを出したいってこと? 自分だったら、global変数にエラーメッセージを入れて、それを出力するようにするかなぁ
821 名前:デフォルトの名無しさん (オッペケ Srf7-S/g0) mailto:sage [2017/02/09(木) 20:01:16.79 ID:rM/fQ6YVr.net] おれ、いろんなサイトでB.phpでDB接続して、A.phpでも接続してるけど、特になんの問題もないよ 動けばいい、多少のロジックの無駄は気にすんな
822 名前:デフォルトの名無しさん (ワッチョイ 26c9-cGUq) [2017/02/09(木) 20:24:33.59 ID:3FO030YH0.net] foreachで、途中からループを始めたいときはどうしたらいいの? 最初のn個飛ばすとか
823 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/09(木) 20:46:25.53 ID:m/rQHIL40.net] 欠陥コードだから構造見直し
824 名前:デフォルトの名無しさん (ワッチョイ 0f59-cGUq) mailto:sage [2017/02/09(木) 21:30:00.55 ID:PVymcmPW0.net] >>808 B.phpはモデルじゃなくサービスレイヤみたいに読めるけど。
825 名前:デフォルトの名無しさん (ワッチョイ 126b-T9/6) [2017/02/09(木) 22:51:03.38 ID:Uf58p31N0.net] オブジェクト指向プログラミングのお手本になるようなオープンなソースを教えてほしいです。 PHPのオブジェクト指向プログラミングの基礎を学んだのですが、今ひとつクラス設計がわかりません。 神クラスにならないようにするというのはわかったのですが、実体の無いものをクラス化する時、 例えばデータをファイルに書き込むという操作群があるとして、これをどういうクラスに入れればいいのかということです。 今までは適当に関数にまとめて呼び出していたのですが、これをOOPにするならどういう風に書けばいいのかわかりません。 私が読んだことのあるPHPプログラムは古いバージョン用に書かれたOOPとは無関係の掲示板スクリプトなどです。 出来ればPHPの標準関数・機能だけで完結しているものがあればありがたいです。
826 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/09(木) 23:01:22.62 ID:m/rQHIL40.net] >>815 フレームワークとか覗いてみるといいかもね https://github.com/laravel/framework
827 名前:デフォルトの名無しさん (ワッチョイ dfc1-CIv3) mailto:sage [2017/02/10(金) 00:11:57.81 ID:Vc9wXXK10.net] >>807 だからBで例外投げてAでcatchすればいいんじゃねーの
828 名前:812 (ワッチョイ 26c9-cGUq) mailto:sage [2017/02/10(金) 10:32:44.34 ID:6P3lfBfG0.net] どうしたらいいかな
829 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/10(金) 10:38:32.76 ID:8U0cA5Uo0.net] forを使って下さい
830 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/10(金) 13:22:55.21 ID:iqUwwggS0.net] >>812 $ary = array(1, 2, 3, 4, 5, 6); print_r($ary); echo "\n"; foreach ($ary as $k => $v) { if ($k < 3) { continue; } echo "{$k} => {$v}\n"; } echo "\n"; $ary = array_slice($ary, 3); foreach ($ary as $k => $v) { echo "{$k} => {$v}\n"; } とか forやwhile使ってもいいけど
831 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/10(金) 13:26:14.20 ID:iqUwwggS0.net] >>815 Zend Frameworkのソースコードはお手本みたいな規約だしオススメ
832 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/10(金) 14:32:54.04 ID:lMP7OKhp0.net] array pushの公式に もし配列にひとつの要素を加えるために array_push() を使用するなら、 関数を呼ぶオーバーヘッドがないので、$array[] = を使用するほうがいいです。 って書いてあるけど、下みたいな書き方でもオーバーヘッド発生するのかな foreach ($variable as $value) { array_push($array, $value); }
833 名前:デフォルトの名無しさん (ワッチョイ dfc1-S0So) mailto:sage [2017/02/10(金) 14:43:11.39 ID:Vc9wXXK10.net] >>822 なんで発生しないと思うの?
834 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/10(金) 15:00:30.89 ID:RYh3fTnw0.net] >>811 自分は気にするけどなぁww DB関連のコードを全てB.phpでするようにして、A.php側ではDBを意識しないコードにしたいとかよくある。 あとでDBが変更になることもあるし PDO使ってても、一部KVSに変更とかあると対応できないし(お願いしたことあるw) DB一つでトランザクション完了してた時は楽でよかったwww
835 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/10(金) 16:22:22.39 ID:lMP7OKhp0.net] >>823 関数に閉じ込めてる間はpushが稼働してると思ったから
836 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/10(金) 16:29:42.22 ID:RYh3fTnw0.net] foreachは関数じゃなく、ループですが・・ オーバーヘッドがあるから、ループの中で使うのはおすすめしないと言うことなんだけどね。 ちなみに、array_mergeという関数があって こちらを使えば・・ループの代わりに関数を使うことで・・という説明になるね
837 名前:デフォルトの名無しさん (オッペケ Srf7-S/g0) mailto:sage [2017/02/10(金) 16:35:15.11 ID:8f4rSBP3r.net] どうせ誰が作ってもクソコード
838 名前:ネんだから動いてればよくて、なんかエラーでてたり客に文句言われたら対応すりゃいい [] [ここ壊れてます]
839 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/10(金) 16:39:09.45 ID:yKHSCA+P0.net] 多少の処理速度の差やオーバーヘッドを気にして見通しの悪いコードにするのは本末転倒 ましてやPHPだし
840 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/10(金) 20:36:55.90 ID:B/44UtXJa.net] >>825 それループで回る分だけ毎回array_push呼ばれるから
841 名前:デフォルトの名無しさん (ワッチョイ beaf-cGUq) [2017/02/11(土) 01:35:29.95 ID:sRxxkJoY0.net] $ary[] = これの方が美しいし速い 他の言語じゃ無理だからな
842 名前:デフォルトの名無しさん (ワッチョイ 9f4a-1VpQ) mailto:sage [2017/02/12(日) 17:20:35.17 ID:abtsR4dg0.net] >>830 どれくらい速いの?
843 名前:デフォルトの名無しさん (ワッチョイ beaf-cGUq) [2017/02/12(日) 18:06:30.99 ID:wFV2vg550.net] >>831 二通りにしかないんだからarray_pushより速いで十分でしょ?
844 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/12(日) 21:51:06.88 ID:QFyd4EUF0.net] kakaku.com/item/K0000820062/ 価格.comみたいなK0000820062ってどういう風に作るんだろう UUIDじゃないよね?
845 名前:デフォルトの名無しさん (ワッチョイ 7230-jWyY) mailto:sage [2017/02/12(日) 21:59:19.74 ID:xZhsq1SY0.net] なんかのIDにK付けて0埋めしてるだけちゃうん
846 名前:デフォルトの名無しさん (ワッチョイ 83d6-Frzy) mailto:sage [2017/02/12(日) 23:54:04.06 ID:GioNsZNN0.net] >>833 おまえ、頭がやばいよ…
847 名前:デフォルトの名無しさん (ワッチョイ 265b-ENO3) mailto:sage [2017/02/13(月) 10:24:20.63 ID:7hOSszMQ0.net] >>833 プログラミングの基礎を勉強するべき
848 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/13(月) 12:03:26.71 ID:MX/uxF0s0.net] >>831 そこで自分でコード書いて試そうという発想にならないならプログラミングには向いてないと思う 人間には得手不得手ってあるからね 手遅れになる前に他の道を探そう
849 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/13(月) 12:53:46.07 ID:dq41sjDl0.net] protected function getResponseGroup(): array { return $this->responseGroup; } こんな感じでわざわざ取得メソッド使うのって、型の強制できるぐらいのメリットしかないのかね
850 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/13(月) 13:48:40.27 ID:MX/uxF0s0.net] >>838 そこら辺は設計思想にもよるし”これが絶対に正しい”というのは無いかな ”getter setter”とかでググってメリット・デメリットを理解した上で”自分の中での正解”を探せばいいのではと
851 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/13(月) 16:03:15.51 ID:KMmRwMwBa.net] >>838 子クラスに親クラスのプロパティを絶対に変更させないという強い意志が感じられる(小並
852 名前:デフォルトの名無しさん (ガラプー KK4b-4eBQ) mailto:sage [2017/02/13(月) 18:39:07.72 ID:qWBqE6jZK.net] 「$this->」 これを何十回も入力させるってバカみたい。
853 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/13(月) 18:52:43.00 ID:pn1QtbZ90.net] そう思うなら自分好みのパーサー書けばいいんじゃね
854 名前:sage (JP 0Hfe-JgBl) [2017/02/14(火) 12:57:43.87 ID:vlYZpaj3H.net] すみません教えてください。 ドキュメントルートが/home/virtual/id/public_htmlとして、一つ上のパスを取得したいとします。 (上の例なら/home/virtual/id) perlで $ENV{'DOCUMENT_ROOT'} =~ /(.+)\/(.+?)/; my $path = $1; これと同じことをPHPでやりたいのですが、見当が付きません… よろしくお願いします。
855 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/14(火) 13:38:34.23 ID:BZw4l4zq0.net] dirname($_SERVER['DOCUMENT_ROOT'])
856 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/14(火) 13:44:44.59 ID:AvrQL4xh0.net] dirnameのマニュアル読むといろいろ簡単にできて便利だよ php.net/manual/ja/function.dirname.php 今確認したら、PHPってファイルシステムの関数めちゃあるね。
857 名前:843 (JP 0Hfe-JgBl) mailto:sage [2017/02/14(火) 13:49:26.20 ID:vlYZpaj3H.net] >>844 >>845 ありがとうございます!! こんなの直接できるんだ。。唖然。。
858 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/14(火) 16:16:39.35 ID:vX4Pr1L+a.net] Pythonのos.path, Rubyのpathname, PerlにだってFile::Specがあるんだぜ? ファイルシステム依存なんだし組み込みじゃなくとも標準ライブラリでラップされてて何も不思議じゃない
859 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/14(火) 17:26:18.09 ID:i5SPUrbm0.net] >>846 つか>>843 のperlのソースコードの意味(正規表現)は理解できてるんだろうか? PHPでも正規表現を使えば似たようなコードで実現できるでしょ もちろん1つ上のパスを取得する「だけ」なら>>844 のがスマートだけど
860 名前:デフォルトの名無しさん (ワッチョイ 1246-3OfB) [2017/02/14(火) 17:46:30.89 ID:PYBh6Cc20.net] Xcodeの質問ってここで良い? view controllerでそれぞれのiPhoneの画面サイズがインプットされてない? 出ないんだが?誰か解決策教えてくださいな
861 名前:843 (JP 0Hfe-JgBl) mailto:sage [2017/02/14(火) 18:39:19.55 ID:vlYZpaj3H.net] >>846 PHPの正規表現の後の$1、$2…が理解できんのです。 誰が作ったのかさえわからん、みんな逃げちゃった(=PHPわかる人が誰もいない+私もPHP書いたこと一度もない)ものを触らざるを得なくなって。 置換もさっぱり。少なくともs/before/after/ig;みたいに簡単じゃないことだけは昨日知った…
862 名前:デフォルトの名無しさん (ワッチョイ 0f59-cGUq) mailto:sage [2017/02/14(火) 19:45:33.94 ID:GvFlLFXU0.net] >>850 sed分かるなら何の問題もないでしょ
863 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/14(火) 21:45:49.32 ID:BZw4l4zq0.net] >PHPの正規表現の後の$1、$2…が理解できんのです。 >>843 で後方参照して同じことしてるじゃん? echo preg_replace('/(.+)\/(.+)?/', '$1', '/home/virtual/id/public_html') [JS] '/home/virtual/id/public_html'.replace(/(.+)\/(.+)?/, '$1') [Rb] '/home/virtual/id/public_html'.gsub(/(.+)\/(.+)?/, '\1') [Py] re.sub(r'(.+)/(.+)?', '\\1', '/home/virtual/id/public_html') Perlが同じように書けるかは知らないけど テキスト処理能力を進化させすぎたPerlが多分特殊な方
864 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/14(火) 22:33:22.74 ID:aTcP7cxLa.net] 置換じゃなくてキャプチャしたいんでしょ マニュアルのpreg_match見れば分かるけどキャプチャ保存用に引数一個追加する必要がある
865 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/14(火) 23:05:03.22 ID:AvrQL4xh0.net] Perlの書き方は、シェルスクリプトの経験があればなんとかなるけど 何にも知らない人が新しくプログラムを学ぼうとすると 癖が多すぎてwww まぁプログラムが好きで、プグラムを組むことが目的な人が多い感じするよね。
866 名前:843 (JP 0Hfe-JgBl) mailto:sage [2017/02/15(水) 09:52:31.78 ID:dsR3IgXDH.net] >>852 その位置に$1か… ありがとうございます。 >>853 書き方がわからなくて、最後の/以降の文字列を取得してから空文字列で置換しようとしてもうまくいかず、splitで分割して前方だけを$_[0]のような形で取得しようとしても空文字が返り… 一昨日からいろんなところをググりながら調べているですが、マスターできる気がしません… >>854 ご想像通り?シェルとPerl以外書いたことがありません(ExcelのマクロとVWD2005のC#はほんの少し触った)。 みなさまありがとうございました。がんばってみます。。
867 名前:デフォルトの名無しさん (ワッチョイ 26c9-cGUq) mailto:sage [2017/02/15(水) 10:57:58.02 ID:auzGmUVk0.net] >>855 シェルやperlを書いたことがあるなら大丈夫でしょ シェル芸とかいまだにマニュアル読みながらじゃないと書けないわ
868 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/15(水) 14:03:33.63 ID:VOjsPlCF0.net] >>855 DOCUMENT_ROOTが空っぽの事がある可能性も踏まえるなら if (preg_match('/(.+)\/(.+?)/', getenv('DOCUMENT_ROOT'), $match)) { $path = $match[1]; } が>>843 と同等のPHPコード print_r($match); の出力結果見てみるといい 細かいことをいえば正規表現は /^(.+)\/.+?$/ のが良いと思うけど 説教臭くて申し訳ないが言語が違えど正規表現の書き方なんて大差ない 基本を理解してないからこういう時に潰しが効かない
869 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/15(水) 14:28:38.96 ID:JwCJBy8n0.net] perlの変態文法に比べるとPHPのがまだ大分素直だと思う ↓大昔perlメモから拝借したcsvを扱うコードだけど今読むと目眩がするわw $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
870 名前:デフォルトの名無しさん (ワッチョイ 9b2c-cGUq) mailto:sage [2017/02/15(水) 14:32:45.87 ID:f1EoCQSH0.net] それは例としては書き方が悪いだけ
871 名前:デフォルトの名無しさん (ワッチョイ d376-CIv3) mailto:sage [2017/02/15(水) 14:37:57.30 ID:6fjfCJ8x0.net] cakephp3の質問はここでしてもいいのかな?
872 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/15(水) 14:52:38.34 ID:VOjsPlCF0.net] perlメモ懐かしすぎ。まだサイトが存在してて驚いた EXCEL形式の改行コードを含むcsvを配列にするソースとか大昔PHPに翻訳して使ったな >>857 も $path = (preg_match('/^(.+)\/.+?$/', getenv('DOCUMENT_ROOT'), $match)) ? $match[1] : ''; と三項演算子で書いた方がperlに慣れた人には分かりやすいかな?とも思ったんだけど
873 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sega [2017/02/17(金) 17:35:16.66 ID:9e/vHQb30.net] PHPDOCで質問なんだけど、クラスのメソッドのコメントで 戻り値は無しで代わりにメンバ変数を書き換えるとき どうやってそれを明示すればいいか教えて
874 名前:デフォルトの名無しさん (ワッチョイ cba0-/qTs) mailto:sage [2017/02/19(日) 16:27:17.00 ID:vBQrYNmd0.net] 画像を保存してると消えているファイルが有るのだが、 普通に404ならまだいいのだが下記のようなやつの対処方法がわからない どうすると良いのだろうか? 1.画像がエラー画像に置き換わっているパターン i.imgur.com/IEqhtkG.jpg 2.画像ではなくエラーページに移動するパターン www.dotup.org/uploda/www.dotup.org534402.jpg
875 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK1f-2nU5) mailto:sage [2017/02/19(日) 16:41:33.64 ID:258Rl1AZK.net] 事前にエラー画像とエラーページのURLを記録しておき、比較する
876 名前:デフォルトの名無しさん (ワッチョイ 7b38-yXFx) mailto:sage [2017/02/20(月) 07:05:28.09 ID:uW8j6qNc0.net] perlの文法を知っていて、c#でデータベースプログラムが書けるレベルだけど、phpは全く知らない phpのおすすめの教科書ある?
877 名前:デフォルトの名無しさん (ワッチョイ fbf8-eq+O) mailto:sage [2017/02/20(月) 07:29:48.71 ID:siKT4Z4H0.net] 昔はテンプレに市販の書籍は嘘が多いだの、最良の教科書はPHPマニュアルだの書いてたけど今書いてないのか。 とりあえず>>1 の入門と簡易チュートリアルの章でも読んでみたら?
878 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sage [2017/02/20(月) 10:27:48.14 ID:gVDOpmLx0.net] >>863 ステータスで見りゃいいんじゃね? 302が返ってきたら、ビクッとして注意すればいい
879 名前:デフォルトの名無しさん (ワッチョイ cb56-Z7AI) mailto:sage [2017/02/20(月) 11:54:58.17 ID:KgKWtHg50.net] >>863 HTTPリクエストをどんな手段でやってるのか分からないけど レスポンスヘッダすら確認できてないならそのリクエスト方法から見直した方がいいと思う 一部省略したけど一目瞭然でしょ // i.imgur.com/IEqhtkG.jpg Array ( [0] => HTTP/1.1 200 OK [last-modified] => Wed, 14 May 2014 05:44:36 GMT [content-type] => image/png [content-length] => 503 [age] => 10135875 [server] => cat factory 1.0 ) // www.dotup.org/uploda/www.dotup.org534402.jpg Array ( [0] => HTTP/1.1 200 OK [content-type] => text/html [server] => cloudflare-nginx )
880 名前:デフォルトの名無しさん (ワッチョイ cb56-Z7AI) mailto:sage [2017/02/20(月) 11:58:16.76 ID:KgKWtHg50.net] >>865 大昔からweb系やってたperl上がりのたくさんの人にPHPを教えてきたけど 最良の手段は自分がperlで組んだソースをPHPで書き直させる事だった もし過去に自力でperlで組んだサービスが何もないなら まずは自分が何を作るのか(掲示板でもwikiでもブログでも何でもいい)はっきりさせる 本とか考えるのはその後でOK 目的がはっきりしないのに概念だけ覚えようとするのは時間の無駄
881 名前:デフォルトの名無しさん (ワッチョイ 7b38-fFgi) [2017/02/20(月) 14:33:23.87 ID:uW8j6qNc0.net] >>869 なるほどなと思った。どうもありがとう。
882 名前:デフォルトの名無しさん (アウアウカー Sa9f-DJtQ) mailto:sage [2017/02/20(月) 19:12:52.64 ID:176Yfxbca.net] MVCというか、インスタンスについて質問させてください 今の職場だとモデルクラスのメソッドを全部staticにしてインスタンス化なしでコントローラーから 直接呼んでるんですけど、そっちの方が一旦インスタンス化するより効率的なものなんですか?
883 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sage [2017/02/20(月) 19:30:51.57 ID:gVDOpmLx0.net] >>871 徹底しているなら、いいアイデアかも 割り切っているならテストもしやすそう
884 名前:デフォルトの名無しさん (ワッチョイ cba0-/qTs) mailto:sage [2017/02/21(火) 21:07:02.12 ID:GYKIdTkl0.net] >>867 >>868 返信遅くなってすみません。 すごくうまくいきました。 ありがとうございます。
885 名前:デフォルトの名無しさん (ワッチョイ 5f30-XdR7) mailto:sage [2017/02/21(火) 22:11:34.97 ID:r+HgLB6m0.net] >>871 staticおじさん?
886 名前:デフォルトの名無しさん (ワッチョイ fbf8-eq+O) mailto:sage [2017/02/21(火) 23:12:20.06 ID:9alYtg+g0.net] 効率非効率の問題じゃなくて そんな書き方するぐらいならオブジェクトいらんのじゃ
887 名前:デフォルトの名無しさん (ワッチョイ 9bc1-P9CU) mailto:sage [2017/02/21(火) 23:31:24.27 ID:KlPaDOdy0.net] 内部にstatic変数で状態持ってるならただの巨大なグローバル変数だからなぁ
888 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sage [2017/02/22(水) 14:55:33.04 ID:7bpb3LbA0.net] >>876 状態はすべてセッション変数に持たせてたとかじゃない?
889 名前:デフォルトの名無しさん (アウアウカー Sa9f-yXFx) mailto:sage [2017/02/22(水) 16:57:51.58 ID:4F/fS8NSa.net] >>877 いやそんなもん尚更キモいでしょ・・・
890 名前:デフォルトの名無しさん (ワッチョイ db59-eq+O) mailto:sage [2017/02/22(水) 17:09:38.25 ID:BtmqmRAg0.net] 別に巨大なグローバル変数でもいいんじゃないの
891 名前:デフォルトの名無しさん (ブーイモ MM7f-9g8o) mailto:sage [2017/02/22(水) 21:36:50.61 ID:zYmlfQOdM.net] >>877 絶望しかねえな
892 名前:デフォルトの名無しさん (ワッチョイ 8b42-fFgi) mailto:sage [2017/02/22(水) 21:37:25.75 ID:CIb5Sb890.net] namespaceの代わりのstatic変数ってかww
893 名前:デフォルトの名無しさん (ワッチョイ 8ec9-8lb6) mailto:sage [2017/02/23(木) 10:05:12.54 ID:lHjqIPrz0.net] >>880 状態を持たせてそれをページ間でまたがって維持するのって ストレスたまるから、なんもかんもセッションに全部持たせるのは 一周回っていいアイデアな気がしてんだけど、気の迷いかね
894 名前:デフォルトの名無しさん (ワッチョイ 7f42-JtgB) mailto:sage [2017/02/23(木) 12:29:18.22 ID:abknmwyr0.net] セッション使うのが普通かと思うけど・・ 昔セッションがまだ一般的でなかった頃 自分でクッキー設定してやってるときに なんでもかんでもクッキーに入れてたという笑い話はあったけどww PHPがあまりにも簡単にセッション使えるからピンとこない話だろうけど
895 名前:デフォルトの名無しさん (アウアウウー Sacf-gc5m) mailto:sage [2017/02/23(木) 12:32:50.71 ID:sHiWuKpYa.net] つまり状態変数なんてものが諸悪の根元なわけだな! そしてモナドの海に沈み孤立していくのだ
896 名前:デフォルトの名無しさん (ワッチョイ 8e5b-HyQo) mailto:sage [2017/02/23(木) 20:22:33.45 ID:chlnLhRq0.net] 大量のnamespaceをまとめたり、bootさせたときに読み込ませて staticで取得する方法は一般的にあるのに、 なぜstaticをバカ扱いする奴いるのか謎だな
897 名前:デフォルトの名無しさん (ワッチョイ ca30-weqm) mailto:sage [2017/02/23(木) 23:17:49.97 ID:Svl7KGJP0.net] 作るものによるんだろうけどセッションってログイン済みのtrue/falseにしか使わんなー EC(OSSじゃない)とか某業界向けのニッチなもんしか作ってないけど でもredis使ってなんでもかんでもセッションぶっ込んでるのは見たことあるな
898 名前:デフォルトの名無しさん (ワッチョイ 2f56-HyQo) mailto:sage [2017/02/24(金) 11:52:02.24 ID:a8MKJYdX0.net] エラーメッセージを全部セッションにぶち込んでるのは見たことあるな PHPしかできない人の書くコードを読むと脳味噌がとろけそうになる事があってある意味新鮮
899 名前:デフォルトの名無しさん (ワッチョイ 8ec9-8lb6) mailto:sage [2017/02/24(金) 15:18:00.37 ID:jIC6X1VU0.net] >>886 それ以外の情報はどうしているの? 毎回DBから取得するようにしてセッションには一切持たない感じ? 入力確認実行直前の画面とかで前画面での入力情報はどこに持ってる? どうせ顧客の入力データだしクッキーに全持ち?
900 名前:デフォルトの名無しさん (JP 0H56-WLWd) mailto:sage [2017/02/24(金) 15:33:07.09 ID:L3urbmMZH.net] 全然関係ないけど、「入力確認実行直前の画面」が世界からなくなればいいのにと思ってる
901 名前:デフォルトの名無しさん (アウアウウー Sacf-gc5m) mailto:sage [2017/02/24(金) 15:36:25.55 ID:EbrJ09Pka.net] PHPに未来はありますか?
902 名前:デフォルトの名無しさん (ワッチョイ 06af-8lb6) [2017/02/24(金) 15:46:57.56 ID:FuJuA/X30.net] php7一択だよ python ruby perは遅すぎる
903 名前:デフォルトの名無しさん (ワッチョイ 8e5b-HyQo) mailto:sage [2017/02/24(金) 15:53:29.91 ID:Ote1SB7a0.net] >>888 localstorage使えば?
904 名前:デフォルトの名無しさん (ワッチョイ ca30-weqm) mailto:sage [2017/02/24(金) 20:23:23.92 ID:3gAzX8Bk0.net] >>888 886だけど常に値を持っていなきゃいけないって設計がおかしくね? > 入力確認実行直前の画面とかで前画面での入力情報はどこに持ってる? 個人的に好きじゃないけどeccubeとかの実装を見てみては あとアプリケーションコンフィグやデザインやステートなんかにDB使うの大っ嫌い
905 名前:デフォルトの名無しさん (ワッチョイ ab59-8lb6) mailto:sage [2017/02/24(金) 20:35:33.31 ID:p7wo3OXQ0.net] >>888 そのセッション情報ってどうやって破棄するの?
906 名前:デフォルトの名無しさん (ワッチョイ 2fa0-6M2V) mailto:sage [2017/02/25(土) 00:28:19.24 ID:jjrnhN5Q0.net] 画面上で+と-のボタンを置いて 初期状態は0で +ボタンを押すと1増えて -ボタンを押すと1減る PHPだとどうやってつくればいいですか?
907 名前:デフォルトの名無しさん (ワッチョイ a342-d4M5) mailto:sage [2017/02/25(土) 00:33:17.09 ID:TbUcHQ5J0.net] そういうのはPHPではなくJavascriptで作る方が楽だよ
908 名前:デフォルトの名無しさん (ワッチョイ a3f8-8lb6) mailto:sage [2017/02/25(土) 04:38:58.21 ID:3E7NpsF+0.net] あまりフォーム周りはお勧めできない ideone.com/F4uuvB
909 名前:デフォルトの名無しさん (ワッチョイ 7b4a-b58f) mailto:sage [2017/02/25(土) 08:03:55.70 ID:fA+zhTaO0.net] >>895 なぜphpでやりたい?
910 名前:デフォルトの名無しさん (ワッチョイ 2fa0-6M2V) mailto:sage [2017/02/25(土) 09:40:06.34 ID:jjrnhN5Q0.net] >>898 確認するデータがDBにあって 先にidだけ配列に取得して ボタンやセレクトでidに該当するデータを呼び出そうと思ってた 他のやり方考えるわ
911 名前:デフォルトの名無しさん (ワッチョイ bbc1-d4M5) mailto:sage [2017/02/25(土) 11:18:11.99 ID:KxydDILI0.net] >>899 JavaScript案件, セレクトボックスならHTMLだけで行けるやろ
912 名前:デフォルトの名無しさん (ワッチョイ 2fd6-Pl42) mailto:sage [2017/02/25(土) 22:29:44.68 ID:F9CRtHuR0.net] >>890 あまりにアホな奴が多すぎるので、そういう意味で無い気はしてきている
913 名前:デフォルトの名無しさん (ワッチョイ 2fd6-Pl42) mailto:sage [2017/02/25(土) 22:32:19.20 ID:F9CRtHuR0.net] staticな関数の方は楽しいぞー
914 名前:デフォルトの名無しさん (ワッチョイ 2fd6-Pl42) mailto:sage [2017/02/25(土) 22:34:26.92 ID:F9CRtHuR0.net] > 875 : デフォルトの名無しさん (ワッチョイ fbf8-eq+O)2017/02/21(火) 23:12:20.06 ID:9alYtg+g0 > 効率非効率の問題じゃなくて > そんな書き方するぐらいならオブジェクトいらんのじゃ 適材適所だが、>>871 の内容だといらんな。MVC採用する意味もない。
915 名前:デフォルトの名無しさん (ワッチョイ 8e5b-d4M5) mailto:sage [2017/02/26(日) 12:42:41.85 ID:Tt94x5QQ0.net] >>903 Mがユーティリティクラスのみで済むなら それはそのほうが楽だと思う
916 名前:デフォルトの名無しさん (ワッチョイ 2fd6-Pl42) mailto:sage [2017/02/26(日) 23:47:35.33 ID:WXoQ+MY30.net] >>904 >Mがユーティリティクラスのみで済むなら それをMと呼んじゃいけねーよ
917 名前:デフォルトの名無しさん (ワッチョイ 8ec9-8lb6) mailto:sage [2017/02/27(月) 15:04:47.79 ID:v76+Cgkq0.net] 呼んでもよくね?
918 名前:デフォルトの名無しさん (ワッチョイ 2fa0-6M2V) mailto:sage [2017/02/27(月) 22:00:25.16 ID:xpX5gY9C0.net] webpaprika.com/498.html このサイトの上のやつ使ってlivedoor Blogに記事アップロードできるようになった その時にブログのURLを取得したいのだけど どうやればいいのだろうか?
919 名前:デフォルトの名無しさん (ワッチョイ 06af-8lb6) [2017/02/27(月) 23:50:19.91 ID:j7MWq5RR0.net] 普通 $response->getBody() に入ってる
920 名前:デフォルトの名無しさん (ワッチョイ 2fa0-6M2V) mailto:sage [2017/02/28(火) 01:30:57.43 ID:/JbFiKkE0.net] なんとかできました。 ありがとうございます。
921 名前:デフォルトの名無しさん (ワッチョイ 733c-LqKA) mailto:sage [2017/03/01(水) 02:33:48.18 ID:wZJk3GPb0.net] おせっかいかもしれないがpearみたいなオワコンはさっさと卒業した方がいいぞ
922 名前:デフォルトの名無しさん (ワッチョイ ab59-8lb6) mailto:sage [2017/03/01(水) 16:51:29.62 ID:zQezymV/0.net] 罵倒するための布石を打ったのかな。 おせっかいといいながらどう見ても普通じゃないレスだよね
923 名前:デフォルトの名無しさん (ワッチョイ 2f56-HyQo) mailto:sage [2017/03/01(水) 17:29:49.47 ID:Hd+zannu0.net] PEARは乗り換えた方が良いってまっとうな意見だと思うけど なぜそんなひねくれたものの見方しかできないのだろうか
924 名前:デフォルトの名無しさん (JP 0H56-WLWd) mailto:sage [2017/03/01(水) 18:07:58.16 ID:NYMcPNs0H.net] MDB2からPDOに移行するとき、半ば死んだ
925 名前:デフォルトの名無しさん (ワッチョイ ab59-8lb6) mailto:sage [2017/03/01(水) 18:41:44.33 ID:zQezymV/0.net] そうじゃなくて、composer使えって書くのが普通だろうと なのにそれを書かずにPEARはオワコンとだけ書くのが不自然
926 名前:デフォルトの名無しさん (JP 0H56-WLWd) mailto:sage [2017/03/01(水) 18:47:37.38 ID:NYMcPNs0H.net] >>914 考えすぎだろ つか、喧嘩売って荒らしたいのか?
927 名前:デフォルトの名無しさん (ワッチョイ ab59-8lb6) mailto:sage [2017/03/01(水) 18:50:42.28 ID:zQezymV/0.net] そういう手法で荒らしてるのがいつもいるでしょうに。 pearの代わりに何使えばいいんですか → 調べろカス ましてpeclなんて言おうもんなら数日にわたって罵倒するような人が
928 名前:デフォルトの名無しさん (ワッチョイ bbc1-d4M5) mailto:sage [2017/03/01(水) 19:49:23.61 ID:dOgTnmNw0.net] その人は「おせっかいかもしれないが」なんて前置きはしないから・・・・
929 名前:デフォルトの名無しさん (ワッチョイ 6b3c-LqKA) mailto:sage [2017/03/01(水) 22:38:35.85 ID:lnqhaASX0.net] ワードプレスがインストールできなくて調べてみたらpostfixのパーミッションの問題っぽかったのでとりあえず全部可にしたら、 すんなりインストールできたのですが、これってこのままだとまずいですか?
930 名前:デフォルトの名無しさん (アウアウカー Sa6f-prdN) mailto:sage [2017/03/02(木) 12:56:07.07 ID:XkL8LvgVa.net] >>918 ここPHPスレですけど, ヤバいかどうか分からないのに権限広くするのはヤバいと思うの
931 名前:デフォルトの名無しさん (ワッチョイ eb46-2BvX) mailto:sage [2017/03/02(木) 14:53:54.41 ID:yMt9oKmu0.net] ab59-8lb6 誰がどう見てもこのカスの方がスレを荒らしてるという
932 名前:デフォルトの名無しさん (JP 0H7f-m4jB) mailto:sage [2017/03/02(木) 17:26:49.16 ID:bS87lpc8H.net] >>916 peclにあるならそれでいいじゃん うちではこれインストールしてる php71-php-pecl-apcu.x86_64 php71-php-pecl-apcu-bc.x86_64 php71-php-pecl-crypto.x86_64 php71-php-pecl-igbinary.x86_64 php71-php-pecl-imagick.x86_64 php71-php-pecl-json-post.x86_64 php71-php-pecl-memcache.x86_64 php71-php-pecl-msgpack.x86_64 php71-php-pecl-xdebug.x86_64 php71-php-pecl-yaml.x86_64 php71-php-pecl-zip.x86_64
933 名前:デフォルトの名無しさん (ワッチョイ 1bd6-fLnF) mailto:sage [2017/03/02(木) 17:58:00.68 ID:i+xx4AjU0.net] >>916 : デフォルトの名無しさん (ワッチョイ ab59-8lb6)2017/03/01(水) 18:50:42.28 ID:zQezymV/0 > そういう手法で荒らしてるのがいつもいるでしょうに。 >>920 が言っているとおり、どう見ても自己紹介
934 名前:デフォルトの名無しさん (ワッチョイ 1bd6-fLnF) mailto:sage [2017/03/02(木) 18:00:13.73 ID:i+xx4AjU0.net] つか、PEARとPECLを同列に語ってる >>916 : デフォルトの名無しさん (ワッチョイ ab59-8lb6) こいつ、マジ脳無し
935 名前:デフォルトの名無しさん (ワッチョイ 1b56-2BvX) mailto:sage [2017/03/02(木) 19:01:19.09 ID:HxPD+qqR0.net] 元の質問は>>907 だけどこの程度の用途であれば composerだのpeclだのを持ち出さなくても cURLで済ませるとか、サクッと1ファイルrequireしてすぐに使えるHTTPリクエスト系のライブラリを使うというのもアリかなと思うな あとab59-8lb6の言動が軽くキチガイ入っててちょっと怖い 病んでそう
936 名前:デフォルトの名無しさん (スップ Sd3f-3Y4X) mailto:sage [2017/03/02(木) 21:46:26.13 ID:Q9+IGiHqd.net] 配列をDBみたいに検索で使えないですかね? array_searchだとキーしか返せないし、 多次元配列から
937 名前:デフォルトの名無しさん (ワッチョイ 8b42-NqFr) mailto:sage [2017/03/02(木) 22:36:48.43 ID:X9ktzrEa0.net] >>925 SQLite 使って見たら
938 名前:デフォルトの名無しさん (ワッチョイ eb59-BJNc) mailto:sage [2017/03/02(木) 22:54:48.41 ID:smxCZ5w00.net] 使うなら Ginq かなぁ https://www.codeproject.com/Articles/997238/LINQ-for-PHP-comparison-YaLinqo-Ginq-Pinq
939 名前:デフォルトの名無しさん (ワッチョイ 1f7b-Guy/) [2017/03/04(土) 16:51:13.67 ID:p8pBPpDt0.net] すまん、配列のソートって一般的には何が使われてるん? 連想配列データ140個、これが5個くらいあるんだけどこれくらいならバブルソートでいいのかな
940 名前:デフォルトの名無しさん (ワッチョイ 1f7b-Guy/) [2017/03/04(土) 17:04:59.02 ID:p8pBPpDt0.net] [45] => 2017-03-19 02:30:00 [46] => 2017-03-19 02:30:00 [47] => 2017-03-19 21:00:00 [48] => 2017-03-19 23:15:00 [49] => 2017-03-19 23:30:00 [50] => 2017-03-19 00:00:00 [51] => 2017-03-19 00:00:00 [52] => 2017-03-19 00:00:00 [53] => 2017-03-19 00:00:00 [54] => 2017-03-19 00:00:00 日付でバブルソートやってみたら午前0時がその日の最後にソートされてしまう(´;ω;`)ブワッ
941 名前:デフォルトの名無しさん (ワッチョイ ab42-e336) [2017/03/04(土) 17:16:35.65 ID:ItpynKpz0.net] <? $A= preg_split("/[\r\n]+/", <<<'EOD' 2017-03-19 02:30:00 2017-03-19 02:30:00 2017-03-19 21:00:00 2017-03-19 23:15:00 2017-03-19 23:30:00 2017-03-19 00:00:00 2017-03-19 00:00:00 EOD ); sort($A); print_r($A);
942 名前:デフォルトの名無しさん (ワッチョイ 8bf8-BJNc) mailto:sage [2017/03/04(土) 17:27:21.36 ID:j/YssWzp0.net] 覚えたてのアルゴリズムでも使いたいの? バブルソートなんて教材以外じゃ使わないし 各種言語のソート関数もクイックかマージ(から派生したもの含めて)の2択でしょう おとなしくそっち使えよ
943 名前:デフォルトの名無しさん (アウアウカー Sa6f-prdN) mailto:sage [2017/03/04(土) 17:44:38.18 ID:G8SfkdVGa.net] バブルソートはほんまもんのゴミ
944 名前:デフォルトの名無しさん (ワッチョイ 7bf9-xEld) mailto:sage [2017/03/04(土) 17:47:01.49 ID:dvfUCgeC0.net] オバマでもそれくらいは知ってる
945 名前:デフォルトの名無しさん (ワッチョイ 1f7b-Guy/) [2017/03/04(土) 17:58:38.64 ID:p8pBPpDt0.net] ありがとうございます、クイックソート使ってみます
946 名前:デフォルトの名無しさん (ワッチョイ abc1-NqFr) mailto:sage [2017/03/04(土) 18:32:51.87 ID:WUB5FqMd0.net] つーか>>930 の通りそのままsort使えばクイックソートだよ どうでもいいけど何らかの安定ソートが標準で実装されてないのは今更なんだけどアレだよね
947 名前:デフォルトの名無しさん (ワッチョイ eff1-NqFr) mailto:sage [2017/03/04(土) 21:00:56.86 ID:yrfHSrc50.net] 'get*Attribute' (*は任意の文字列です) この*の部分を取り出したいのですが、どうすればよいでしょう?
948 名前:デフォルトの名無しさん (ワッチョイ 8b42-NqFr) mailto:sage [2017/03/04(土) 21:13:47.71 ID:BXXAQhND0.net] >>936 <?PHP $src = array( "getabcAttribute", "
949 名前:getgetAttribute", "getAttributeAttribute", "getAttribute", "getXYZAttribute" ); print_r($src); $dst = preg_replace('/^get(.*)Attribute$/', '$1', $src); print_r($dst); [] [ここ壊れてます]
950 名前:デフォルトの名無しさん (ワッチョイ eff1-NqFr) mailto:sage [2017/03/04(土) 21:23:00.57 ID:yrfHSrc50.net] >>937 神ですか? ありがとうございます
951 名前:デフォルトの名無しさん (ワッチョイ ab85-BSpm) mailto:sage [2017/03/04(土) 21:23:17.15 ID:X2My6T7M0.net] <?php var_dump(0 == " "); var_dump(0 == ""); var_dump(" " == ""); もう、PHPなんてやめませんか
952 名前:デフォルトの名無しさん (ワッチョイ efaf-BJNc) [2017/03/04(土) 21:37:30.81 ID:5qiLAD8F0.net] php7より速いスクリプト言語もないし === 使えばいいじゃん
953 名前:デフォルトの名無しさん (ワッチョイ ef03-BQ+s) mailto:sage [2017/03/04(土) 21:51:51.36 ID:y+A67JPN0.net] ==なんて使うときあるか?
954 名前:デフォルトの名無しさん (ワッチョイ cb3c-NqFr) mailto:sage [2017/03/04(土) 23:55:02.62 ID:XEtb1T9+0.net] ==使うくらいなら普通にキャストしちゃうな
955 名前:デフォルトの名無しさん (ワッチョイ abc1-NqFr) mailto:sage [2017/03/05(日) 00:03:11.92 ID:AjjTYZYi0.net] ==使っていいのはオブジェクトだけだというのは常識
956 名前:デフォルトの名無しさん (ワッチョイ ab85-BSpm) mailto:sage [2017/03/05(日) 00:54:45.52 ID:YjhEGGhg0.net] 現実は==だらけという
957 名前:デフォルトの名無しさん (ワッチョイ 1bd6-fLnF) mailto:sage [2017/03/05(日) 12:45:33.51 ID:mP3S1jh50.net] それが、アホが書いた既存コードを活かしつつ改修するとなると、 == 使うのが最良の妥協策って時がけっこうあんのよ。 おんなじメソッドなんだが引数としてどの型がわたされてくるのかわかんねーとか 結構あるからなぁ
958 名前:デフォルトの名無しさん (ワッチョイ 1bd6-fLnF) mailto:sage [2017/03/05(日) 12:46:52.27 ID:mP3S1jh50.net] >>942 安易にキャストしちゃいけないケースがあることくらいは、わかってるよな?
959 名前:デフォルトの名無しさん (ワッチョイ 4fc9-BJNc) mailto:sage [2017/03/05(日) 15:08:45.21 ID:kA3xMDgu0.net] >>945 わかる FALSEと0を等価に使ってるプログラムとかな タイムマシンがあるなら殴りに行きたくなるわ
960 名前:デフォルトの名無しさん (ワッチョイ 1bd6-fLnF) mailto:sage [2017/03/05(日) 16:35:11.25 ID:mP3S1jh50.net] 引き継いだ時は「しかたねぇ、オレが全部直してやんよ」とか思ってるんだが 読めば読むほど菌糸が蔓延りまくっている事に気づいて影響範囲に絶望し、 しばらく時間がたった後には「もう、いいや…」って挫折してこっちから契約打ち切るんだよ… そんなの、何度あったことか…
961 名前:デフォルトの名無しさん (アウアウカー Sa6f-prdN) mailto:sage [2017/03/05(日) 17:27:54.51 ID:OgFOpV6da.net] テストやスペックが書けるところはマシだけどそれすら書けないやつはもうどうにもならん
962 名前:デフォルトの名無しさん (ワッチョイ 1b84-pomU) [2017/03/05(日) 20:50:46.79 ID:SMp0F4mM0.net] 「こっちから契約打ち切るんだよ…」 久しぶりにペチパースレに降臨した瞬間にこんなに香ばしいレスに遭遇するとはwwww もってるわオレwwww
963 名前:デフォルトの名無しさん (ワッチョイ cb3c-NqFr) mailto:sage [2017/03/05(日) 21:57:03.52 ID:pZffxBVA0.net] >>946 分かってないやつはそもそも明示的な型変換なんかしないんじゃないかね
964 名前:デフォルトの名無しさん (ワッチョイ 1b56-2BvX) mailto:sage [2017/03/06(月) 19:27:49.93 ID:bl9QmO+H0.net] 作るもののレベルによって使い分けてるな 自分しか使わない業務自動化用のプログラムとかでは if (!$hoge) { } なんて普通に使ってしまってるが、くっそ適当に書くからコードを書くのはめちゃくちゃ早い なぜそれが駄目か理解した上で自己責任で書く分には問題ないと思ってる しょせんPHPだしw
965 名前:デフォルトの名無しさん (ワッチョイ eb59-CIMi) mailto:sage [2017/03/06(月) 20:04:35.14 ID:1Fs4X0cy0.net] なぜそれが駄目かではなくて、それで十分だということを理解したうえで書くなら問題ないというスタンスであるべきではないのか
966 名前:デフォルトの名無しさん (スップ Sd3f-3Y4X) mailto:sage [2017/03/08(水) 07:18:41.32 ID:lD7PG6Njd.net] vcのが速いんでないの
967 名前:デフォルトの名無しさん (ワッチョイ db7b-BTGK) [2017/03/08(水) 15:13:36.00 ID:z9npna5X0.net] ポリモーフィズムって、無理にinterfaceでメソッドを定義して 実装を行わなくても、 クラスの中のメソッド名を いざ他のクラスを作った時に同じようなメソッドを同じ名前にするよう気をつければ ポリモーフィズムとよべるんですか?
968 名前:デフォルトの名無しさん (ワッチョイ 1f3c-dv7B) mailto:sage [2017/03/08(水) 15:23:42.74 ID:Uljnsbub0.net] ダックタイピングをポリモーフィズムの一種と考えるかどうかは人によって意見が違うが 俺はポリモーフィズムの一種だと思うよ 明示的にインターフェースを定義してるか暗黙のインターフェースを使ってるかの違い
969 名前:デフォルトの名無しさん (ワッチョイ 337b-9RK0) [2017/03/09(木) 14:51:15.69 ID:B4NOdQEm0.net] 回答ありがとうございます。 すると、ポリモーフィズムはプログラミング技術というより コーディングルールテクニックみたいな感じですかね。
970 名前:デフォルトの名無しさん (ワッチョイ 0bf9-ATAZ) mailto:sage [2017/03/09(木) 14:55:51.52 ID:EWO17/eW0.net] まあ関数名が短かくなるということですよね
971 名前:デフォルトの名無しさん (ワッチョイ 323c-ZZsN) mailto:sage [2017/03/09(木) 16:14:29.69 ID:x6aOWZGA0.net] >>957 ポリモーフィズムは概念とか考え方 実現する方法は一つじゃない プログラミング技術かコーディングルールかでいうとプログラミング技術のほうが近い
972 名前:デフォルトの名無しさん (ワッチョイ af7b-j8zu) [2017/03/09(木) 19:31:52.00 ID:oP+XYW1+0.net] すまんが質問させて頂くでござる 借り
973 名前:トるレンタル鯖がPHP Version 5.2.17だったんだがもしかしてDatetimeって動作しないん? ログ見るとPHP Fatal errorが出てるがローカル環境ではPHP Version 5.5.38でエラー無く正常動作しています [] [ここ壊れてます]
974 名前:デフォルトの名無しさん (ワッチョイ 323c-ZZsN) mailto:sage [2017/03/09(木) 21:59:57.83 ID:x6aOWZGA0.net] マニュアル見て php.net/manual/en/class.datetime.php
975 名前:デフォルトの名無しさん (ワッチョイ b230-JiRs) mailto:sage [2017/03/09(木) 22:35:33.53 ID:Q01U24Fq0.net] 無関係だがもうそんな古いバージョンのPHPとか見たくないよね って5.xも見たくない 全ての古きphpが朝起きたら7.0.xに(コードも都合よく)変わってないかなあ
976 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/09(木) 23:42:25.43 ID:PWMSgsoI0.net] >>962 >全ての古きphpが朝起きたら7.0.xに(コードも都合よく)変わってないかなあ あめぇなぁ。 「全ての古きphp環境が全部7.0.x環境に変わっていて、ゴミクズコードをそのまま動かしていたマヌケ共が全部瀕死にならねぇかなぁ…」 くらい、考えろよ
977 名前:デフォルトの名無しさん (ワッチョイ bfc1-vsbp) [2017/03/10(金) 20:27:51.56 ID:nXK4riNi0.net] ちょいとお尋ね。 ~~~~~~ class Super { public function override() { echo __METHOD__.PHP_EOL; $this->another(); } public function another() { echo __METHOD__.PHP_EOL; } } class Sub extends Super { public function override() { echo __METHOD__.PHP_EOL; parent::override(); } public function another() { echo __METHOD__.PHP_EOL; } } $sub = new Sub(); $sub->override(); ~~~~ このコードの実行結果が Sub::override Super::override Sub::another になるんだけど, 期待されるのは最後はSuper::anotherじゃない? 何か書き方がマズいからこうなってるのか?
978 名前:デフォルトの名無しさん (ワッチョイ bfc1-vsbp) mailto:sage [2017/03/10(金) 20:36:29.28 ID:nXK4riNi0.net] あ, 忘れてちょ
979 名前:デフォルトの名無しさん (ワッチョイ 337b-9RK0) [2017/03/11(土) 15:09:50.84 ID:ag50xhgS0.net] レコードによって、実行するプログラムが変わるため データベースに php_program(仮名)というカラムを作り そこのプログラムを直接書きレコードを呼び出した際 eval関数を実行するという、 プログラム作成しようとしています。 基本 php_program カラムは phpmyadmin 以外からはいじれませんが 念のため、インジェクション攻撃を防ぐためにどういった対策が考えられるでしょうか? 指定の関数しか使えないとかできるのでしょうか?
980 名前:デフォルトの名無しさん (ワッチョイ 323c-ZZsN) mailto:sage [2017/03/11(土) 15:26:30.91 ID:sUFiWX+J0.net] 外部に公開するシステムでその設計は無いわ インジェクションの前に設計を見直すアドバイスを募ったほうがいい
981 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/11(土) 20:34:55.67 ID:n0RAiOjQ0.net] >>966 発想が斬新過ぎて、もはや異世界の住人的強烈な違和感を覚える
982 名前:デフォルトの名無しさん (ワッチョイ f342-aox5) mailto:sage [2017/03/11(土) 20:56:27.68 ID:M9c6EBxE0.net] >>966 プログラムを別テーブルにして、プログラムIDを指定するようにするとか まぁ管理するのが面倒かもしれないけど 使う人が信頼できる前提で、その人にしか公開しない前提ならないとは言えないかな
983 名前:デフォルトの名無しさん (ワッチョイ 323c-ZZsN) mailto:sage [2017/03/11(土) 21:04:54.25 ID:sUFiWX+J0.net] もしオンラインのコードエディタ的なものを想定してるんだとしたら Sandbox化する方法を調べたほうがいいかな そういうの作る人がここで質問するとは思えないけど
984 名前:デフォルトの名無しさん (ワッチョイ 624a-ZfXI) mailto:sage [2017/03/12(日) 16:41:25.84 ID:9ahiNoY00.net] >>966 俺も967や968と同じ。 どんな要求仕様なのか逆に聞きたいくらいだ。 それと、970は真面目に回答していて偉いと思う。
985 名前:デフォルトの名無しさん (ワッチョイ ef59-ZfXI) mailto:sage [2017/03/12(日) 17:52:33.32 ID:hOorJCR80.net] > レコードによって、実行するプログラムが変わるため から > プログラムを別テーブルにして、プログラムIDを指定するようにするとか となるのは自然だと思うが > もしオンラインのコードエディタ的なものを想定してるんだとしたら は飛躍しすぎじゃないだろうか。 ユーザがコードを入力する流れに変わってしまっている。
986 名前:デフォルトの名無しさん (ワッチョイ 323c-ZZsN) mailto:sage [2017/03/12(日) 21:47:03.45 ID:T4N3k6YJ0.net] >>972 そこはエディタじゃなく実行できるPHPチュートリアルとかPHP問題集とかでもいいのよ 飛躍はしてると思うけど あとプログラムを別テーブルにして云々は全く自然じゃないぞ 実行するコード片をDBのレコードに保存してevalするのは変わらないんだから
987 名前:966 (ワッチョイ 337b-9RK0) [2017/03/13(月) 11:29:38.10 ID:v0LCVDYp0.net] 回答してくださった方々ありがとうございます。 仕様状況としては DBレコードには、会員情報に対応する付加情報がはいっていて 会員(ユーザー)ごとにある部分だけ個別にまったく異なるプログラムを動かさなければならない感じです。 100人いたら100通りプログラムがあり、 会員が増える度にクラスを足していったりSwitch文を増やしていく方法を取ろうかとも思いましたが 直接 個別のプログラムを 会員レコードに内包すると管理しやすいかなとも思ったので質問しました。 セキュリティー的にはよくないのはわかってるのですが、そのレコードをいじるのは 私か内部関係者のみだけがいじれるようにする予定です。 これは、たとえDBレコードにphpを直接書き込む方法をとらずに phpファイルのクラス等を増やしていく方法をとったとしても FTPやSSH上から内部関係者はいじれるようにする可能性があります。 (ただ、そうしたくないのでレコードにphpを書く方法を取りたいというのもあります) system exec file系 など 危険な関数は実行出来ないようにしてます。 また、レコード内に必ず ある文字列(十数桁の不規則な英数字)が入ってないと実行できません。 ただ、ぶっ飛んだ方法だったみたいなので もうちょっと安全かつ汎用的なやり方がないか考えてみます。
988 名前:デフォルトの名無しさん (ワッチョイ 3642-nt29) [2017/03/13(月) 11:47:28.29 ID:bicztMj/0.net] PHPってクラスのデストラクタの動作おかしくないですか? これって二行目いれないとデストラクタが起動しないんですか? 変数が上書きされれば前回の情報は消えてデストラクタが動くはず。回避できないですか? $hd = new classXXX("000"); // $hd = null; $hd = new classXXX("000");
989 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/13(月) 11:59:39.89 ID:rgen9sgM0.net] >>974 ・こうするじゃろ? Table::User ------------------- id | name | prog 1 | taro | UserProg1 2 | hanako | UserProg2 3 | ziro | UserProg3 -------------------
990 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sげ [2017/03/13(月) 12:00:17.32 ID:rgen9sgM0.net] ・こうするじゃろ? app ┬ core ├ prog │ ├ UserProg1.php │ ├ UserProg2.php │ ├ UserProg3.php │ : │ └ webroot ├ folder :
991 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/13(月) 12:00:44.04 ID:rgen9sgM0.net] ・app/prog/ ディレクトリーをautoloadの対象にするじゃろ?
992 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/13(月) 12:01:10.64 ID:rgen9sgM0.net] ・セレクトするじゃろ? $result = "SELECT * FROM User WHERE WHERE id = '2'";
993 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/13(月) 12:02:59.41 ID:rgen9sgM0.net] ・こうじゃ! $prog = new $result->id(); $prog->execute();
994 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/13(月) 12:08:29.70 ID:rgen9sgM0.net] ・間違いじゃ! $prog = new $result->prog(); $prog->execute();
995 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/13(月) 12:14:48.64 ID:rgen9sgM0.net] >これは、たとえDBレコードにphpを直接書き込む方法をとらずに phpファイルのクラス等を増やしていく方法をとったとしても > FTPやSSH上から内部関係者はいじれるようにする可能性があります。 恐らく、 おまえさんの書いたDBレコードを関係者がいじれるWEBアプリよりも、鍵方式のSSHの方が遥かに安全じゃ。 FTPは論外じゃ。
996 名前:975 (ワッチョイ 3642-nt29) [2017/03/13(月) 12:24:28.85 ID:bicztMj/0.net] 自己解決しました 静的メンバ変数を用意、維持してやったら出来ました
997 名前:デフォルトの名無しさん (ワッチョイ e356-aizu) mailto:sage [2017/03/13(月) 13:41:54.67 ID:AvyIY0iY0.net] >>974 とりあえずautoloadって知ってる? それにしても発想が斬新過ぎる まあ固定観念に縛られるのはよくないし こういう刺激?を求めてこのスレを定期的に見てるんだけど
998 名前:デフォルトの名無しさん (ワッチョイ f342-aox5) mailto:sage [2017/03/13(月) 14:08:04.12 ID:f3raQE2X0.net] >>974 つまり、プログラム自体はプログラマが作って どのプログラムを実行するかは、データ入力者が決めるようにするということ? プログラムも信頼できない人が作っておける環境だとまずいけど そうでなければ、DBにどんなプログラムを実行するかの情報を入れること自体は問題ないと思いますよ。 まぁ直接文字コードを入れさせると、入力間違いで変なプログラムが実行される危険があるので そこはプログラムリストから選ぶような仕組みにした方が良いと思うよ。 973 みたいにDBにプログラムリストを入れるのを最初から否定するのは発想が貧困すぎww
999 名前:デフォルトの名無しさん (ササクッテロル Sp57-xX7A) mailto:sage [2017/03/13(月) 14:17:41.62 ID:ba0kSSARp.net] >DBにプログラムリストを入れるのを最初から否定するのは発想が貧困すぎww evalする事になんの抵抗も感じない土人がなんかほざいています。
1000 名前:デフォルトの名無しさん (ワッチョイ 624a-ZfXI) mailto:sage [2017/03/13(月) 16:11:36.68 ID:kanqNMIn0.net] DBは値を入れるもので、 プログラムコードはファイルに保存するもの。 おじさんそんなことも知らないの〜? って近所の小学生が言ってた。
1001 名前:デフォルトの名無しさん (ワッチョイ 323c-ZZsN) mailto:sage [2017/03/13(月) 16:38:55.99 ID:h57/U2+30.net] >>974 >100人いたら100通りプログラムがあり、 抽象化が不十分な気がする 必要なのはHTMLのテンプレートエンジンだったりしない?
1002 名前:デフォルトの名無しさん (スッップ Sd92-1frF) mailto:sage [2017/03/13(月) 19:01:38.92 ID:7S0lCjx+d.net] phper的にはそんなもんじゃないの 定年PGだし
1003 名前:デフォルトの名無しさん (アウアウウー Sa93-TeMv) mailto:sage [2017/03/14(火) 01:57:08.43 ID:08imKbv+a.net] wpがにたようなもんか
1004 名前:デフォルトの名無しさん (ワッチョイ f342-aox5) mailto:sage [2017/03/14(火) 08:57:38.80 ID:N5p5l+OE0.net] >>986 抵抗はあるけど、Webしか知らない人って感じで発想が貧困すぎでしょww もっとシステム全体を見て判断できるようになった方がいいと思うよ。
1005 名前:デフォルトの名無しさん (ワッチョイ e6c9-2hGO) mailto:sage [2017/03/14(火) 14:20:16.25 ID:vOSyRZGG0.net] >>986 そこをいかに安全にするか考えるのが楽しいんじゃん ideoneみたいにめぼしいシステムコール潰しておくとか 手はあるよきっと
1006 名前:デフォルトの名無しさん (ワッチョイ 3642-nt29) [2017/03/14(火) 14:22:58.56 ID:s4GXkib80.net] データベースのソースコードをいれること自体は問題なしだろ? データベースと関係なく、読み込んだしたコードを実行する時点が問題なんだろ? データベースは関係ない。
1007 名前:デフォルトの名無しさん (ワッチョイ ef59-ZfXI) mailto:sage [2017/03/14(火) 19:41:44.29 ID:OXYXI7ST0.net] 自分がコード片を書くのにそんな制限かけてどうすんのって思う テーブル分割してロール制御でいいんじゃないのか
1008 名前:デフォルトの名無しさん (ワッチョイ bf6c-1frF) mailto:sage [2017/03/14(火) 22:10:29.49 ID:4mHil5V80.net] そもそも最前線のフロントエンドに配備する必要なかろう
1009 名前:デフォルトの名無しさん (ワッチョイ e3d6-1sZU) mailto:sage [2017/03/15(水) 00:09:16.65 ID:HiQDR7mt0.net] >>991 : デフォルトの名無しさん (ワッチョイ f342-aox5)2017/03/14(火) 08:57:38.80 ID:N5p5l+OE0 > 抵抗はあるけど、Webしか知らない人って感じで発想が貧困すぎでしょww WEB以外を知ってたら、なんでDBにコードぶっこむことになるんだよ土人 何より、DBに入れるメリットが何処にあるんだ、アホなのか? >>992 : デフォルトの名無しさん (ワッチョイ e6c9-2hGO)2017/03/14(火) 14:20:16.25 ID:vOSyRZGG0 > そこをいかに安全にするか考えるのが楽しいんじゃん オメー個人が楽しいかどうかを仕事に持ち込むなよ 「いかに安全にするか」ってことは危険だとわかってるのに、 なんであえてそんなアホな手段を模索すんだよ、マゾか? こいつら、同一人物だろ
1010 名前:デフォルトの名無しさん (ワッチョイ bfb2-csvI) mailto:sage [2017/03/15(水) 00:30:23.86 ID:ko4BTSP20.net] >>974 とりあえずぱっと見たところで業務案件としては可変コード部分がテスト出来ないのは設計上まずいと思う 可変部分の具体的な(端的な)例を幾つか挙げてもらわにゃ分からんけど, >>988 の言う通り抽象化するのが下手なだけな可能性は高い 可変コードにするなら実装案としては, ・コードは顧客毎にgitリポジトリを作成して管理 ・アプリケーション側で顧客毎のコードリポジトリを更新するAPI ・ベアリポジトリ(のmaster)へのpush時に上記APIを叩くフック な感じを提案しておく。 リポジトリ管理はGitLabとか使えばGUIでかなり複雑なことまで出来るしコード編集(masterへのpush)権限も制御出来る。 テストも自動で走らせられる。
1011 名前:デフォルトの名無しさん (ワッチョイ bfb2-csvI) mailto:sage [2017/03/15(水) 00:39:24.05 ID:ko4BTSP20.net] 次スレ立てるよ!
1012 名前:デフォルトの名無しさん (ワッチョイ bfb2-csvI) mailto:sage [2017/03/15(水) 00:43:22.66 ID:ko4BTSP20.net] ほい 【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1489506082/
1013 名前:デフォルトの名無しさん (ワッチョイ ef59-ZfXI) mailto:sage [2017/03/15(水) 02:46:08.52 ID:6L0FngKc0.net] >>997 また要件すり替えてワーワーと。git言いたいだけなんちゃうんかと
1014 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています