【PHP】下らねぇ質問はここに書き込みやがれ 39
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2007/02/12(月) 20:33:59ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0897nobodyさん
2007/02/21(水) 23:48:12ID:???思い出した
ファイルの各行を固定長(同じ長さ)になるようにして、
fseekで任意の行の先頭までファイルポインタを移動して行分のバイト数だけ読む
関数はないんじゃないかなたぶん
0901nobodyさん
2007/02/21(水) 23:56:16ID:???| 次でボケて!!! |
|________|
∧∧ ||
( ゚д゚)||
/ づΦ
0903nobodyさん
2007/02/21(水) 23:59:53ID:???0904nobodyさん
2007/02/21(水) 23:59:58ID:???0905nobodyさん
2007/02/22(木) 00:05:16ID:???俺も設計は美しいほうがメンテもしやすいし好きだが、
多少美しさを捨ててでも速度を取らないといけない場合も
実務にはあるよ。INDEXだけでは追いつかない。
0907nobodyさん
2007/02/22(木) 00:10:17ID:???ナルホ。
実は4000万件を超えるLOG系のTABLEがあるんだが、
検索すると数秒かかるぅ・・・
こんな場合ってどう分けるべき?!
参照も更新もある。
時間によって
LOG_2007_01
とかで分けた方がいい?
0908nobodyさん
2007/02/22(木) 00:25:24ID:???0909nobodyさん
2007/02/22(木) 00:39:23ID:???ここはDB板じゃないんだから議論しないでくれ。
こういうソースもあるし、アホな設計してるやつはいつまででもそういう設計をして苦労してればいいじゃん。
ttp://itpro.nikkeibp.co.jp/article/NEWS/20051114/224500/
0910nobodyさん
2007/02/22(木) 02:26:59ID:???0911nobodyさん
2007/02/22(木) 02:29:57ID:???0912nobodyさん
2007/02/22(木) 03:02:49ID:???普通に↓でいいんじゃないか?
[id] [animal]
1 2,3,4 (もしくは、「うま,ぶた,さる」)
なぜなら、「動物」ってカテゴリで複数選択した場合なんだろ?
テーブルに分けるってのは、「動物」「スポーツ」「趣味」とか
カテゴリが別の場合何じゃないのか?
0913nobodyさん
2007/02/22(木) 03:13:45ID:???0916nobodyさん
2007/02/22(木) 04:40:44ID:3iT4OUlDwindows環境のapacheのhttpd.confでは、
LoadModule php4_module c:/php-4.4.4-Win32/sapi/php4apache2.dll
の記述を追加したのですが、
Cent-OS環境のapacheは、LoadModuleを追加しなくてもPHPが実行できてます。
何故でしょうか?
0918nobodyさん
2007/02/22(木) 10:00:35ID:???md5を使おうと思っているんでが何か問題ありますか?
0919nobodyさん
2007/02/22(木) 10:03:12ID:???0922nobodyさん
2007/02/22(木) 11:00:00ID:???これのことですか?
http://blog.ohgaki.net/index.php/yohgaki/2007/01/25/sha1a_sa_a_a_ma_ya_a_a_a_a_sa_ma_fa_a_ma
これは標準で入ってる関数じゃないですよね
自作しろってことですか?
0923922
2007/02/22(木) 11:01:23ID:???すいませんじこかいけつしました .
0924nobodyさん
2007/02/22(木) 11:02:42ID:???生パスを保存するやつもいるぐらいだしデータ漏洩に気をつければいいだけ
0925922
2007/02/22(木) 11:12:42ID:???$pwd = "zutto";
$add = "orenota-n";
$hash = hash('sha512', $pwd.$add);
0926nobodyさん
2007/02/22(木) 11:28:54ID:3iT4OUlDレスありがとうございます。
でも、CGIで実行するにしてもhttpd.confにphpの設定しなきゃいけないですよね?
ディストリの標準インストールだと、phpも実行できるように設定されちゃってる、なんてことはないですよね?
0927nobodyさん
2007/02/22(木) 11:32:57ID:???$pwdにmd5したパスワードいれて、
if ($pwd == md5($_POST['pwd']) {
echo 'match';
}
0928nobodyさん
2007/02/22(木) 11:33:00ID:3iT4OUlDLoadModule cgi_module modules/mod_cgi.so
これってPHPの実行も含みますか?
0929nobodyさん
2007/02/22(木) 11:34:41ID:3iT4OUlDconf.dにphp.confがありまして、下記記述を発見しました。
大変お騒がせしました。m( _ _ )m
LoadModule php4_module modules/libphp4.so
0930虚弱PHP
2007/02/22(木) 11:50:56ID:???実際のところそれで問題ないと思うけど、
$addはランダム値を使うとより良いらしい。
固定値だと同じパスワードの人が同じハッシュ値を持つから。
もちろん、ハッシュ値と一緒に保存する必要あり。
当たり前だけど、SHA512って実際表示してみると長いよなぁw
0931nobodyさん
2007/02/22(木) 12:03:59ID:???if ( ereg("^[0-9]{8}",$day) )
if ( is_numeric($day) && count($day)==8 )
0932nobodyさん
2007/02/22(木) 12:12:16ID:???好み以前にちゃんとコーディングしろ。
0934nobodyさん
2007/02/22(木) 12:22:31ID:???・perlパスの変更
clap.cgiとkaiseki.cgiをテキストエディタで開き、1行目の
#!/usr/bin/perl
を、このcgiを設置するサーバーに合わせたパスに変更してください。
がわからない。。。どうかけばいいの?
0936nobodyさん
2007/02/22(木) 12:31:11ID:???0939nobodyさん
2007/02/22(木) 12:45:15ID:???的確な回答ありがとうございます。
レッツPHPのスクリプトを見て色々と関数の勉強してたのですが
is_numericは0-9以外も通ってしまうなんて初めて知りました。
ctype_digitは実験的なモジュールとなってますが、is_intで代替できますでしょうか?
(引数には日付が入る場合)
0941nobodyさん
2007/02/22(木) 12:49:35ID:???is_numericもこの場合不適切
countに至っては使い方間違ってる
0点
0942nobodyさん
2007/02/22(木) 12:51:37ID:???0943nobodyさん
2007/02/22(木) 12:55:54ID:???http://jp.php.net/manual/ja/ref.ctype.php
0944nobodyさん
2007/02/22(木) 13:07:15ID:???"^[0-9]{8}" はレッツPHP記載のもので正規表現使わない方法に変更しようと思いました。
これならOKかな?
is_int($day) && strlen($day)==8
0945nobodyさん
2007/02/22(木) 13:11:51ID:???0948nobodyさん
2007/02/22(木) 13:26:09ID:???フォームから受け取った文字列ならis_intだとだめ
$day += 0とかすれば整数にキャストできるが
整数だとしても負の数の場合は不都合が出る
30点
0949nobodyさん
2007/02/22(木) 13:29:12ID:???↑をすると存在しない日を指定しても自動的に日付計算してくれるみたいですね。
ということはcheckdateの処理は入れる必要ないのかな
>>948
GETクエリも文字列扱いですよね?型キャストが必要になりますか。
でも予想される値は"日付"で、負の場合はないのでもうちょい点数下さいよ
0952nobodyさん
2007/02/22(木) 14:03:02ID:???0953nobodyさん
2007/02/22(木) 14:04:31ID:???少なからず日付と決まっているのなら予防線を張っとくにこした事は無いね
0954nobodyさん
2007/02/22(木) 14:38:21ID:???すいませんGoogleキャッシュを見てました。
マニュアル見る限り、これからも標準でサポートされるみたいですので以下にします。
if ( ctype_digit($_GET['day']) && strlen($_GET['day'])==8 )
>>950
今回のケースではその必要はないですが、もし誕生日など扱うことがあれば以下にします。
if (!checkdate($_POST['birth_m'], $_POST['birth_d'], $_POST['birth_y'])) { error(); }
0955nobodyさん
2007/02/22(木) 15:49:05ID:1/CuYTLm["aaa1"]=> array(8) { [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "1" [4]=> string(1) "1" }
["aaa2"]=> array(4) { [2]=> string(1) "1" [5]=> string(1) "1" [6]=> string(1) "1" [7]=> string(1) "1" }
["bbb2"]=> array(4) { [2]=> string(1) "1" [2]=> string(1) "1" [8]=> string(1) "1" [9]=> string(1) "1" }
["bbb2"]=> array(4) { [1]=> string(1) "1" [4]=> string(1) "1" [6]=> string(1) "1" [9]=> string(1) "1" }
)
こんな感じの配列で
aaaがつくKEYの配列を取り出すのはどうすればよいでしょうか。
0956nobodyさん
2007/02/22(木) 16:00:55ID:???foreach ($array as $key => $value) {
if( strpos($key, 'aaa') ) { $array_aaa[] = $value; }
}
0957955
2007/02/22(木) 16:13:37ID:1/CuYTLmこれでいけました!ありがとう
0959958
2007/02/22(木) 16:23:55ID:???strpos($key, 'aaa') === 0
か
0960nobodyさん
2007/02/22(木) 16:37:36ID:???0961軟式PHP
2007/02/22(木) 16:48:51ID:???0962nobodyさん
2007/02/22(木) 16:56:43ID:???0963nobodyさん
2007/02/22(木) 17:12:09ID:???どう考えてもデザイン(テンプレート)と分離出来ない箇所ってあるよな?
例えば、テーブルの表を書き出す時とか、項目名がそれぞれのコンテンツで違うし、
if文で入力チェックや値があるかないかを判断する場合も
やっぱりテンプレート内に入れないと行けない。
結局、こだわらなくておkってことでいいの?
0964nobodyさん
2007/02/22(木) 17:26:05ID:???0965虚弱PHP
2007/02/22(木) 17:38:44ID:???Smarty使ってるけど、
テンプレートファイル以外にHTML書いてないよ。
テンプレートの方にSmarty組み込み関数は沢山書いてあるけど。
0966954=956
2007/02/22(木) 17:42:21ID:???0969nobodyさん
2007/02/22(木) 18:20:42ID:???MySQLとか使うときさ、
$sql ="select * from hoge";
$res=mysql_query($)
while($row=mysql_fetch_array($res)){
echo "<td>".$row["name"].</td>
}
みたいにしてテーブルの中身書くじゃん?でも、
echoの中ってコンテンツ毎に違うんだから、プログラムとデザインと分離
出来ないよね?「テンプレートファイル以外にHTML書いてない」ってことだけど。
0970nobodyさん
2007/02/22(木) 18:25:29ID:???0971nobodyさん
2007/02/22(木) 18:33:39ID:???だよな?じゃ、テンプレートの中にPHPのソースが入っても問題ない、
ってかそれが普通だよな。
なんか「テンプレート=HTMLのみ」だと勘違いしてたぜw
0972虚弱PHP
2007/02/22(木) 18:34:44ID:???見た目に関するロジックは全部Smarty側でやってる。
(htmlspecialcharsみたいなエスケープとかは除く)
もちろん{php}とかは使ってないけど。
PHPロジック側は連想配列にデータ作るだけになるように。
↑
本当にこのやり方がいいのかは、わからんw
0973nobodyさん
2007/02/22(木) 18:38:35ID:???テンプレートに「デザインするために必要な」phpのコードが入るのは必然。
しかし、逆はおかしい。
デザインと分離する以上、デザインするためのHTMLコードをSmary側に
入れてはいけない。Smaty側では表示するためのデータを操作するのみ。
0974nobodyさん
2007/02/22(木) 18:46:08ID:???そっか、なるほどね。
じゃ例えば、3.14を3.1のようにファーマットするのはどっち側でやればいいのでしょうか?!
0975nobodyさん
2007/02/22(木) 18:49:59ID:???それは、Smaty側でやるべきこと。
数値データを四捨五入するか、切捨てにするか、など
それは、データをどう加工するかの問題であって、
デザインの問題ではない。
それが、例えば3以上なら赤色に着色するというなら、
それはデザインの問題であるから、
テンプレートでif文で当該数値を判定して、
適切なデザインタグ(HTMLorCSS)を付加すればよい。
0976nobodyさん
2007/02/22(木) 18:55:00ID:OE6fjMgO>Webアプリケーションの送受信データ内容のチェックやデータ送信先の確認、
>セッション管理機能のテストなどにおいては、
>HTTPのヘッダ情報やPOSTされるデータ内容を確認する必要に迫られる。
と書いてあるサイトがあったのですが、
今まで特に意識していなくて、使えるから別にいいやみたいな
感じだったのですが、急に本当に正常に動作しているのか不安になってきました。
PHP自体の質問ではないのですが、
やはりWebアプリ作るなら必須の知識でしょうか?
0977nobodyさん
2007/02/22(木) 18:58:00ID:???優先度は「なくても作れるけど理解しておいた方がいい」程度かな。
知っていればデバッグの手掛かりになったりするし、
そんなに難しいことでもないしトピックも多くはないから、
から勉強するとかいう以前に理解しちゃうと思う。
0979虚弱PHP
2007/02/22(木) 19:00:32ID:???ロジック側=PHPロジック側。OK?
>>976
色々やろうと思うと何かと必要になると思うよ。
0980nobodyさん
2007/02/22(木) 19:04:16ID:???必須じゃないけど覚えておいて損はないと思うよ
0981nobodyさん
2007/02/22(木) 19:10:43ID:???これって凄いんだな。だいぶソースが短縮される。
smatryってpearみたいな感覚があって、なんか嫌だったんだけど、
ちょっと使ってみたくなった。
0982nobodyさん
2007/02/22(木) 19:41:47ID:???これもっと短くなんないっすか?
if ($foo == ('foo' || 'bar' || 'baz)) みたいな感じに
0983nobodyさん
2007/02/22(木) 19:48:44ID:???早めに立てておこうと思ったんだがホスト規制orz
というわけで誰か立てておいてくれ
0984976
2007/02/22(木) 19:54:57ID:OE6fjMgOつくりながら覚えるのが効果的そうなので、
もっと経験を重ねたいと思います。
0985nobodyさん
2007/02/22(木) 20:31:49ID:y5iMXiAbPHP 5.14
を使っています。
PHPからMySQLに保管した文字がphpMyAdminで文字化けしてしまいます。
全てUTF-8で統一しているのですが、なぜこのような現象が起きるのでしょうか?
0986985
2007/02/22(木) 20:33:32ID:y5iMXiAb0987nobodyさん
2007/02/22(木) 20:39:42ID:???0988nobodyさん
2007/02/22(木) 20:40:29ID:???0989nobodyさん
2007/02/22(木) 20:43:03ID:y5iMXiAb$cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';
$cfg['FilterLanguages'] = '';
$cfg['DefaultCharset'] = 'iso-8859-1';
となっております。
UTF-8にはなっています。
別の質問になりそうですが、
"INSERT INTO 'test' VALUES comment='テスト'"
を実行すると
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test' VALUES comment='テスト'' at line 1
とエラーが返ってきます・・・
0990nobodyさん
2007/02/22(木) 20:47:10ID:y5iMXiAb0993nobodyさん
2007/02/22(木) 20:51:47ID:y5iMXiAbmbstring.internal_encoding:UTF-8
となっています
0994nobodyさん
2007/02/22(木) 20:59:59ID:???> $cfg['DefaultLang'] = 'en-iso-8859-1';
> $cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';
> $cfg['FilterLanguages'] = '';
> $cfg['DefaultCharset'] = 'iso-8859-1';
> となっております。
> UTF-8にはなっています。
ちょーwww
UTF-8になってないじゃん
0995nobodyさん
2007/02/22(木) 21:01:56ID:y5iMXiAbすんません、kwskおながいします。
'utf8_unicode_ci'→'utf8'でいいのですか?
レス数が950を超えています。1000を超えると書き込みができなくなります。