[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/11 12:00 / Filesize : 340 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はここに書き込みやがれ 7



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

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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<340KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef