【PHP】下らねぇ質問はここに書き込みやがれ 66
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/16(日) 17:23:27ID:???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カテゴリ)の各スレで
0478nobodyさん
2008/03/30(日) 03:19:53ID:???0479nobodyさん
2008/03/30(日) 04:18:46ID:???自作関数は必要でしょ。どの言語体系でも関数を自作で作られる機構は用意されているし、
世の中ビルトイン関数だけで片付くものじゃない。
素人かな?
0480nobodyさん
2008/03/30(日) 04:28:44ID:???1度しか使わないうえに数行で書き直せるようなコードがガッツリ関数化されてたなんてのは良くある話
同じような系統の処理をクラスに纏めるとか、命名規則とか、ちゃんとコメントを入れるとか
1年後に見ても何をする関数なのかすぐ理解できるような書き方をしておくと扱いやすいかも知らん
0482nobodyさん
2008/03/30(日) 04:50:10ID:???>>478は、見直してみろって言っているが、暗に自作関数は要らないと言っていると思うんだが。
後半は、同意。
>>481
3ヶ月どころか、3年を通り越して7年もやっているんだが。phpだけじゃないが。
0483nobodyさん
2008/03/30(日) 04:56:45ID:???とてもそうは見えないですよ。本当のところは3週間くらいかと思った。そもそも国語力が足りないんじゃないですか?
0484nobodyさん
2008/03/30(日) 05:04:06ID:???意味分からん。
phpはビルトイン関数が多いから、自作関数を作るのはビルトイン関数を
把握しきれていない証拠だといいたいのか?
ビルトイン関数はユーティリティー関係が充実しているのは確かだが、
それだけではシステムは組めない。
業務クラスを実装していけば、複数の業務で共通する処理を業務共通クラスとして外だしにすることもよくあること。
もっと、勉強してこい。
0486nobodyさん
2008/03/30(日) 06:34:28ID:???>>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:???自分は単なる関数でもクラスのstaticメソッドにして整理してる。
>>487
正確はどうかは、ここで言う「正確」という言葉の定義による。
ログの目的にもよるけど、ログ出力するときだけカットするようにしたら?
0490nobodyさん
2008/03/30(日) 10:24:41ID:???0492487
2008/03/30(日) 11:00:37ID:???>>488
言われてみればそうですね。ほぼ正確という言葉が正しかったですね。
フォーラムを作っていてトピックや発言を消せるようにパスワードをつけています。
DBを用いずテキストにログを保存しているため、ログが蓄積するとDBに比べ速度が遅くなります。
少しでも読み込む文字列を少なくするために、保存する時にハッシュ化したパスワードをカットしようと思った次第です。
アルゴリズムはビット長の長いwhirlpoolを使っています。
妥協して安全性には少し難がありますが、ビット長の短いものに変更したいと思います。
0493nobodyさん
2008/03/30(日) 12:48:20ID:???はい、マニュアルどうぞ
http://www.php.net/manual/ja/types.comparisons.php
0494nobodyさん
2008/03/30(日) 18:18:33ID:???スパムを防ぐのにこれを入れておくと、どういう不都合が考えられますか?
0495nobodyさん
2008/03/30(日) 19:14:15ID:pBE7+GD1他のファイルで旧「db_get」を使用しているため、古いのは残したまま、別のPHPでは新しいdb_getを実行したいのです。
なお読み込みは全て共通ファイルで読み込んでいるので、新しいPHPでも古いdb_getは読み込まれています。
やはり新しいほうを別の名前にするしかないでしょうか?
0496nobodyさん
2008/03/30(日) 20:25:54ID:LU6QHGFg伸ばし棒のところで文字化けしてしまいます。
どうしたらいいでしょうか?
0497nobodyさん
2008/03/30(日) 20:30:28ID:???名前空間使えばできるけど現状では無理。
プレフィックスつけるかクラスに閉じ込めるのが現実的かと。
>>496
コード見せて。
0498nobodyさん
2008/03/30(日) 20:37:26ID:LU6QHGFgprivate $ini = "";
public function __construct(){
$this->ini = parse_ini_file("PHPdefine.ini");
}
public function vewheader(){
print $this->ini["bbs_title"];
}
}
↓PHPdefine.ini
bbs_title=アー
0500nobodyさん
2008/03/30(日) 21:46:48ID:???0501nobodyさん
2008/03/30(日) 22:07:04ID:???0502nobodyさん
2008/03/31(月) 00:21:19ID:???降順で読み込む。また、10件以上有る場合は次ページ以降を作ってそちらに読み込む。
こんな感じのことできますか?
0504nobodyさん
2008/03/31(月) 01:00:09ID:???「…ファイル数を確認し、」以降が全くわからん。
・あるディレクトリ内のファイル数を確認したい。
・ファイル名は "連番.inc" にしてある。ファイル名で降順ソートしたい。
・ソート後、ひとつずつファイルを読み込んで1件/1ファイルとして出力したい。
・最大10件/ページになるようにしたい(ので、ファイル数を確認した)。
自分のエスパーカではこれぐらいが限度だ。
0505nobodyさん
2008/03/31(月) 01:13:18ID:???そうですね。書いてても分かりませんでした。
>>504さんのおっしゃるとおりです!ビックリエスパーですorz
連番.incファイルを読み込みたいんです。
その内容はただのtableタグで書かれた表なんですが、データベースとか使えない
サーバーで、それ以前の問題の気もしますが。
・連番の数の大きいほうが、新しいファイルなので降順にしたい
・一つのページに表は10個読み込みたい。
・10個以上ある場合、次のページにいくようにしたい。
以上のことがしたいんだと思います。
0507nobodyさん
2008/03/31(月) 02:25:45ID:???0508nobodyさん
2008/03/31(月) 04:13:28ID:???対話形式、たとえば、ssh でパスワード入力したいんだけど、
良い方法ないでしょうか。
単純に
system("ssh -phogehoge localhost")
としちゃうとパスワードがローカルユーザーに漏れてしまう可能性があるので。
0509495
2008/03/31(月) 08:55:13ID:aabaHexlそうなんですか……
おとなしく接頭語をつけることにします。
ありがとうございました。
0510nobodyさん
2008/03/31(月) 09:47:51ID:???0511nobodyさん
2008/03/31(月) 09:52:46ID:???そういう場合、一般的には expect スクリプトを用意するんだけど、
sshだったらホストベースのRSA認証でログインするのがいいんじゃない?
とはいえ、信用できないユーザがいるホストからスクリプトでログインしたいとはなかなか豪快な話。
0512nobodyさん
2008/03/31(月) 11:20:40ID:zaGfhvtn方法は二つ
・各ファイルの情報を持つ親ファイルを作る。
・ファイル名を工夫する。ハイフォン等を用いてファイル番号と行数をファイル名とする。
0513nobodyさん
2008/03/31(月) 11:40:30ID:???0514nobodyさん
2008/03/31(月) 13:23:58ID:???http://jp.php.net/manual/ja/function.runkit-function-redefine.php
とか使えばできる
ただこれは標準関数じゃないので
peclからインスコが必要
0515nobodyさん
2008/03/31(月) 13:25:46ID:D840Cc+c0518nobodyさん
2008/03/31(月) 13:46:22ID:D840Cc+cparse_ini_fileの場合は連想配列で取得ですよね?
連想配列ではなくて、通常の配列で取得する方法を探しているのですけど
0519nobodyさん
2008/03/31(月) 13:59:27ID:???0521nobodyさん
2008/03/31(月) 14:40:30ID:???ある程度傲慢でもしょうがないんじゃないの。
そんなことに、いちいち突っ込む奴がどうかと・・・
0522nobodyさん
2008/03/31(月) 14:52:28ID:???0525nobodyさん
2008/03/31(月) 15:32:30ID:???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としたら、04ではなく、05になります。
今はまだ3月なので4になるはずなのですが、どうしてでしょうか?
0532530
2008/03/31(月) 18:06:52ID:bWUoRvpMこの書き方の場合、「月だけ+1して表示」することは出来ないのでしょうか?
どういう風な書き方をするのがベストなのでしょうか?
0533nobodyさん
2008/03/31(月) 18:11:58ID:???0534531
2008/03/31(月) 18:16:30ID:???> 「月だけ+1して表示」
それをそのまま書くとか
echo date("m") + 1; // string + 1 が気持ち悪ければ (int) するなり何なり
0535nobodyさん
2008/03/31(月) 18:18:58ID:???0536531
2008/03/31(月) 18:20:45ID:???0537nobodyさん
2008/03/31(月) 18:29:17ID:???0538530
2008/03/31(月) 18:33:57ID:bWUoRvpMみなさん、ありがとうございます。
それでは以下のようなコードを書いてみましたが、いかがでしょうか?
// 次の月にまたぐ場合
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:NIwRaO2mAPC とか、MMCache とか、ionCube とか、e-accelerator とか、
スクリプトキャッシュを入れたいんだけど、
rpm を使って簡単に導入できるものってある?
DAG とかで公開されてる rpm は、fedora core 2 以降がほとんどで、
redhat 7.3 みたいな古代遺跡には対応してくれてないみたいなんだよね。。。
0540nobodyさん
2008/03/31(月) 18:39:32ID:???0542nobodyさん
2008/03/31(月) 19:13:13ID:???0543nobodyさん
2008/03/31(月) 19:23:19ID:???初っ端から違和感があるけどPOSTされるデータがよく分からないから黙っておく
$month = date("m")+1;とすると03が4になっちゃうんじゃないかな
年月日までの精度でいいなら単純なint値として扱って
出力時に整形するほうが楽で安全だと思うよ
個人的にはgetdate()で作った配列をバラして使うのが好き
0544nobodyさん
2008/03/31(月) 19:33:15ID:???0545nobodyさん
2008/03/31(月) 19:42:39ID:???0546nobodyさん
2008/03/31(月) 20:06:02ID:???0547nobodyさん
2008/03/31(月) 20:27:31ID:???0548nobodyさん
2008/03/31(月) 20:51:28ID:???敵う敵わないとか関係ないだろ
0549nobodyさん
2008/03/31(月) 21:30:46ID:???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:???0554nobodyさん
2008/03/31(月) 23:28:28ID:???複数でやるには汚いと効率悪い
さらに無駄に処理が重いなら良くは無いかも
0555nobodyさん
2008/03/31(月) 23:42:08ID:???例えば効率が良いと思ってフレームワーク使っても
結局、別の人間がそのフレームワークを使えなければいけないわけで。
0556nobodyさん
2008/03/31(月) 23:47:19ID:???0557nobodyさん
2008/03/31(月) 23:47:37ID:???一人でも綺麗に書いた方がイイ!
0560nobodyさん
2008/04/01(火) 00:53:09ID:+ectGcI2中括弧で括っても駄目でした。 御教示よろしくお願いします。
$sql = <<< _EOD_
INSERT INTO table2ch VALUES(
'{$entry["name"]}',
'{$entry["kana"]}'
)
_EOD_;
0562nobodyさん
2008/04/01(火) 01:26:48ID:???出るよ
$entry = array('name'=>'a', 'kana'=>'b');
$sql = <<< _EOD_
INSERT INTO table2ch VALUES(
'{$entry["name"]}',
'{$entry["kana"]}'
)
_EOD_;
echo $sql;
↓結果
INSERT INTO table2ch VALUES( 'a', 'b' )
0563nobodyさん
2008/04/01(火) 01:31:50ID:???ヒアドキュメントを使って全てまとめて出力するのと、
変数部分のみを<?php echo $hoge;?>のようにして出力するのでは
どらが高速でしょうか?
0564nobodyさん
2008/04/01(火) 01:36:37ID:???0565nobodyさん
2008/04/01(火) 01:42:15ID:???死ぬほどわずかでも速い方が精神衛生上良いので、
もし分かれば教えて欲しいです
0566nobodyさん
2008/04/01(火) 02:05:45ID:???俺ならテンプレートエンジン使うし使わない場合でもHTMLを変数に格納して変数展開はドット演算子で接続するかな。
0567nobodyさん
2008/04/01(火) 07:02:29ID:???速くしたけりゃ中間言語コンパイラ使うとかもっと抜本的な
解決策を探るべきだよ。
0568nobodyさん
2008/04/01(火) 07:07:25ID:???愛なんていらないの
優しい言葉が欲しいだけなの
0569nobodyさん
2008/04/01(火) 07:11:52ID:???if($list["$i"] == ""){
$list["$i"] = "1234";
}
$list["$i"] == "" この式がおかしいのでしょうか?
もし$list["$i"]がなければ処理という式はどう書けばいいでしょうか?
0571569
2008/04/01(火) 07:32:15ID:???配列またはオブジェクトをキーとして使用することはできません。
これを行なうと、warning: Illegal offset type を発生します。
だって
0572nobodyさん
2008/04/01(火) 08:03:38ID:???0573nobodyさん
2008/04/01(火) 09:18:24ID:QfLzxrc0content-typeをtext/html以外にして出力すれば、
ダウンロード自体はさせることが出来ましたが、
ファイル名が、その処理をするphpのuriになります
リクエストを受けたPHP側で、ダウンロードさせるファイル名を決定するには
どうしたらいいのでしょうか?
0574nobodyさん
2008/04/01(火) 09:19:25ID:???http://jp2.php.net/header
0575nobodyさん
2008/04/01(火) 15:07:37ID:???>>1読んでID出そうな
isset
empty
だろうか、やりたいことがはっきり分からない
問題の出るきちんと動く最小ソースを張れ
■ このスレッドは過去ログ倉庫に格納されています