トップページphp
1001コメント262KB

【PHP】下らねぇ質問はID出して書き込みやがれ 119

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/05/16(水) 21:44:16.40ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 118
http://kohada.2ch.net/test/read.cgi/php/1335198562/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0642nobodyさん2012/06/08(金) 12:03:11.47ID:???
>>641
SPF認証とかじゃないの?
0643nobodyさん2012/06/08(金) 12:17:01.22ID:???
$mail->Sender 設定してる?
0644nobodyさん2012/06/08(金) 15:06:49.38ID:XDTitIRx
php以外の言語はだめだ
0645nobodyさん2012/06/08(金) 15:19:13.31ID:aCLLkMUA
print_rやvar_dumpを使うと、privateなclassのメソッドが読めますが、
これはPHPの組み込み関数だから読めているのでしょうか?

クラスの外からクラス内のprivate, protected なメソッドの値を読む関数ってあるものでしょうか?

もしくは、xdebugを使えば可能になる方法などありますか?
0646nobodyさん2012/06/08(金) 15:22:40.75ID:???
Reflection
0647nobodyさん2012/06/08(金) 15:45:50.42ID:Ikz21ynx
関数を作るとき、

たとえば gif画像をjpegに変換する処理の場合

if(拡張子がgifだったら){
  gif2jpg($filepath);
}
とするのか

funciton gif2jpg の中に
if(拡張子がgifだったら)を入れとくのか
どっちがスマートでしょうか?

こういう、分岐や繰り返しって基本 function 処理の中に
含めないほうがいいのかなっとふと思いまして。
0648nobodyさん2012/06/08(金) 15:51:17.29ID:???
>>646
ありがとうございます。
更に質問ですが、これはクラスの定義がわかる感じですが、
インスタンスされたオブジェクトのprivateなプロパティの値を読む方法はないでしょうか?
0649nobodyさん2012/06/08(金) 16:12:36.10ID:???
インスタンスされたってのがよくわからないがprivateプロパティを得る方法はこんな感じ
$ref = new ReflectionClass('Hoge');
print_r($ref->getProperties(ReflectionProperty::IS_PRIVATE));

あとはReflectionClass::isInstanceの項を調べてみては
0650nobodyさん2012/06/08(金) 18:06:47.80ID:???
>>648

<?php
class A { private $a = 1; }
$class = new ReflectionClass('A');
$property = $class->getProperty('a');
$property->setAccessible(true);
echo $property->getValue(new A());
0651nobodyさん2012/06/08(金) 18:38:15.30ID:???
>>649-650
むむっ!それでいけるかもしれません。
帰ったら早速試してみます!
0652nobodyさん2012/06/08(金) 22:14:29.28ID:yAKlRLjB
う〜ん。やっぱりできませんでした。
↓こんな感じなんですが、

class A{
private $a = 'default';
public function touch( $v ){
$this->a = $v;
}
}

$obj = new A();
$obj->touch('change');
print $obj->a; // Fatal Error

通常は private メソッドは読み書きできないので Fatal Error で正しいのですが、
ただ、var_dump や print_r すると、privateのプロパティの値も表示されているので、
ひょっとしたら何か方法が用意されているのかなぁと。

具体的には var_dump だとプレーンテキストで表示されて見にくいので、見やすいように整形しています。
0653nobodyさん2012/06/08(金) 22:16:50.02ID:???
一体何がやりたいわけ
0654nobodyさん2012/06/08(金) 22:29:15.60ID:???
やりたいことがわかったわ
var_dump($obj)したわけね

>>650でいいじゃん
最後のnew A()ってなってるとこを$objにすればいいだけ
つうかReflectionの項目ちゃんと調べろや

class A{
private $a = 'default';
public function touch( $v ){
$this->a = $v;
}
}

$obj = new A();
$obj->touch('change');

$class = new ReflectionClass('A');
$property = $class->getProperty('a');
$property->setAccessible(true);
echo $property->getValue($obj);
0655nobodyさん2012/06/08(金) 22:29:45.61ID:???
>>652
そりゃデバッグのための関数だからね
デバッグ目的なら上の方のZendDebuggerやXDebugの話題を参照すべし
それ以外ならA#touch()をオーバーライドしなさい
0656nobodyさん2012/06/08(金) 22:40:30.02ID:???
class A{
private $a = 'default';
public function touch( $v ){
$this->a = $v;
}
}

$obj = new A();
$obj->touch('change');

$ary = (array)$obj;
print $ary["\0".get_class($obj)."\0"."a"];

こんなの使うなよ?
0657nobodyさん2012/06/08(金) 22:46:10.99ID:???
protectedんときは
print $ary["\0*\0"."a"];
0658nobodyさん2012/06/09(土) 00:21:11.60ID:???
このスレ的にはオブジェクト指向は禁止。

25. オブジェクト指向
 → 使用しないこと。実装が中途半端だという説もありますが、
  PHP自体遅いのでOOPするとさらに遅くなり、実用に耐えません。
0659nobodyさん2012/06/09(土) 00:27:50.30ID:???
クラス使うこと=オブジェクト指向と思ってるとかw
0660nobodyさん2012/06/09(土) 00:30:42.24ID:???
回答者はスルースキルを
質問者は>>1-6までのテンプレ以外目を通さないこと
0661nobodyさん2012/06/09(土) 00:32:28.75ID:???
そもそもPHPではOOPはできないよ
0662nobodyさん2012/06/09(土) 00:34:32.75ID:???
>>661
0663nobodyさん2012/06/09(土) 00:41:48.82ID:???
オブジェクトについては
http://docs.php.net/manual/ja/language.types.object.php

配列との相互の変換もサンプルに有ります。
0664nobodyさん2012/06/09(土) 00:51:34.63ID:???
PHPのクラスってなんのためにあるんだろう
0665nobodyさん2012/06/09(土) 00:55:24.49ID:???
分かろうとしなければ一生わかんないままだし、
別にそれでもいいんじゃね?死ぬわけでもなし。

一生ここを荒らしてなさい。
0666nobodyさん2012/06/09(土) 01:58:57.25ID:A8GYv3AN
>>654-657
ありがとうございます!できました!!

> 最後のnew A()ってなってるとこを$objにすればいいだけ
> つうかReflectionの項目ちゃんと調べろや

すみません、調べ方が甘かったです・・・
おかげさまで必要な機能を全て実装できそうです。

ただ、1つだけ取得できないのが、>>654の例に追加すると、メソッドの中でstatic宣言されている変数の取得です。
さすがにこれは無理でしょうか?

class A{
private $a = 'default';
public function touch( $v ){
static $count; // ←この値
$count++;
$this->a = $v;
}
}

$obj = new A();
$obj->touch('change');

$class = new ReflectionClass('A');
$property = $class->getProperty('a');
$property->setAccessible(true);
echo $property->getValue($obj);
0667nobodyさん2012/06/09(土) 03:37:01.21ID:???
returnしてるならまだやりようはあるけど無理じゃね
0668nobodyさん2012/06/09(土) 12:13:04.55ID:???
http://oshiete.goo.ne.jp/qa/7523010.html
ある意味すごい。
POSTパラメータをそのままSQLに突っ込むってwww
ついでにそれに関して回答者も教えてあげないなんて
回答者は相当の無知なのか?
0669nobodyさん2012/06/09(土) 12:24:20.86ID:???
>>668
じゃ、お前が教えてやればよかったんじゃないか

回答者のプロフィール
>自己紹介
>常にマイペースな京都のシステム屋さんです。
>開発言語はassembler C C++ JAVA PASCAL BASIC XBASE PHP COBOL PERLなど多数を経験。
>「事件は現場で起こる」を肝に銘じて、現場が使い易いシステム作りを行っています。

無知じゃないだろーw
エラーを修正する部分だけ教えたんだよ、質問通りに回答してあるだけ
0670nobodyさん2012/06/09(土) 12:52:42.08ID:???
>>669
質問が締め切られると新たに回答できないことを知らないwww

>無知じゃないだろーw
自称できる奴に限って他称は出来ない奴の法則ww
0671nobodyさん2012/06/09(土) 12:56:10.50ID:???
>「事件は現場で起こる」
作ったシステムが頻繁にトラブルを起こして、
現場のクライアントからいつも呼び出されてるんだろw
0672nobodyさん2012/06/09(土) 13:03:59.13ID:???
>>669
OKWaveってプロフ紹介の文書書いてある奴に限って変な奴が多いの知らない?
何というか自己顕示欲が強いだけで実際には使えない奴ってね。
0673nobodyさん2012/06/09(土) 13:15:04.04ID:???
>>668
その考え方は良くない。
回答者は先生じゃないんだから
0674nobodyさん2012/06/09(土) 13:18:42.23ID:???
>>668
ワイルドだろ
0675nobodyさん2012/06/09(土) 13:38:07.41ID:???
別に自分しか使わないスクリプトならいいんじゃない?
0676nobodyさん2012/06/09(土) 13:40:49.88ID:???
menberとかpasswardとか釣りにしか見えねえwwwww
0677nobodyさん2012/06/09(土) 13:42:56.84ID:???
passwordをそのままDBに突っ込むってことがあり得ない。
ハッシュ値を突っ込めよ。
0678nobodyさん2012/06/09(土) 13:45:53.70ID:???
質問者のレベルが低すぎるからまずは基本からやれっていってやってる親切な回答者じゃないの。
こんなウンコみたいなもん書いてる時点でやるべきことを相当飛ばしまくってるのは見て取れる
0679nobodyさん2012/06/09(土) 13:51:34.45ID:???
おまえら暇なんだろ
POST GET COOKIEを勝手にサニタイズする関数作ってやれよ
0680nobodyさん2012/06/09(土) 13:59:26.02ID:???
質問者のIDとOKWaveで検索したら不思議な質問だらけで糞フイタwww
横文字に弱そうなのとアニオタっぽいのとプログラムの質問は今までなさそうということはわかった
オッサンっぽいから優しく教えてやれよ
0681nobodyさん2012/06/09(土) 14:07:30.82ID:???
>>670
ん?締めきってあるから回答できないのは知ってるぞ?
だから過去形で書いてるんだ
締めきってなかったら「お前が教えてやれよ」って書いてるさ
0682nobodyさん2012/06/09(土) 14:08:18.18ID:???
>>681
言い訳必死www
0683nobodyさん2012/06/09(土) 14:13:38.48ID:???
まーあれだ。P.S.で一行書いておいたほうが親切だったかもな。

たまに本文中にごたごたと質問の趣旨とは関係ない返答を書きつづったあげく
人生感までおしつけてくるような説教じみた回答もあるから
質問の返答だけを端的に書く姿勢はとても正しいと思うけど。
0684nobodyさん2012/06/09(土) 14:53:20.08ID:???
>>682
過去形って今気づいたんだなw
0685nobodyさん2012/06/09(土) 14:57:18.07ID:???
まぁこのスレでやる話題じゃないよ
たまに自演荒らしするやつが池沼袋から質問もってきてスレ伸ばそうとするけど
やってることはそれと一緒だぜ
0686nobodyさん2012/06/09(土) 18:02:10.30ID:1iEEQftb
質問です

いま公式サイトって落ちてる?
0687nobodyさん2012/06/09(土) 18:07:56.22ID:???
ミラーはいくつでもある
jp2.php.netはよくつながる
0688nobodyさん2012/06/09(土) 18:08:07.62ID:???
PHPでチェックしろ
0689nobodyさん2012/06/09(土) 18:18:44.86ID:???
ミラーサイトって、本家が運用してるの?

それともだれか個人が適宜コピーしてる感じ?
0690nobodyさん2012/06/09(土) 18:23:07.55ID:???
php.net冠してるものは本家のスポンサー
ちゃんとミラーリストにも書いてるだろ
http://jp.php.net/mirrors.php

そうじゃないのは個人
0691nobodyさん2012/06/09(土) 18:26:11.32ID:???
>>690
ありがとう。
個人で作っても大丈夫か気になったんだ。
0692nobodyさん2012/06/09(土) 19:21:58.83ID:???
質問でも回答でもない荒らしとその自演レスだろ
0693nobodyさん2012/06/09(土) 19:40:30.41ID:???
外人EYEの面白い比較を見つけた
http://www.readwriteweb.com/hack/2012/01/infographic-php-vs-python-vs-r.php
RailsのおかげかRubyは話者数少ない割に仕事あるんだな
PHP305案件に対して18950人もPHP技術者がいるのに対して
Rubyは138案件に対してわずか720人
もっと日本じゃRuby技術者>Python技術者だろうけど
ただ日本でも案件は同様にRubyが多いだろうな
学習コスト見るとPHPよりも初学者向けらしいPythonに目移りするが
PHP使用者ならRubyやったほうがよさげ
0694nobodyさん2012/06/09(土) 19:41:32.37ID:???
GOBAKUだからスルーしてくれー
0695nobodyさん2012/06/09(土) 21:39:24.60ID:???
Your eyes're more gonna
0696nobodyさん2012/06/09(土) 23:29:35.54ID:Sc0ZHDcr
$foo = array(
0 => "google",
1 => "yahoo",
2 => "facebook"
);
$bar = array(
0 => "google",
1 => "facebook",
);

があり、重複しているものを削除したいと考えております
しかし、array_diff($foo, $bar)を使うと、
1 => string 'yahoo'
だけが残ってしまい、keyが1から始まってしまいます
自分は、keyがまた0から始まるようにしたいのですが、どのようにすれば宜しいのでしょうか?
アドバイス頂ければと思います
0697nobodyさん2012/06/09(土) 23:56:20.51ID:???
>>696
array_values
0698nobodyさん2012/06/10(日) 00:06:03.13ID:???
>>696

$result = array_values(array_unique(array_merge($foo, $bar)));

var_dump($result);

array(3) {
[0]=>
string(6) "google"
[1]=>
string(5) "yahoo"
[2]=>
string(8) "facebook"
}
0699nobodyさん2012/06/10(日) 00:12:49.25ID:???
ごめん間違った
重複しているものを削除か
>>698は無しで
0700nobodyさん2012/06/10(日) 00:16:56.97ID:???
ありがとうございました
array_values()でなんとかなりました
0701nobodyさん2012/06/10(日) 00:41:01.93ID:/FvQmmQ6
今、PHP Manualが落ちているようで、ずっと開けないので質問させていただきます

海外から英文のタイトルと本文を取得してきて(charset=iso-8859-1")、
それをファイルに書き込もうと思っています

しかし、
$fp = fopen($file_name, "w");
fwrite($fp, $content);
にてファイルを作成したらWindowsに表示される、
タイトルの中のCafeというファイル名が文字化けし、
また、ファイルを秀丸にて開くとShift-JISとなって文字化けしてしまっています
自分は設定など基本的に全てUTF-8にて統一しているのですが

どのようにすれば、タイトルと、ファイルを開いた時に文字化けせずに開けるようになるのでしょうか?
宜しくお願いします
07027012012/06/10(日) 00:46:10.38ID:???
ごめんなさい、これは秀丸の問題ですね
失礼しました
0703nobodyさん2012/06/10(日) 00:46:19.33ID:???
>>686-
0704nobodyさん2012/06/10(日) 03:41:24.06ID:???
>>674 (笑)
0705nobodyさん2012/06/10(日) 10:34:39.38ID:???
さすがPHPer
0706nobodyさん2012/06/10(日) 17:13:30.35ID:pCGv1Wua
質問です。phpのエラーログが現在以下のようになってるんですが
 [10-Jun-2012 07:26:50 UTC] PHP Warning: readfile(
この時間の部分を日本時間にするにはどうしたら良いんですか
0707nobodyさん2012/06/10(日) 18:30:14.62ID:???
file_get_contentsとかでいちいち警告出さないでくれないかな
次の行でfalseチェックしてるっつうの・・・@はダサいし
0708nobodyさん2012/06/10(日) 19:31:53.73ID:???
set_error_handlerでも使えば
0709nobodyさん2012/06/10(日) 19:50:38.33ID:???
>>706
1,サーバの環境変数いじる
2,php.iniにdate.timezone = Asia/Tokyo指定してみる

エラーログとってないしやったことないからあってるかしらんけどきっとこのへん

>>707
チラ裏
0710nobodyさん2012/06/11(月) 03:45:36.48ID:jrHSEb2l
PHPでクライアントのMACアドレスを取得する方法を教えてください。
0711nobodyさん2012/06/11(月) 04:42:07.48ID:???
>>710
arp -a
0712nobodyさん2012/06/11(月) 05:59:24.75ID:???
MACアドレス集めて何をするの?

ストーカー?
0713nobodyさん2012/06/11(月) 06:36:32.95ID:???
そもそもwwwでは、どんな方法だろうとアクセス者のMACアドレスは取得できません
0714nobodyさん2012/06/11(月) 11:55:26.81ID:???
www
0715nobodyさん2012/06/11(月) 14:13:28.56ID:???
LAN内なら可能
0716nobodyさん2012/06/11(月) 16:02:46.57ID:???
普通にできます
0717nobodyさん2012/06/11(月) 18:10:41.65ID:???
smarty3.1.8バグが多過ぎる
バグというかマニュアルの不備というか、ちょっと酷い
0718nobodyさん2012/06/11(月) 18:55:42.46ID:???
くだらないが質問ではない
0719nobodyさん2012/06/11(月) 20:26:31.81ID:BvAs1C4B
phpで、MVCモデルを採用したsampleの VIEW部分なんですが
どれも <?= ?> ではなく <?php echo ?> で出力してるのですが
なぜ echo を使ってるのでしょうか?
0720nobodyさん2012/06/11(月) 20:33:01.14ID:???
5.3以下でも動くようにじゃね
0721nobodyさん2012/06/11(月) 20:42:14.29ID:BvAs1C4B
>>720
それだ!
0722nobodyさん2012/06/11(月) 20:43:15.00ID:???
ショートタグは使わないほうがいいというのは常識ですね
とくにサーバ構成がわからない場合
個人開発ならすきにすればいいんじゃないでしょーか
0723nobodyさん2012/06/11(月) 20:55:21.85ID:???
<?xml でエラーになるため short_open_tag = on に消極的だったXHTML時代の名残だな
厳格なXMLとしてのXHTMLなぞ誰も使わない事が分かったため
5.4からは普通に使っていい
0724nobodyさん2012/06/11(月) 21:51:59.63ID:1LdtwXlO
バナーに対する連続クリックについて相談です。

cookieで制御する場合はcookieを削除したら何度でもクリックできるし、
DBにクリックした人のIPアドレスを登録して確認する方法も
IPアドレスをその都度変えられたら、何度もクリックできます。

同じ人が何度もクリックできないようにしたいのですが、
どうすればいいのでしょうか?PHPでは無理でしょうか?
0725nobodyさん2012/06/11(月) 21:57:43.33ID:???
MACアドレスの質問したやつか?
お礼ぐらい言えよ

まぁ無理だ
Flash使えば少しは対策になるぞ
ブラウザのクッキーは知ってても
Flashのクッキーを知らない奴は多いからな
0726nobodyさん2012/06/11(月) 22:01:25.33ID:1LdtwXlO
MACアドレスの質問した奴ではありませんが、
MACアドレスも変更する事って可能ですよね?

連続クリック対策が出来ないなら、Googleの広告とかも
基本的にはクリックしまくれるのでしょうか?
そしたら広告主がかなり損だと思うのですが・・・
0727nobodyさん2012/06/11(月) 22:13:30.46ID:???
完全な対策はGoogle様でもできてない
不確かな情報からGoogleは広告主保護にアカウント潰してるじゃん
アボセンスだのアドセンス狩りだのでggrks
0728nobodyさん2012/06/11(月) 22:43:01.56ID:1LdtwXlO
わかりました。基本的にはプログラム側で
何とか出来ないという事で納得しました。
0729nobodyさん2012/06/11(月) 23:08:26.94ID:???
WWWでは近くのサーバーのMACアドレスになるからねえ
クライアントのMACはそもそも届かないから変更も意味ない
0730nobodyさん2012/06/12(火) 00:07:02.10ID:???
メールも結局いくらでも増やせるしな。
あとは、電話番号ぐらいか。
電話の音声自動応答も安くなったし。

0731nobodyさん2012/06/12(火) 00:20:48.46ID:???
スティッカムは荒らすと主からブロック食らうが
クッキー削除してもIPやホスト変えてもFlashのshared object削除しても部ロク解除できない
会員としてログインしてなくてもブロック解除できない
どうやってユーザを特定しているのか知りたい
PHPできるのか知りたい
0732nobodyさん2012/06/12(火) 00:24:55.31ID:???
>>731
>>1
0733nobodyさん2012/06/12(火) 01:15:22.34ID:???
ちゃんと消せてないだけだろ
0734nobodyさん2012/06/12(火) 02:54:37.09ID:???
>>731
監視されてるんじゃね
てゆーかスティッカムも荒らしてんのかよ
0735nobodyさん2012/06/12(火) 06:46:41.67ID:???
荒らしかよ
存在する価値なし
0736nobodyさん2012/06/12(火) 13:52:46.01ID:???
CakePHPを使ってます。
DB読み込みのところで

$r = $this->Table->findById(1);

とやって1行取得して$rに入れているんですが、更に$rに一行追加する場合は
どうすればいいんでしょうか?

$r .= $this->Table->findById(2);

とやっても$rに2行分格納されませんでした。
0737nobodyさん2012/06/12(火) 13:54:20.27ID:nVFOyccY
すみません、↑ですがIDが出ていませんでした
0738nobodyさん2012/06/12(火) 14:20:01.29ID:???
>>736
それはフレームワークの質問であり、PHPの質問じゃなくね
使い方を知りたいのなら質問するよりマニュアル読んだほうがいいよ絶対

cakePHPは知らないけど、名前から推測するに
それは取得する行数ではなく取得したいデータのidを入れるところじゃね
0739nobodyさん2012/06/12(火) 14:26:07.03ID:???
>>738
馬鹿は黙ってた方がいいと思う。ていうかお前PHP使ってないだろ?
0740nobodyさん2012/06/12(火) 14:36:36.21ID:???
PHP使ってないなら馬鹿じゃないんじゃね?
0741nobodyさん2012/06/12(火) 16:36:48.12ID:???
IDも出さなきゃテンプレ読まないからスレチにも気づかない阿呆には
>>1って一言いえばいいだろ

わざわざ1行目で解説してやるなんて俺優しいな
0742nobodyさん2012/06/12(火) 16:43:59.43ID:okd1h7wf
DB接続のパスワード、どうやって見れないようにするのが一般的でしょうか
■ このスレッドは過去ログ倉庫に格納されています