【PHP】下らねぇ質問はここに書き込みやがれ 65
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/24(日) 21:03:17ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 64
http://pc11.2ch.net/test/read.cgi/php/1202536271/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0268nobodyさん
2008/03/03(月) 00:17:23ID:???なるほど。オブジェクト指向で書こうとすると
設計に悩んでフリーズしてしまうことが多い。
慣れてないしデザインパターンもどれをあてはめればいいのかわかんない。
かと言って本能のまま書くと役割分担のはっきりしないクラスばっかりになる。
結局「PHPごときにちまちまとオブジェクトなんてやってらんね」ってなるんだよね。
>>265
それぐらいの塩梅でいいかな。
0269nobodyさん
2008/03/03(月) 00:18:10ID:???0270nobodyさん
2008/03/03(月) 00:34:41ID:8BSVZMuK内容はPHP Notice: Use of undefined ・・・・
というものが多いです
エラーが記録されているスクリプトの種類は多岐に
わたっています。たとえばフリーで公開されているものを
そのまま導入して使用していたものからそうでないものまで。
0271nobodyさん
2008/03/03(月) 00:49:10ID:???0272nobodyさん
2008/03/03(月) 00:57:35ID:???突然って何よ?まぁめんどくさいから答えなくてもいいけど
httpd.confとかphp.iniでも制御できるからうまく設定したらいいよ
詳しいことはググレ
0273nobodyさん
2008/03/03(月) 01:12:41ID:8BSVZMuKおっしゃる通りルーズなプログラムかもしれませんorz
>>272
今までは問題なかった(と思う)のでほんとに突然なんです(涙
月替わりに突然エラーログが大量に記録されるようになったというイメージです。
ちなみに現在はエラーログはまったく出ていません。
php.iniの設定を見てみたのですが
log_errors On
log_errors_max_len 1024
error_reporting 6143
となっているのでエラーがあれば記録されると思うのですが・・
なぜこのような事がおきたのか原因を知りたいです
0274nobodyさん
2008/03/03(月) 01:17:45ID:???どこかにないですか?
0275nobodyさん
2008/03/03(月) 02:25:43ID:33Hm4dS7$func = "Hoge";
$func();
↑これは動いて
"Hoge"();
↑なぜこれは動かないのでしょうか?
変数に入れれば良いことではあるのですが、
どうも気になってしようがありません。
PHPの関数呼び出しの仕組みってどこかに載ってますか?
0276nobodyさん
2008/03/03(月) 02:28:20ID:???0277nobodyさん
2008/03/03(月) 02:33:31ID:???そのものズバリではないけど
http://www.php.net/manual/ja/functions.variable-functions.php
http://jp2.php.net/manual/ja/language.oop5.reflection.php#language.oop5.reflection.reflectionfunction
0278nobodyさん
2008/03/03(月) 03:15:49ID:rD8lqAq1友人の紹介で仕事を回してもらうことになったのですが、
仕事としては始めてのphpによる開発なんですが、
見積もりを出してくれと言われていて少し困っています。
【ご質問】見積もりの中で人月に加えてステップ数を求められているのですが、
ステップ数って、空行とかコメント行もステップに数えるのでしょうか?
あと、ステップ数って、プログラムの書き方にも変わりますよね?
1行=======================================
if ($value == 1) { print "test";}
3行=======================================
if ($value == 1) {
print "test";
}
ネットで調べると1人月当たり、1000ステップらしいですが(COBOL)、
PHPの場合も、それが当てはまるのかそれも疑問です。
宜しくお願いします。
0279nobodyさん
2008/03/03(月) 03:26:55ID:???この仕組みのこと、可変関数と言うのですね、今まで知りませんでした。
Reflection機能も初めて知りました、とても勉強になります。
夜中に素早いご回答、どうもありがとうございました。
0280nobodyさん
2008/03/03(月) 05:25:27ID:???Web制作板のSOHOスレで聞けばいいかもしれない。
ただちゃんとした答えが返ってくるかは保証できないけど。
0281nobodyさん
2008/03/03(月) 08:00:57ID:???空行やコメントはステップとは言わない
それだと2ステップじゃないかな?
とりあえず
必要工数*欲しい時給+何かあった時の自分的保険費用で出してみたら
因みに俺の知ってる所だと1人月で
30-70マンぐらいの幅があった
0282nobodyさん
2008/03/03(月) 08:15:12ID:???ステップ数ってのは、処理手順の事?ソースの行数の事?
よく判らないんだけど、開発前からステップ数なんて判るものなの?
0283nobodyさん
2008/03/03(月) 08:23:59ID:???そんなのは7行としておけばいい。
ステップ数なんてのはパンチカード時代の遺物だ。
そんなもの求める会社は注意したほうがいいぞ。
0284nobodyさん
2008/03/03(月) 11:25:37ID:???0286nobodyさん
2008/03/03(月) 11:57:57ID:GThXklLZmemory_limitとは無関係なのでしょうか?
memory_limitを-1にしても、zend_mm_heap corruptedみたいなエラーが吐き出されてしまいます。
0287nobodyさん
2008/03/03(月) 13:05:13ID:KrsbPUyK$POST = array_map("htmlspecialchars",$_POST);
のような形でpostを一気に変換しています。
普段は問題ないのですが、
<select name="hoge[]" size="8" multiple="multiple">
のような要素がある場合、
Warning: htmlspecialchars() expects parameter 1 to be string, array given in...
という警告が出てしまいます。
これって、解決する方法ないんでしょうか?
よろしくお願いします。
0288nobodyさん
2008/03/03(月) 13:33:06ID:???htmlspecialcharsを元に配列に対応した関数を作ればいいんじゃね。
「php htmlspecialchars 配列 対応」あたりをググルと幸せになれるかもね。
0289nobodyさん
2008/03/03(月) 14:03:39ID:DWqAIEY6誰かご教授ください。
0290nobodyさん
2008/03/03(月) 14:08:16ID:???お前の言うキリバンはいったいいくつのカウントになるんだ?
そのカウントだったらキリバンと表示すればいいんじゃね?
0292nobodyさん
2008/03/03(月) 14:58:46ID:ut4WA0El$title = $item[title];
こいうのは
$title = $item['title'];
↑こういう風に書いた方が良いんですか?
0293nobodyさん
2008/03/03(月) 15:01:42ID:???0294nobodyさん
2008/03/03(月) 15:02:04ID:???その辺詳しくないから曖昧な回答になるが了承くだしあ
上記はまず定数であるかどうか判別される
下記は文字列としてそのまま行く
上記の場合の定数であるか判別する余計な処理があるので下記のほうがいい
また、「title」って定数が合った場合そっちの値が優先されてしまう
0295nobodyさん
2008/03/03(月) 15:45:12ID:HPgcFf+Yありがとうございます
0296nobodyさん
2008/03/03(月) 16:42:21ID:a83ZZyILくだすれぐらいしか聞くとこがなくて。
こんな風に書かれた時間から年月日を取り出す場合
皆さんならどう取り出しますか?
とりあえず3パターン考えてみた。
| $str = "2008-11-08 22:12:25";
|
| //パターン1
| $array = split("-",$str);
| $day = substr($array[2],0,2);
| echo $array[0]."年".$array[1]."月".$day."日";
|
| //パターン2
| $year = substr($str,0,4);
| $month = substr($str,6,2);
| $day = substr($str,9,2);
| echo $year."年".$month."月".$day."日";
|
| //パターン3
| $array1 = split(" ",$str);
| $array2 = split("-",$array1);
| echo $array[0]."年".$array[1]."月".$array[2]."日";
0297nobodyさん
2008/03/03(月) 16:44:38ID:???0298nobodyさん
2008/03/03(月) 16:47:10ID:???引数の書き方が自由すぎてバグの元だよ。
どうして、こんなひどい設計したんだよ。
0299nobodyさん
2008/03/03(月) 16:58:50ID:???0300nobodyさん
2008/03/03(月) 17:00:37ID:???こういう似非プログラマーが日本の中枢にいるから、
この業界の単価が下がっているんだろ。
生活できねーよ。
0301nobodyさん
2008/03/03(月) 17:15:53ID:???似非プログラマー論になる話の流れがわからん。
俺は時と場合に応じた道具の使い分けが出来ません、って告白?
0302nobodyさん
2008/03/03(月) 17:17:07ID:???strtotimeを使う分には問題ないと思うんだがどうだろう
0303296
2008/03/03(月) 17:29:37ID:a83ZZyIL確かにこれは便利ですね。
一応自分が今使おうと思ってるのは
データベース内に格納されてるのを判別するので
多分strtotimeで問題はありません。
しかしバグがあるというのは問題ですね。
使いどころを間違えないように使用したいと思います。
ありがとうございました。
0305nobodyさん
2008/03/03(月) 19:37:52ID:BS/MlDiQ[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
な配列を
array(3) {
[1]=>
int(2)
[0]=>
int(1)
[2]=>
int(3)
}
な配列にしたいんだけど、どうすればいいのだろう?
0306305
2008/03/03(月) 19:41:59ID:BS/MlDiQやりたい事を言葉にすると、配列のキーと値の関係を保持しながら、
要素の場所を入れ替えたり、好きな場所に移動させたいということです。
0307nobodyさん
2008/03/03(月) 19:58:05ID:???0308305
2008/03/03(月) 20:35:02ID:o2rZ954m>>307
もちろんマニュアルは見たのだけど、いまいちうまい事やる方法が
思い浮かばなくて質問しました。
0309287
2008/03/03(月) 20:36:48ID:???あざーす!!
ばっちり解決できました。
ありがとうございます!
03102050
2008/03/03(月) 20:50:47ID:1O+7QDSJこの度、JAVASCRIPTを含む記述で壁にぶち当たってしまいました。
<?php
print "<input type='submit' value='送信' onClick='return confirm('送信します');'>";
?>
と、フォームのボタンを押すと、JAVASCRIPTでメッセージが表示されるように
したいのですが、シングルクォートの中に、さらにJAVASCRIPTのシングルクォート
が来るのが原因のようで動作しません。
どうしたらいいものでしょうか?
0311nobodyさん
2008/03/03(月) 20:58:38ID:???print "<input type='submit' value='送信' onClick='return confirm(\"送信します\");'>"
javascript と html の話でPHPあんまり関係ないよ。
0312nobodyさん
2008/03/03(月) 20:59:01ID:???エスケープって知ってるかい?
っていうかそこはPHPから抜けて書きなよ。
<?php
〜
?>
<input type="submit" value="送信" onClick="return confirm('送信します');">
0313nobodyさん
2008/03/03(月) 21:09:41ID:???php関係ないけど\でエスケープ
>>308
array_spliceやarray_sliceなど。
ただ連想配列を使っておきながら順序を気にするというのはあまりいただけない
03142050
2008/03/03(月) 21:15:48ID:???ご丁寧に有難うございます。
実は、これを変数として格納し、別のtxtファイルに出力し、
さらに別のPHPファイルからこのtxtを読み込みます。
一度試してみます。有難うございました。
03152050
2008/03/03(月) 21:21:05ID:???正しくできました。有難うございます!
0316305
2008/03/03(月) 21:35:13ID:o2rZ954mそうですね。僕としても連想配列はたまたま順序を保持する実装になっているだけ、
という認識で、基本的にはハッシュでもいけるような使い方をするようにしています。
で、教えていただいた関数ですが、うまく使えば良い感じに出来るんじゃないかとは思いますが、
いまいち使い方がよくわかりませんorz もっと精進します。ありがとうございました。
追伸 : 拙作を貼付けておきますので、添削等していただけるとありがたいです
function hoge($array, $p1, $p2) {
$ret = array(); $v_p = array_values($array); $k_p = array_keys($array); $c_p = 0;
foreach($array as $k => $v) {
if ($i == $p1) {
$ret[$k_p[$p2]] = $v_p[$p2];
$i++;
continue;
}
if ($i == $p2) {
$ret[$k_p[$p1]] = $v_p[$p1];
$i++; continue;
}
$ret[$k] = $v; $c_p++;
}
return $ret;
}
0317305
2008/03/03(月) 21:36:28ID:o2rZ954m0318nobodyさん
2008/03/03(月) 21:43:03ID:bM6XDXSb時々こんなソースが暗がりから飛び出てきて
3時間ぐらい仕事する気を無くすんだが。
print "<body bgcolor=\"#99ccff\">"
print " <form action=\"./index.php\" method=\"post\" name=\"PRadioList\" id=\"PRadioList\">"
print " <table width=\"250\" border=\"1\">"
print " <tr>"
print " <td width=\"30\"><div align=\"center\"><input name=\"radioBtn\" value=\"0\" type=\"radio\" id=\"qf_ad7dfc\" /></div>"
print " <td>たぬき</td>"
print " </table>"
print " <table width=\"250\" border=\"0\">"
print " <tr>"
print " <td align=\"center\">"
print " <input name=\"submit\" value=\"送信\" type=\"submit\" />"
print " </td>"
print " </tr>"
print " </table>"
print " </form>"
print "</body>"
0319nobodyさん
2008/03/03(月) 21:57:31ID:???0320nobodyさん
2008/03/03(月) 22:02:46ID:???0321nobodyさん
2008/03/03(月) 22:08:23ID:???それはなんちゃってPHPerが書いたPerler?が書いたソース
普通はこう書く
?>
<body ~>
-中略-
</body>
0322nobodyさん
2008/03/03(月) 22:09:20ID:???0323nobodyさん
2008/03/03(月) 22:15:53ID:???0324nobodyさん
2008/03/03(月) 22:28:33ID:???0325nobodyさん
2008/03/03(月) 22:32:55ID:???さすがにそんなのは稀すぎる
連結してるのはたまに見るが
print "hoge"
. "hoge"
. "hoge";
ていうかhtmlに組み込めるんだから、viewは普通にhtmlで書けっていう話
つまり>>323
0327nobodyさん
2008/03/04(火) 00:02:06ID:???0328お願いします。
2008/03/04(火) 00:52:40ID:G7JIaGfrqmail(・・・※)設定済みのLinux(CentOS5)に移行した上で
実行したのですが正常に送信先に届きません。
(また、php側でエラーは発生しません。)
【ソース】
if( mb_send_mail($addressTo, $subject, mb_convert_encoding($message,"shift_jis","shift_jis"),$header) )
{
#この部分に正常に入ります。
print("送信完了しました。");
}
else
{
print("エラー:送信に失敗しました");
}
【Linuxmメールサーバ構築参考サイト】
http://centossrv.com/qmail.shtml
0330お願いします。
2008/03/04(火) 01:21:47ID:G7JIaGfrLinux版は、次のコマンドでWEBサーバを構築して、恐らくApacheだと思われます。
yum -y install httpd
再度、作成したテストページよりメールを送信した結果、apacheのログファイルを見てみると
次の様なエラーが表示されていました。
【error_logの内容】
[Tue Mar 04 01:19:02 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/index.css, referer: http://localhost/FI.html
[Tue Mar 04 01:19:02 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/css, referer: http://localhost/FI.html
[Tue Mar 04 01:19:03 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/index.css, referer: http://localhost/SendMail.html
[Tue Mar 04 01:19:03 2008] [error] [client 127.0.0.1] File does not exist: /var/www/html/css, referer: http://localhost/SendMail.html
0331nobodyさん
2008/03/04(火) 01:32:39ID:???sendmail_pathはおk?
もちろんphpインストール時にqmailにしたよな?
とりあえずmail()でやってみ
0332お願いします。
2008/03/04(火) 01:36:30ID:G7JIaGfr再度メールをWEBページより送信してみたところ、エラーログには何も表示され
なくなりました。
送信先メールアドレスには、自宅(hogehoge@m2.gyao.ne.jp)
を指定しています。
また、CentOS5に付属のメール送信ソフトより自分のメールアドレス
にメールを送信したところ正常にメールは届きます。
※また、143番ポートは正常に開放されています。
0333nobodyさん
2008/03/04(火) 01:37:53ID:KsHjc6mm変換したいのですが、どうすればいいのでしょうか?
やはり分解して、mktimeにするしかないのでしょうか?
0334お願いします。
2008/03/04(火) 01:44:49ID:G7JIaGfrphpのインストールについては「LAMサーバ構築」という雑誌を
参考にしてインストールしてました。。。
php.ini 内でメールサーバ回りの詳細な設定は行っていませんでした
ので、ちょっと設定ファイルを確認してみます。
0337お願いします。
2008/03/04(火) 01:50:57ID:G7JIaGfr[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail -t -i
↑
メールサーバを、qmail に変更したので上の記述を変更する必要がある様
に思うのですが具体的にはどうすれば良いでしょうか?
お教え願います。
0338nobodyさん
2008/03/04(火) 02:04:06ID:???そこまでわかっててまだ何を聞くつもりだ
sendmail_path = qmailのパス
にしてapache再起動してみ
それでもわからなかったらちゃんと初心者スレ行くかあきらめろ
0340お願いします。
2008/03/04(火) 02:27:07ID:G7JIaGfr0342nobodyさん
2008/03/04(火) 08:40:33ID:???特権無しになりました
直し方教えてください
連たる鯖なのでコンソールが開けない状況です
0343nobodyさん
2008/03/04(火) 10:20:42ID:xFHlt45Mで、全て./index.phpで実行しているのですが、
__FILE__で取得すると、URLではなく実際に稼動しているスクリプトが表示されますよね。
これはサーバー依存なのでしょうか?
ブラウザによって変化するのであれば__FILE__の使用を控えようと思うのですが・・・。
0344nobodyさん
2008/03/04(火) 11:07:59ID:???qmailのsendmail-wrapperが /var/qmail/bin/sendmail とか、/optの下あたりにないかい?
which sendmailするとどうなる?
付属のメーラって奴はローカルホストのSMTPで送信するの? それともsendmailコマンドを叩くの?
そもそも送れないってどういうこと? バウンスは返る?
つか、当然最初にメールログは確かめたんだろうね?
謎だらけの質問しやがって...
0345343
2008/03/04(火) 11:41:43ID:xFHlt45M__FILE__も鯖側の処理と勝手に判断してみます・・・。
別の質問なのですが、
func_get_argsで引数を配列として返しますが、
逆の場合は可能なのでしょうか?
配列をリストにするlistという関数がありますが、
引数の数が不特定なので困ってます。
0346nobodyさん
2008/03/04(火) 11:43:37ID:HRhAVQ3q動かしてみたら
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\cake\app\config\routes.php:1) in C:\xampp\htdocs\cake\cake\libs\controller\controller.php on line 447
というのが出て動きませんでした。
何がおきてるんでしょうか。
windowsXPにxamppをいれて、htdocsにそのままcakeを入れてます。
あぱっちの設定とかは一応したつもりなんですが。
誰か教えてください。
0347nobodyさん
2008/03/04(火) 11:43:47ID:???__LINE__はその行番号。
0350nobodyさん
2008/03/04(火) 11:46:05ID:xFHlt45M「実行しているファイル名(__FILE__)」のパスを、
クライアントサイドで判断しているのかサーバーサイドで気になっただけです。
__LINE__はサーバーサイドでしか判別できないので、__FILE__も同じと見ていいんですよね。
ってことが知りたかっただけです。
0351nobodyさん
2008/03/04(火) 11:48:31ID:HRhAVQ3q>>348
すいません。
BOMってなんでしょうか。
googleでしらべたらunicodeがなんとかと書いてありました。
コレでしょうか?
0352nobodyさん
2008/03/04(火) 11:50:46ID:???UTF-8で保存しているつもりでも、
UTF-8Nという形式で保存していることがある。
UTF-8Nの場合、先頭に3バイト変なものがくっついていて (ごめん、3バイトの内容は詳しく知らない)
headerを実行する前にそれが先に出力されてるから、headerでエラーが出てしまう。
0353nobodyさん
2008/03/04(火) 11:51:10ID:HRhAVQ3qいま確認してみました。
大丈夫でした。ありがとうございます。
0354nobodyさん
2008/03/04(火) 11:53:56ID:HRhAVQ3q文字の関係は何回も挫折しているところです。
どう対処すればいいですか。
なんとなく方針を教えて頂けませんでしょうか?
0355nobodyさん
2008/03/04(火) 11:56:54ID:???何のエディタ使ってるよ
とりあえずTeraPadでいいから起動してみて文字コードが何になってるか調べてみれ
0356nobodyさん
2008/03/04(火) 12:06:54ID:HRhAVQ3qTeraPadを使っています。
文字コードはUTF-8です。
保存改行コードが自動になっていました。
これが原因でしょうか?
0357nobodyさん
2008/03/04(火) 12:18:26ID:???ファイル->文字コード指定再読み込み
これでShiftJISにしたら文字化けするよな
そのときに<?phpの前に変な文字化けないか?
0358nobodyさん
2008/03/04(火) 12:20:21ID:HRhAVQ3qhttp://www.kashim.com/kanjitranslator/index.html
↑これになんでもかんでもぶっこんで変換したらいけました。
どうやら追加で書き込んだものがBOMありになっていたようです。
絶対自分では解決できませんでした。ありがとうございます。
0359nobodyさん
2008/03/04(火) 12:25:30ID:HRhAVQ3qBOMありにしてEUCにしたときに「鏤深?php」となっていました。
いまいちBOMがなんなのかはよくわかりませんがこういうことがあるんですね。
勉強になります。ありがとうございました。
0360nobodyさん
2008/03/04(火) 12:38:35ID:???一つは客の気まぐれ。そして、もう一つはSEの見通し不足。
今話題になっている話に例えれば、
日本の最高裁判所が出して判断が後になって間違ったことに気付いたが、
一事不再理の原則によって、判決の変更はできない。
そこで、主権が違うアメリカに依頼してもう一度裁判をやってもらうことにした。
たしかに、法理論的には裁判権はアメリカにあるし、他国の一事不再理による制約を受けないことは言うまでもない。
しかし、国権の最高機関である最高裁判所が出した判決を日本政府の勝手な仕様変更で、
アメリカの手を借りて裁判をやり直すことができるのか。
私は、鳩山邦夫法務大臣にこの件について聞いてみたくなった。
0364nobodyさん
2008/03/04(火) 14:03:01ID:???Aサーバにあるディレクトリを丸ごと、別のBサーバにアップしたいです。
PHPで出来ますか?
Aサーバのログイン情報とBサーバのログイン情報は持ってます。
0366nobodyさん
2008/03/04(火) 15:07:32ID:???webプログラマーの技術レベルはなんでこんな低いんだろう。
同じ経験年数のwebプログラマーとネットワークエンジニアで比較すると、
明からにレベルが低い。webは、適当にやっていても動くことは動くからか?
このスレだけかと思ったが、Javaスレでの議論もレベル低すぎ。web全体がまだまだ。
0367nobodyさん
2008/03/04(火) 15:11:51ID:???■ このスレッドは過去ログ倉庫に格納されています