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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/03/16(日) 17:23:27ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
04594402008/03/29(土) 20:52:41ID:siokcgs9
処理はバックグラウンドって
そんなバカな
0460nobodyさん2008/03/29(土) 21:54:44ID:???
$aaa[0] = array( "abc"=>"123","def"=>"456");
$aaa[1] = array( "AAA"=>"123","BB"=>"456");

こういう配列で$aaa[0]の一番最初のabcは$aaa[0][0]ではないのでしょうか?
うまくとりだせません
0461nobodyさん2008/03/29(土) 22:08:51ID:???
$aaa[0]["abc"]
0462nobodyさん2008/03/29(土) 22:10:32ID:???
>>460
意味わかんないのに "abc"とか書くなって
頼むからマニュアルか入門サイトか入門本でも見てくれ
0463nobodyさん2008/03/29(土) 22:40:12ID:TG/x4Siy
!$a
$a == null
is_null($a)

の違いがわかりません
動作的には全部一緒の動作をするようですが
どう違うのでしょうか?
0464nobodyさん2008/03/29(土) 22:48:13ID:???
>>463
それを説明するのはむずかしい
全部状態が0なんだよ
$a == false
$a = 0
なんかも
0465nobodyさん2008/03/29(土) 23:35:26ID:???
>>463
とりあえず試してみた。
!$a は$aが0や'0'や空文字列やfalseの時にも真になる。
$a==null も同様。

is_null($a);は$aがnullのときだけ真になる。
$a==nullも同様。
04664652008/03/29(土) 23:36:05ID:???
ミスった。最後は
$a===null ね。
0467nobodyさん2008/03/29(土) 23:37:10ID:???
is_nullは違うだろ.emptyなら同じだが
0468nobodyさん2008/03/29(土) 23:54:09ID:7xNaxr2G
453です。

すいません、お礼がすごく遅くなりまして。。

みなさんのおかげでなんとか解決できました。
本当にありがとうございます。
0469がぐゆき2008/03/30(日) 00:36:27ID:OfxxBLHH
質問させてください

変数に入っているtextを一行ずつ処理したいのですが
どうしたら宜しいでしょうか???

ファイルを読み込んで一行ずつ処理する方法は沢山ありますが
変数内のtextの処理は見つかりませんでした…

ご教授よろしくお願いいたします。
0470nobodyさん2008/03/30(日) 00:38:19ID:???
explode("\n", $text)
0471nobodyさん2008/03/30(日) 01:17:19ID:???
>>470
サンクス

でもその後も欲しい…

foreach($sub_text as $text){
処理
処理
処理
}

でいいのけ???
0472nobodyさん2008/03/30(日) 01:19:11ID:???
だめだぴょん
0473がぐゆき2008/03/30(日) 01:21:01ID:OfxxBLHH
>>472
ぴょんじゃねーよwww

おしえてくだしあwww
0474nobodyさん2008/03/30(日) 01:51:39ID:???
自分の頭使って考えろボケカス
0475がぐゆき2008/03/30(日) 02:12:14ID:???
自分で考えた結果やっぱりこうなったぉ???

foreach($sub_text as $text){
処理
処理
処理
}

今の所うまくいってるみたいだけど…?

もっとスマートというか…セオリーがあったら
nobody大先生に教えてもらいたいぽ…

0476nobodyさん2008/03/30(日) 02:14:12ID:???
二度と来ないで下さい。
次の質問よろ。
0477nobodyさん2008/03/30(日) 02:57:50ID:xDq/YOeJ
プログラムをいろいろと拡張する中で使用する自作関数が増えてきたのですが、
大量の関数をうまく扱うコツなんかはないでしょうか?
0478nobodyさん2008/03/30(日) 03:19:53ID:???
本当にそんなに自作関数が必要か客観的に見直してみる。
0479nobodyさん2008/03/30(日) 04:18:46ID:???
>>478
自作関数は必要でしょ。どの言語体系でも関数を自作で作られる機構は用意されているし、
世の中ビルトイン関数だけで片付くものじゃない。
素人かな?
0480nobodyさん2008/03/30(日) 04:28:44ID:???
自作関数そのものが要らないとは言ってなくね?
1度しか使わないうえに数行で書き直せるようなコードがガッツリ関数化されてたなんてのは良くある話

同じような系統の処理をクラスに纏めるとか、命名規則とか、ちゃんとコメントを入れるとか
1年後に見ても何をする関数なのかすぐ理解できるような書き方をしておくと扱いやすいかも知らん
0481nobodyさん2008/03/30(日) 04:33:45ID:???
>>479
ワラタ プログラミング学び始め3ヶ月の初心者乙w
0482nobodyさん2008/03/30(日) 04:50:10ID:???
>>480
>>478は、見直してみろって言っているが、暗に自作関数は要らないと言っていると思うんだが。
後半は、同意。

>>481
3ヶ月どころか、3年を通り越して7年もやっているんだが。phpだけじゃないが。
0483nobodyさん2008/03/30(日) 04:56:45ID:???
>>482
とてもそうは見えないですよ。本当のところは3週間くらいかと思った。そもそも国語力が足りないんじゃないですか?

0484nobodyさん2008/03/30(日) 05:04:06ID:???
>>483
意味分からん。
phpはビルトイン関数が多いから、自作関数を作るのはビルトイン関数を
把握しきれていない証拠だといいたいのか?

ビルトイン関数はユーティリティー関係が充実しているのは確かだが、
それだけではシステムは組めない。
業務クラスを実装していけば、複数の業務で共通する処理を業務共通クラスとして外だしにすることもよくあること。

もっと、勉強してこい。
0485nobodyさん2008/03/30(日) 06:34:08ID:???
>>484はプログラミング初心者ではないと思うが、日本語初心者だろうとは思う
0486nobodyさん2008/03/30(日) 06:34:28ID:???
>>483
>>478は自作関数は要らない ではなく、関数化する必要が在る・無いを見極める事が必要って言っていると思う

関数化は作る時の作業効率だけではなく、他人が後からトレースする時の効率も考える必要があると思う
スパゲティコードもトレースに時間がかかるけど、関数だらけのもトレースに時間がかかる
自作関数の中にまた自作関数があって、その中に自作関数があって、やっている事は数行で1度しか呼び出しされない
とか…それが解るのはそのファイル内の処理を全てトレースして理解してからなんだよね
関数化やライブラリ化するのかそのバランスを見極める必要はあると思う
0487nobodyさん2008/03/30(日) 09:29:29ID:oSilb2mW
パスワードをハッシュで保存して、パスワードが入力されたらハッシュ化して比較しようと思っています。
ハッシュ文字列が長いので、ログのサイズカット目的で、
substrで7文字程度にカットしようと思うのですが、これで行った比較は正確なものと言えるでしょうか?
0488nobodyさん2008/03/30(日) 09:41:35ID:???
部分だけの比較でなんで正確だと思うんだ。
0489nobodyさん2008/03/30(日) 10:15:54ID:???
>>477
自分は単なる関数でもクラスのstaticメソッドにして整理してる。

>>487
正確はどうかは、ここで言う「正確」という言葉の定義による。
ログの目的にもよるけど、ログ出力するときだけカットするようにしたら?
0490nobodyさん2008/03/30(日) 10:24:41ID:???
数万文字程度なら黙って全部MD5にぶちこめ
0491nobodyさん2008/03/30(日) 10:32:48ID:???
>>490
md5で生成された32バイトの文字列が長いということではないの?
04924872008/03/30(日) 11:00:37ID:???
レスありがとうございます

>>488
言われてみればそうですね。ほぼ正確という言葉が正しかったですね。

フォーラムを作っていてトピックや発言を消せるようにパスワードをつけています。
DBを用いずテキストにログを保存しているため、ログが蓄積するとDBに比べ速度が遅くなります。
少しでも読み込む文字列を少なくするために、保存する時にハッシュ化したパスワードをカットしようと思った次第です。
アルゴリズムはビット長の長いwhirlpoolを使っています。

妥協して安全性には少し難がありますが、ビット長の短いものに変更したいと思います。
0493nobodyさん2008/03/30(日) 12:48:20ID:???
>>463
はい、マニュアルどうぞ
http://www.php.net/manual/ja/types.comparisons.php
0494nobodyさん2008/03/30(日) 18:18:33ID:???
$_SERVER["HTTP_CONNECTION"] って普通のブラウザ(携帯除く)なら必ず Keep-Alive になるのでしょうか?
スパムを防ぐのにこれを入れておくと、どういう不都合が考えられますか?
0495nobodyさん2008/03/30(日) 19:14:15ID:pBE7+GD1
すでに存在する関数「db_get」というのが読み込まれているのですが、それを無効化して、あらたに「db_get」という関数を定義することはできるのでしょうか?
他のファイルで旧「db_get」を使用しているため、古いのは残したまま、別のPHPでは新しいdb_getを実行したいのです。
なお読み込みは全て共通ファイルで読み込んでいるので、新しいPHPでも古いdb_getは読み込まれています。
やはり新しいほうを別の名前にするしかないでしょうか?
0496nobodyさん2008/03/30(日) 20:25:54ID:LU6QHGFg
iniファイルで文字を取得して出力しているのですが、
伸ばし棒のところで文字化けしてしまいます。
どうしたらいいでしょうか?
0497nobodyさん2008/03/30(日) 20:30:28ID:???
>>495
名前空間使えばできるけど現状では無理。
プレフィックスつけるかクラスに閉じ込めるのが現実的かと。
>>496
コード見せて。
0498nobodyさん2008/03/30(日) 20:37:26ID:LU6QHGFg
class page{
private $ini = "";
public function __construct(){
$this->ini = parse_ini_file("PHPdefine.ini");
}
public function vewheader(){
print $this->ini["bbs_title"];
}
}

↓PHPdefine.ini
bbs_title=アー
0499nobodyさん2008/03/30(日) 20:58:40ID:???
>>498
shift-jisやめれ
0500nobodyさん2008/03/30(日) 21:46:48ID:???
ばーかばーか
0501nobodyさん2008/03/30(日) 22:07:04ID:???
EUCかUTF-8あたりで保存するんだ。
0502nobodyさん2008/03/31(月) 00:21:19ID:???
ディレクトリにあるファイル数を確認し、0000x.incというファイル名前をキーに
降順で読み込む。また、10件以上有る場合は次ページ以降を作ってそちらに読み込む。

こんな感じのことできますか?
0503nobodyさん2008/03/31(月) 00:43:38ID:???
>>502
「0000x.incというファイル名前をキーに」
というところが意味分からん、何のキー?
0504nobodyさん2008/03/31(月) 01:00:09ID:???
>>502
「…ファイル数を確認し、」以降が全くわからん。

・あるディレクトリ内のファイル数を確認したい。
・ファイル名は "連番.inc" にしてある。ファイル名で降順ソートしたい。
・ソート後、ひとつずつファイルを読み込んで1件/1ファイルとして出力したい。
・最大10件/ページになるようにしたい(ので、ファイル数を確認した)。

自分のエスパーカではこれぐらいが限度だ。
0505nobodyさん2008/03/31(月) 01:13:18ID:???
>>503
そうですね。書いてても分かりませんでした。

>>504さんのおっしゃるとおりです!ビックリエスパーですorz

連番.incファイルを読み込みたいんです。
その内容はただのtableタグで書かれた表なんですが、データベースとか使えない
サーバーで、それ以前の問題の気もしますが。

・連番の数の大きいほうが、新しいファイルなので降順にしたい
・一つのページに表は10個読み込みたい。
・10個以上ある場合、次のページにいくようにしたい。

以上のことがしたいんだと思います。
0506nobodyさん2008/03/31(月) 01:20:16ID:???
ひとまず質問するならID出そうな、>>1読んでね
で、出来るかどうかなら「出来る」
0507nobodyさん2008/03/31(月) 02:25:45ID:???
プログラムの能力よりもコミュニケーション能力が如何に大切かがようやく分かったような気がする。
0508nobodyさん2008/03/31(月) 04:13:28ID:???
system()で
対話形式、たとえば、ssh でパスワード入力したいんだけど、
良い方法ないでしょうか。
単純に
system("ssh -phogehoge localhost")
としちゃうとパスワードがローカルユーザーに漏れてしまう可能性があるので。
05094952008/03/31(月) 08:55:13ID:aabaHexl
>>497
そうなんですか……
おとなしく接頭語をつけることにします。
ありがとうございました。
0510nobodyさん2008/03/31(月) 09:47:51ID:???
ttp://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
0511nobodyさん2008/03/31(月) 09:52:46ID:???
>>508
そういう場合、一般的には expect スクリプトを用意するんだけど、
sshだったらホストベースのRSA認証でログインするのがいいんじゃない?
とはいえ、信用できないユーザがいるホストからスクリプトでログインしたいとはなかなか豪快な話。
0512nobodyさん2008/03/31(月) 11:20:40ID:zaGfhvtn
>>505
方法は二つ
・各ファイルの情報を持つ親ファイルを作る。
・ファイル名を工夫する。ハイフォン等を用いてファイル番号と行数をファイル名とする。
0513nobodyさん2008/03/31(月) 11:40:30ID:???
ハイフォン(笑)
0514nobodyさん2008/03/31(月) 13:23:58ID:???
>>495
http://jp.php.net/manual/ja/function.runkit-function-redefine.php
とか使えばできる
ただこれは標準関数じゃないので
peclからインスコが必要
0515nobodyさん2008/03/31(月) 13:25:46ID:D840Cc+c
iniファイルの値を配列として取得することは出来ないでしょうか?
0516nobodyさん2008/03/31(月) 13:29:03ID:???
>>515
parse_ini_file
0517nobodyさん2008/03/31(月) 13:30:35ID:???
>>514
指定したクラスに新しいメソッドを動的に追加することもできるんだ。
前そんな話が出てたと思うけど便利だね。
0518nobodyさん2008/03/31(月) 13:46:22ID:D840Cc+c
>>516
parse_ini_fileの場合は連想配列で取得ですよね?
連想配列ではなくて、通常の配列で取得する方法を探しているのですけど
0519nobodyさん2008/03/31(月) 13:59:27ID:???
じゃあarray_values(parse_ini_file($filename))
0520nobodyさん2008/03/31(月) 14:37:58ID:???
>>518
教えてもらうほうが偉そうってすごいよなw
最近は質問系サイトの影響かと思っているが
0521nobodyさん2008/03/31(月) 14:40:30ID:???
質問スレは、質問者で成り立っているんだから、
ある程度傲慢でもしょうがないんじゃないの。

そんなことに、いちいち突っ込む奴がどうかと・・・
0522nobodyさん2008/03/31(月) 14:52:28ID:???
成り立ってるのはお互い様だろ
0523nobodyさん2008/03/31(月) 15:12:31ID:???
>>521
おいおい何言ってんだ。回答者で成り立ってんだよお前知障か。
質問者なんていなくとも誰も困らん。
0524nobodyさん2008/03/31(月) 15:19:28ID:???
>>523
両方だろ。馬鹿レスしていると、お前のチンチンちょん切るよ!
0525nobodyさん2008/03/31(月) 15:32:30ID:???
質問者以外はお帰りください(笑)
0526nobodyさん2008/03/31(月) 15:41:29ID:???
>>518
で,その問題はそれで解決したのか?
0527nobodyさん2008/03/31(月) 15:45:56ID:???
尋ねる人と答える人以外は必要ないしな。
茶々入れる人は最優先でいらない人。
0528nobodyさん2008/03/31(月) 16:03:28ID:???
華麗にスルー
0529nobodyさん2008/03/31(月) 16:43:15ID:???
ばーかばーか
0530nobodyさん2008/03/31(月) 17:48:52ID:bWUoRvpM
echo date("m",strtotime("+1 month"));

としたら、04ではなく、05になります。
今はまだ3月なので4になるはずなのですが、どうしてでしょうか?
0531nobodyさん2008/03/31(月) 17:58:54ID:???
>>530
04月には31日がないからPHPさんも困ったんじゃないかな
05325302008/03/31(月) 18:06:52ID:bWUoRvpM
>>531
この書き方の場合、「月だけ+1して表示」することは出来ないのでしょうか?
どういう風な書き方をするのがベストなのでしょうか?
0533nobodyさん2008/03/31(月) 18:11:58ID:???
mktime
05345312008/03/31(月) 18:16:30ID:???
>>532
> 「月だけ+1して表示」
それをそのまま書くとか

echo date("m") + 1; // string + 1 が気持ち悪ければ (int) するなり何なり
0535nobodyさん2008/03/31(月) 18:18:58ID:???
年の瀬で涙目
05365312008/03/31(月) 18:20:45ID:???
ですよね
0537nobodyさん2008/03/31(月) 18:29:17ID:???
12より大きけりゃなんたらって処理入れるだろ普通w
05385302008/03/31(月) 18:33:57ID:bWUoRvpM
>>534-537
みなさん、ありがとうございます。
それでは以下のようなコードを書いてみましたが、いかがでしょうか?

// 次の月にまたぐ場合
if(date("j")>=abs($_POST["day"])){
$month = date("m")+1;

// 12より大きい場合
if($month > "12"){
$year = date("Y",strtotime("+1 year"));
$month = "01";
}else{
$year = date("Y");
}
}else{
$month = date("m");
$year = date("Y");
}
0539nobodyさん2008/03/31(月) 18:37:28ID:NIwRaO2m
redhat 7.3 + rpm 標準付属の php-4.1.2 を使っています。

APC とか、MMCache とか、ionCube とか、e-accelerator とか、
スクリプトキャッシュを入れたいんだけど、
rpm を使って簡単に導入できるものってある?

DAG とかで公開されてる rpm は、fedora core 2 以降がほとんどで、
redhat 7.3 みたいな古代遺跡には対応してくれてないみたいなんだよね。。。
0540nobodyさん2008/03/31(月) 18:39:32ID:???
いかかですか?って、アホだなぁという感想しか
0541nobodyさん2008/03/31(月) 18:56:58ID:???
>>538
ググッた結果mktimeで一日とかのタイムスタンプを作ったほうが楽そう
0542nobodyさん2008/03/31(月) 19:13:13ID:???
12の剰余をとるほうが楽じゃね?
0543nobodyさん2008/03/31(月) 19:23:19ID:???
>>538
初っ端から違和感があるけどPOSTされるデータがよく分からないから黙っておく
$month = date("m")+1;とすると03が4になっちゃうんじゃないかな

年月日までの精度でいいなら単純なint値として扱って
出力時に整形するほうが楽で安全だと思うよ

個人的にはgetdate()で作った配列をバラして使うのが好き
0544nobodyさん2008/03/31(月) 19:33:15ID:???
PHPでこの先生きのこれますか?
0545nobodyさん2008/03/31(月) 19:42:39ID:???
きのこるって書きたいだけの人よりは。
0546nobodyさん2008/03/31(月) 20:06:02ID:???
先のことなど日曜プログラマが気にすることはないよ
0547nobodyさん2008/03/31(月) 20:27:31ID:???
プロでも日曜プログラマに適わないのも居るがなw
0548nobodyさん2008/03/31(月) 20:51:28ID:???
業務で使わないなら気にすることはないって言ってるんだろうに
敵う敵わないとか関係ないだろ
0549nobodyさん2008/03/31(月) 21:30:46ID:???
PHPで生き残れるかは本人しだいだけど、PHPが生き残るかは・・・
5年後には今のN88-BASIC並に廃れてたりちて。
0550nobodyさん2008/03/31(月) 22:40:55ID:???
「どの言語で作るか?」
よりも
「何を作るか?」

が、重要だと思いますです。
0551nobodyさん2008/03/31(月) 22:51:49ID:???
「どうやって作るか?」が重要だと思いますです
0552nobodyさん2008/03/31(月) 23:05:10ID:???
ソースがめちゃくちゃ汚かったとしても
目的を達成する物が出来たら良いと思いますです。
0553nobodyさん2008/03/31(月) 23:16:49ID:???
いや良くねぇよw
0554nobodyさん2008/03/31(月) 23:28:28ID:???
一人ならいいかもね
複数でやるには汚いと効率悪い
さらに無駄に処理が重いなら良くは無いかも
0555nobodyさん2008/03/31(月) 23:42:08ID:???
でも、「効率がよい」って定義も難しくない?

例えば効率が良いと思ってフレームワーク使っても
結局、別の人間がそのフレームワークを使えなければいけないわけで。
0556nobodyさん2008/03/31(月) 23:47:19ID:???
php書くのにちょうどいいエディタはありますか?
0557nobodyさん2008/03/31(月) 23:47:37ID:???
何年か前に書いたperlのソースを見たら死にたくなったよ

一人でも綺麗に書いた方がイイ!
0558nobodyさん2008/03/31(月) 23:56:33ID:???
>>556
emeditor
0559nobodyさん2008/03/31(月) 23:58:29ID:???
>>556
phpだけで考えるならphpeditorスタンダードアローン版
■ このスレッドは過去ログ倉庫に格納されています