【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カテゴリ)の各スレで
0228nobodyさん
2008/03/02(日) 04:12:23ID:8nU9J7zG現在XAMPPというのをインストール(セットアップ?)した直後です。
見積依頼のフォームのファイルはindex.phpにして設定もしました。
<?PHPprint("PHPを使って文章を出力します");
こうなっているのですが次の手順が分かりません。デザインビューで
見積依頼のフォームをこのindex.phpの<?PHPprint("PHPを使って文章を出力します");
の下に作ればいいのですか。
PHP初心者です宜しくお願いします
0229nobodyさん
2008/03/02(日) 04:17:24ID:???見積もり依頼のフォームというのが説明されていないのでわからない
そもそも次の手順ってそもそも何がしたいのか
ソース丸ごと見せてもらった方が早い
ちなみに、PHPで文章を出力したいんだけなら
<?PHPprint("PHPを使って文章を出力します");
↑の PHPを使って文章を出力します
の部分に記述
0230nobodyさん
2008/03/02(日) 04:47:47ID:8nU9J7zGあっなるほど。そこにデザインビューでメールフォームを作ればいいのですね。
コードは
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>PHPプログラム</title>
</head>
<body>
<?PHP
print("PHPを使って文章を出力します");
</body>
</html>
です
0231nobodyさん
2008/03/02(日) 04:48:24ID:8nU9J7zGそしてメールフォームの内容は
お名前
住所 〒
TEL
見積希望日
見積希望時間 9時〜12時
12時〜15時
15時〜18時
何時でも可能
メッセージ
としたいのです。
0232nobodyさん
2008/03/02(日) 05:09:59ID:8nU9J7zGデザインビューで「文章を出力します」のとこを修正しようとすると
「HTMLタグに対して正確なフォーマットではありません。無効とマークされ
ました。コードビューを使用してソースコードを修正して下さい」
と出てしまい「文章を出力します」のとこの変更ができません。
0233nobodyさん
2008/03/02(日) 06:19:08ID:cPv2Uin/private $unko;
public function getUnko(){
return $this->unko;
}
において、
public function checkUnko(){
の中は
$unko=$this->unko;
がいいのか
$unko=$this->getUnko();
がいいのか。
}
当然速いのは$this->unkoだと思うけど、この書き方って
オブジェクト指向を貫く上で問題ありかな?
0234nobodyさん
2008/03/02(日) 08:12:52ID:???0235nobodyさん
2008/03/02(日) 08:46:32ID:qS2qya1qをデコードしたいのですが、何にエンコードされたかを知るにはどうしたらいいでしょうか?
また、PHP関数で何か良いものはありますでしょうか?
0236nobodyさん
2008/03/02(日) 08:54:16ID:???0237235
2008/03/02(日) 08:55:02ID:???デコードし、表示するにはどうすればいいのでしょうか?に訂正させてください。
0238nobodyさん
2008/03/02(日) 08:55:18ID:???まぁ、両方の関数のマニュアルを見ておけ
0239235
2008/03/02(日) 09:05:40ID:???$test = mb_convert_encoding($test, "EUC-JP", "UTF-8");
$test = urlencode($test);
echo "$test<br><br>";
$test = "%A5%A2%A5%A4%A5%AA%A5%E9%A5%A4%A5%C8";
$test = mb_convert_encoding($test, "UTF-8", "EUC-JP");
$test = urldecode($test);
echo "$test<br><br>";
上はうまく行きましたが、下が変なひょうじになります。全体としての設定はutf8です。
0240235
2008/03/02(日) 09:07:37ID:???$test = mb_convert_encoding($test, "UTF-8", "EUC-JP");
$test = urldecode($test);
の上下を入れ替えたら出来ました。
0241222
2008/03/02(日) 12:52:29ID:???レスありがとうございます。
apt-getでlibxsltをインストールしたところ、
libxslt.a
libxslt.la
libxslt.so
libxslt.so.1
libxslt.so.1.1.17
が/usr/libにつくられていたので、
--with-xsl=/usr/lib にしてやってみましたが、同じエラーでとまってしまいました・・・
0242nobodyさん
2008/03/02(日) 13:13:25ID:1wdULA7Xmysqlはtritonn(mysql with senna)を使いたいです。
こういう場合どうしたらいいですか?
0243222
2008/03/02(日) 13:19:35ID:???しかし、--disable-xmlreaderをつけてもlibxsltは使用できるのでしょうか?
どなたか教えてください。。。
0244nobodyさん
2008/03/02(日) 15:20:02ID:???普通にphp.iniとかでphp-mysqlでインストールしたほうじゃなく
そっちのmysqlを使うように設定したらええやん?
0246nobodyさん
2008/03/02(日) 16:13:25ID:???スーパークラスでも一貫して $this->getUnko() を利用すべき。
サブクラスで getUnko がオーバーライドされる可能性があるので
戻り値 === $unko が保証されないから。
0247nobodyさん
2008/03/02(日) 16:58:37ID:LTTkeK/Bメモ帳つかって拡張し使ってもxxx.php.txtとかなるのですがその後どうすればいいかわからんとです。
0248nobodyさん
2008/03/02(日) 17:29:25ID:???「拡張子を表示しない」にチェックしてあるまんまだな?
はずすことを推奨する
0249219
2008/03/02(日) 17:36:31ID:???0251nobodyさん
2008/03/02(日) 18:12:48ID:???yumで入ったmysqlを削除して
yum版のmysqlのsrc.rpmからspecをとりだして
--with-mecab, --with-sennaを加えてrpmbuildしてできたrpmをつかう
0255nobodyさん
2008/03/02(日) 18:44:44ID:???0256nobodyさん
2008/03/02(日) 20:02:48ID:???どうやったらできますか?
0257nobodyさん
2008/03/02(日) 20:19:42ID:???エスパー回答してやる
<?php
echo '<form action="post">';
foreach ($_GET as $key => $value) {
echo '<input type="hidden" name="'.$key.'" value="'.$value.'">';
}
echo '</form>';
?>
正直何をしたいのかがわからん
もうちょっとちゃんと説明しろよ
0258nobodyさん
2008/03/02(日) 20:22:22ID:???0261nobodyさん
2008/03/02(日) 21:28:38ID:???0262nobodyさん
2008/03/02(日) 23:22:05ID:???ちゃんとしたレスがある筈ない
0263nobodyさん
2008/03/02(日) 23:22:24ID:???厳密にオブジェクト指向ばりばりってどーなの?
遅くなるだけじゃね?
XOOPSとかMediaWikiってどうなってるんだろ??
0264nobodyさん
2008/03/02(日) 23:30:12ID:???プログラマが気をつけるじゃなくて、それを使うことが保証されるっていうところに
オブジェクト指向の肝があるんじゃないか?
遅くなるってことは実際あると思うけど、微々たるもんだし、速度が問題になるようならそもそも、システム設計自体に問題があると思う。
まあ、小さいシステムで、後々それほど手を入れないならスパゲッティーでもいいと思うけど
俺はオブジェクト指向で組まれていないシステムを読み解くのはあんまり好きじゃないな
0266nobodyさん
2008/03/03(月) 00:04:02ID:???ディレクトリさかのぼり、がちょっと怖いです。
$root_path = "/home/hoge/public_html/open/";
if( strstr( $GET['path'], ".." )) die("error!!");
fread($root_path.$GET['path']);
これで /home/hoge/public_html/open より上の層は見られない、
と断言できますか?
(..さえ拒否すればさかのぼりは完全に防げると判断して良いのでしょうか?)
open_basedirがini_setでスクリプト内で
設定できたら、自由にchroot風にできて安全そうで
よさそうだったのですが、ini_set内では無理でした
0267nobodyさん
2008/03/03(月) 00:17:00ID:8BSVZMuKPHPでサイト構築しているのですが、
ある日突然、複数のスクリプトで
大量のエラーログをサーバー側に
記録するようになりました。
使用リミットをオーバーするような
膨大な量です。しかし、
サイト上では問題なく実行され表示されています。
エラーも出ていません。
この場合どんな原因が考えられますか?
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
■ このスレッドは過去ログ倉庫に格納されています