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

【PHP】下らねぇ質問はID出して書き込みやがれ 83

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/06(月) 04:14:58ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0791nobodyさん2009/04/23(木) 23:55:56ID:???
>>779は勝ち誇りながら上げ足をとったのに、
逆に上げ足を取られてクソフイタwwwwwwww
0792nobodyさん2009/04/24(金) 00:11:15ID:???
>788
メタタグを読んでいるのはブラウザの中の人。

headerを使うのとmetaを使うのとどう違うのか、と言われると実は実際問題たいした差は無い。
けど、http-equivのequivってのは「代替品」って意味。文字通り、ヘッダーを生成できない場合の代替が目的。
本物と代替品を両方使えるなら、本物を使うのが自然だと俺は思う。
まあ、RFCや歴史的経緯や由来なんぞ知った事か!って意見もあるだろうし、両方使う、ってのがベストではあるけどな。
(Apacheの設定でヘンなヘッダを吐かれるケースの対策でもあったんだが、そういうケースは最近はあんま見ない)
0793nobodyさん2009/04/24(金) 00:14:29ID:???
字義は「等価」だろ。歴史的経緯を考えると「代替」って解釈も妥当だが。
知らないってのは流石にダセぇとは思うが、どっちかを強制するような事じゃない。
0794nobodyさん2009/04/24(金) 00:22:28ID:???
>>790
最初メタタグなしで?だったのでメタタグを入れてダメで、間違いに
気づいてメタタグを正確に直したけど表示されないなぁと思って
聞いてみたんですけど、改めて見てみると正確に直してるファイルは
普通に表示され、記述間違いはダメ、という当然の結果なのです。

直したつもりだったてことかと。

>>792
>メタタグを読んでいるのはブラウザの中の人。
そうでした。
>ヘンなヘッダを吐かれるケースの対策でもあった
メタタグは通用しないことがあるって記述をどこかで見てバシッと
指示できる方法がないものかと思ってたんですが当にこれですね。
メタタグがブラウザ対象ならPHPに通用しないのは当然か。
SQLも文字化けしてたんですけど
mysql_query("SET NAMES utf8");として解決したので
同様の指示方法を探してました。
0795nobodyさん2009/04/24(金) 01:41:32ID:oXgFhkjs
@header('Content-Type: text/html; charset=UTF-8');
こんなん常識じゃね?
0796nobodyさん2009/04/24(金) 01:43:15ID:???
@ はいらんけどな。
Content-Typeだしてねーサイト多すぎだよな。
Safariで見るとソースが化けるからすぐ分かる。
0797nobodyさん2009/04/24(金) 01:45:39ID:oXgFhkjs
いやいやいあ
配列やオブジェクトを書き出してテストしたりすんべ
httpヘッダーくらいでエラーすんのもむかつくので
@必修にしてたよ俺orz
0798nobodyさん2009/04/24(金) 01:49:16ID:oXgFhkjs
しかしhtmlの表示必死でhttpの基本しらない人大杉だよな
自分でサーバ運用したこと無いのかねぇ?
0799nobodyさん2009/04/24(金) 01:50:09ID:???
@つけてる人に言われたかないわ
0800nobodyさん2009/04/24(金) 01:52:13ID:oXgFhkjs
ははは、そりゃ悪かったw
意味わかってしてるんだから許せw
0801nobodyさん2009/04/24(金) 01:59:00ID:???
>>777
偶然にも全く同じ問題に直面していたんだが、phpMyAdminで設定した照合順序は
各テーブル、フィールドに個別に設定出来てる?

UTF-8で全部やっているならとりあえず照合順序を全てutf8_general_ciにしてみると良いよ。
0802nobodyさん2009/04/24(金) 02:14:21ID:???
>自分でサーバ運用したこと無いのかねぇ?
このスレ見てる人間はプログラマーではあってもおそらく鯖屋ではありません
Webプログラマーならhttpの知識知ってて当然
ようするに知らないのは初心者
そしてここはそういうスレ
0803nobodyさん2009/04/24(金) 02:28:31ID:???
実業務に携わってたら、PHPerにはド素人が多いなんてのは常識(キリッ

>797
普通、画面出力は一箇所にまとめるだろjk。
echoが2箇所以上に存在するスクリプトは、構成にそもそも難がある。
あと、適当なテキストファイルに文字列を書き出す関数は常に用意しておいたほうが便利だぞ。
0804nobodyさん2009/04/24(金) 02:32:14ID:???
文字コード設定してんのに自動的にcontent-type吐かないPHPが悪い
0805nobodyさん2009/04/24(金) 02:35:25ID:???
どんなに小さいプログラム書くときでも
大体、render用の関数作って、変数をextractとかしてアサインするとかしてるんだけど、
あんまりやらないのかな?

function render($path, $array){
extract($array, EXTR_SKIP);
include "/view/".$path.".html";
}

とかといったような。
0806nobodyさん2009/04/24(金) 02:43:16ID:???
なんのために?
0807nobodyさん2009/04/24(金) 03:33:28ID:???
>806
例えば画面出力を突然Shift_JISにしたくなったとしよう。
お前のコードの場合、全ての出力部にmb_convert_encodingを入れる必要がある。
>850なら、render()の冒頭でob_start()とかやって、出力内容を変数に格納してからShift_JISに変換して出力する、とかいう改変がラクにできる。
同じように、render()を文字列を返す関数にして、ファイルに書き出す事も容易。

また、>805のようなパターンでスクリプトを構成していると、デザイン変更の際にview/*.htmlをいじるだけでよくなる。
逆にロジックだけを変えたい場合、view/*.html(つまり画面デザイン)には一切手をつけなくてよくなる。

最後に、$arrayが正しいかテストするほうが、画面出力結果が正しいかテストするよりも楽な事が多い。
この辺はPHPUnitを使ってみないとピンと来ないポイントかもな。
0808nobodyさん2009/04/24(金) 03:41:24ID:???
お前のコードはとか勝手に決め付けてんなよ

つかテンプレートエンジンかフレームワーク使わないのはなんで?
0809nobodyさん2009/04/24(金) 03:58:49ID:???
横槍スマンが、>>807で言われているようなことが必要ないからエコーデバッグという
原始的手法をとってるんだと思うよ。俺もたまにやるし。
あと、出力エンコーディングのごっそりな変換はiniで指定したほうがラクだよ。

個人的にはこのご時世コード的に小さいWebアプリなんてのがまずなくなってるから
FWのロガーとIDEのデバッガを適切に使うのがよいと思う。
ウニットテスト云々言ってるが、アサーションに漏れたらその変数とコールスタックのダンプなどをやってくれるので
初心者にもオススメだ。
0810nobodyさん2009/04/24(金) 04:04:03ID:???
エコーが散らばってるのとレンダー関数が散らばってるのは大差ないかも分からんが出力はプリティーなほうが絶対いい
0811nobodyさん2009/04/24(金) 04:12:50ID:???
>>809
どうだろう…抑止なると使ってるくらいだしな…
エコー → 自作関数 → FWスタンダード って感じでステップアップしていけばいいんじゃないか?
だいたい皆そうだろ
0812nobodyさん2009/04/24(金) 04:22:16ID:???
header()に@貼り付けてるってことはヘッダー送れてないわけじゃんw
そうやってエラー無視してバグの元を作ってしまうことが問題だと思うんだが
素のechoだろうが自作フォーマットだろうがそっちは好きにしなさい
0813nobodyさん2009/04/24(金) 04:29:44ID:???
>>812 はネタ?
0814nobodyさん2009/04/24(金) 09:15:12ID:???
>>807
php.ini全否定か
0815nobodyさん2009/04/24(金) 09:26:01ID:???
PHP_INI_ALLだからスクリプトや.htaccessからでも制御できるね
0816nobodyさん2009/04/24(金) 09:36:54ID:???
マジレスするとxhtmlの最新版はmetaタグで文字コードを指定しないでheaderで文字コードを送信するようにしろとなっている
0817nobodyさん2009/04/24(金) 09:38:38ID:???
それはXML宣言があるからw
0818nobodyさん2009/04/24(金) 11:46:30ID:NYw9Sn8U
shift_jisでハングル文字を使う方法を教えてください
0819nobodyさん2009/04/24(金) 11:48:01ID:???
その「使う」の真意によって可能かどうか分かれる
0820nobodyさん2009/04/24(金) 11:51:26ID:NYw9Sn8U
sjisでハングル文字を表示させたいのです
0821nobodyさん2009/04/24(金) 11:52:20ID:NYw9Sn8U
ユーザーから投稿されたハングル文字をsjisでログに保存して
それを表示したいです
0822nobodyさん2009/04/24(金) 11:54:10ID:???
>>821
画像にすればいいじゃない。
0823nobodyさん2009/04/24(金) 12:42:44ID:???
色んなソース見てるけど今だに
for ($i = 0 ; $i < count($array) ; $i++)
みたいな書き方のソース多いな
どこのオープンソースもこんなもん?
0824nobodyさん2009/04/24(金) 12:42:53ID:NYw9Sn8U
あくまでも文字として使用するにはどうしたらいいでしょうか?
0825nobodyさん2009/04/24(金) 12:43:34ID:???
>>823
有名所上げるとしたらどこのソース?
0826nobodyさん2009/04/24(金) 12:45:26ID:???
E○-○U○Eとか
0827nobodyさん2009/04/24(金) 12:52:53ID:???
別に伏字にしなくてもいいんじゃね
まあどれかわかるけど
0828nobodyさん2009/04/24(金) 13:11:39ID:???
Smartyって便利みたいだけど
余計ややこしいとね^^;
0829nobodyさん2009/04/24(金) 13:12:31ID:???
素のほうがややこしいやん
0830nobodyさん2009/04/24(金) 13:15:35ID:???
>>829
そうか?
PHP自体がテンプレートエンジンのようなもんだし、わざわざ入れるまでもないと思うが
0831nobodyさん2009/04/24(金) 13:16:11ID:???
そういうレベルの人は無理に使わなくて良いよ
0832nobodyさん2009/04/24(金) 13:17:46ID:???
>>830
きっと君にはライブラリとかフレームワークは使うだけ無駄だよ
08338182009/04/24(金) 13:18:26ID:NYw9Sn8U
自分で考えてみましたが解決策がみつかりません
0834nobodyさん2009/04/24(金) 13:19:22ID:???
google先生に考えてもらえばいいんじゃないでしょうか
0835nobodyさん2009/04/24(金) 13:20:30ID:???
>>834
素人が頑張って回答しました(笑)
0836nobodyさん2009/04/24(金) 13:21:02ID:???
まぁいきりは使わなくていいお
0837nobodyさん2009/04/24(金) 13:26:28ID:???
>>834
×google先生に考えてもらえばいいんじゃないでしょうか
○私の知識ではわかりません
0838nobodyさん2009/04/24(金) 13:31:55ID:???
for ($i=0;$i<count($a);$i++) $r[] = $a[$i];
0839nobodyさん2009/04/24(金) 14:08:57ID:???
for($i = 0, $cnt = count($a); $i < $cnt; $i++) echo $a[$i];

こういう書き方すると怒られる?
0840nobodyさん2009/04/24(金) 14:09:36ID:???
誰に?
0841nobodyさん2009/04/24(金) 14:10:19ID:???
原則として,検索すれば分かるようなことを「聞くな」
0842nobodyさん2009/04/24(金) 14:17:13ID:???
>>839
添字が連続していることを前提にしていいのか不安になるから嫌。
0843nobodyさん2009/04/24(金) 14:23:04ID:???
>>839
個人で作るなら問題ないけど
他の人に見せる可能性があるなら可視性も大事

あと適度なコメント表示もお願いねほしみ
0844nobodyさん2009/04/24(金) 14:38:48ID:???
>>823
別にそれでいいだろ
0845nobodyさん2009/04/24(金) 14:39:05ID:???
>>844
>>844
>>844
>>844
>>844
>>844
08468392009/04/24(金) 14:52:01ID:???
>>841
コーディングの慣習として、どのような感じ方をされるのか気になったので、質問してしまいました。すいません。
0847nobodyさん2009/04/24(金) 14:59:09ID:???
>>844の書いたコードはksそうだな
0848nobodyさん2009/04/24(金) 15:01:18ID:???
君宛じゃなくてその上の連中宛だから気にすんな。
でも君の質問も言葉足らずで良くないけど。
何を問題にしてるの?スペースを空けること?条件部でcount使ってること?1ラインのfor使ってること?
0849nobodyさん2009/04/24(金) 15:06:20ID:???
動けば何でもいいんだよ!

っていうのが今のゆとり
0850nobodyさん2009/04/24(金) 15:09:50ID:aAv/eK7t
みなさんIPv6には対応してますか?
REMOTE_ADDRの中身とかどうなるのでしょう?
普段見慣れない0000:0000:0000:0000:0000:0000とかになるのでしょうか?
DNS逆引きでリモホを得た場合
IPv4のとIPv6のホスト名に大きな差異はあるのでしょうか?
PHPの質問とはかけ離れてますがアクセス解析を作りたいのでよろしくお願いします
0851nobodyさん2009/04/24(金) 15:12:55ID:???
>>848
誰にレスしてるの?
0852nobodyさん2009/04/24(金) 15:13:30ID:???
>>848
後、変数名にも問題あるな
cntとかPerlerにありがち
0853nobodyさん2009/04/24(金) 15:13:40ID:???
>>850
板違い
0854nobodyさん2009/04/24(金) 15:14:20ID:???
>>852
君が正しいコードに書きなおしてみて
0855nobodyさん2009/04/24(金) 15:22:40ID:???
メールフォーム作成してますが送信内容に
名前<div>名前
といったようにタグを挟んだり
ネ申
といったものを入れると\が付加されてメールで飛んできます。
文字コード自体はmb_convert_encodingで変換しているので問題はないと思うのですが
どういしたら出ないように出来るのでしょうか。
0856nobodyさん2009/04/24(金) 15:24:54ID:???
いまだにっていうかforの中でカウントする習慣は普通
わざわざそんなこと気にしてるのはPHPユーザーぐらいだろ
他の言語板で聞いてみな
0857nobodyさん2009/04/24(金) 15:32:32ID:???
>>856
習慣は関係ないです
0858nobodyさん2009/04/24(金) 15:32:50ID:???
countするぐらいなら foreach使うけどな。
0859nobodyさん2009/04/24(金) 15:33:13ID:???
>>856
そして他の言語板で聞くとおもれなくお前からのレスが貰えます
0860nobodyさん2009/04/24(金) 15:36:08ID:???
>>858
iがほしい場面じゃfor使わざるを得ないけど
使う必要がないならそのとおり

>>859
安心しな
JavaスレとJSスレぐらいしか見てないから
C系の人にきいてみな
0861nobodyさん2009/04/24(金) 15:39:14ID:???
>>860
添え字の数値が欲しいなら foreach($array as $key=>$val) 書式使うし、
確実に連続した数値としてほしいなら、これは使えないから、別途カウント用の変数を使う。
0862nobodyさん2009/04/24(金) 15:44:25ID:???
慣習とかじゃなくて速度のためにcountをforの外で使うんだろ
ベンチマークベンチマーク
08638392009/04/24(金) 15:47:56ID:???
>>848
普通にかくと、
$cnt = count($a);
for(〜

となると思うのですが、
forの中だけで使いたい$cntがforの外に出るのがかっこ悪いかなぁと思ったためです。

foreach($a as $i => $item) echo $a[$i];
のような書き方もあるとおもいますが・・・

上記のような書き方の違いがコーディングスタイルの範囲なのか、プログラムの動き的に
別の問題が発生するのかという疑問を持ったという感じです。長文すいません。
0864nobodyさん2009/04/24(金) 15:50:39ID:???
その段階ではまだ細かなチューニングなんか意識しなくていいんじゃね?

0865nobodyさん2009/04/24(金) 15:53:53ID:???
>>861
それ特殊だからな
PHPぐらいじゃね?そんな書式使えるのw
0866nobodyさん2009/04/24(金) 15:55:05ID:???
>>862
それはわかってるけどそんなの意識するのPHPユーザぐらいじゃね?
劇的にかわるもんでもないでしょ?
もともと高速だし
08678502009/04/24(金) 15:56:24ID:aAv/eK7t
すみませんスレ変えます
08688502009/04/24(金) 15:58:40ID:aAv/eK7t
とおもったけどすみません・・・
やっぱ詳しい方教えてもらえないでしょうか?
スレ違いとは承知してますがこのスレならいると思うので
IPv6板で聞きなおそうと思ったのですがIPv6でしか書き込めないらしい・・・
0869nobodyさん2009/04/24(金) 16:41:18ID:???
>>868
スレ違いじゃなくて板違い
0870nobodyさん2009/04/24(金) 16:58:31ID:???
ttp://pc12.2ch.net/test/read.cgi/tech/1239708057/360-362

ようするに下らんところで口を出すPHPユーザの質が低いってことだな
0871nobodyさん2009/04/24(金) 17:00:59ID:???
>>870
そりゃそうだろ
PHPは猿でもできるからな
0872nobodyさん2009/04/24(金) 17:01:21ID:???
>>861
だったら最初からforでいいじゃん
0873nobodyさん2009/04/24(金) 17:02:08ID:???
>>872
お前はケースバイケースって言葉しらんのか?

ああ、ゆとりか
0874nobodyさん2009/04/24(金) 17:04:38ID:???
PHPユーザならもっと他のとこに着眼すべき
Webやってんのに全然セキュリティ意識がないのが多いね
そっちのほうがよほど問題
かくいう自分も100%安全なプログラムかけてるかというと自信はないけど
PHP選択してる時点でセキュリティ意識がないと言われたら終わりだが
0875nobodyさん2009/04/24(金) 17:09:25ID:???
>>872
コードが汚いし、>>839 の書き方じゃ
$a[0] = 'hoge';
$a[100] = 'hogehoge'

ってした時に期待した動きにならんでしょ。
あぶねーよ。
0876nobodyさん2009/04/24(金) 17:09:55ID:???
>>870
> ttp://pc12.2ch.net/test/read.cgi/tech/1239708057/360-362

javaは確か内部でsizeを持ってるんじゃないかな。
phpのcountとはオーバーヘッドが全然違うと思う。
0877nobodyさん2009/04/24(金) 17:11:02ID:???
>>876
どっちもネイティブでしょ?
そういうことじゃなくて?
08788762009/04/24(金) 17:16:30ID:???
>>877
javaはlistオブジェクトが持ってるsizeメンバを返してるだけだが、
PHPはのcountはいちいち個数を調べてるってこと。
0879nobodyさん2009/04/24(金) 17:16:47ID:???
ていうか>>839の書き方はじめてみた
そんな書き方あるのか
for ($i = 0; $i < $cnt = count($a); $i++)
ってのはあるが
これとは意味違うのかね
これじゃ$i < count($a)と変わらない?
0880nobodyさん2009/04/24(金) 17:18:13ID:???
>>875 書いてから気づいたけど、

$a[100] = 'hogehoge'
$a[0] = 'hoge';

だと、foreachでも、ある意味、微妙な動きをするな。
それでも PHPの添え字はオフセット値とは扱いが違うんで、forとかは馴染まんなぁ。

>>878
それソースあったら教えて。
0881nobodyさん2009/04/24(金) 17:19:49ID:???
>>839
for($i = 0, $cnt = count($a); $i < $cnt; print($a[$i]), $i++);
0882nobodyさん2009/04/24(金) 17:23:17ID:???
>>878
静的に値保持してるってことかな?
まぁでもそんなに問題にするほどでもないと思うけど
0883nobodyさん2009/04/24(金) 17:25:22ID:???
>>882
本当に数え直してるんだったら、2乗オーダになるから、チト引っかかるけどね。
本当に数え直してるんかなぁ。
0884nobodyさん2009/04/24(金) 17:28:34ID:8/gQo6Yy
tp://hogehoge.com/dir/exec.php/aaaaa/asdfasdf.txt
というURLで、

exec.phpにそれ以降の文字列を渡したいんだけどどうすりゃいいの
0885nobodyさん2009/04/24(金) 17:29:58ID:???
>>884
var_dump($_SERVER)
0886nobodyさん2009/04/24(金) 17:31:28ID:???
>>885
書き方が悪かったです。
exec.phpじゃなくて、asdfasdf.txtで動いちゃうから困ってます
0887nobodyさん2009/04/24(金) 17:32:16ID:???
?挟むかhtaccess使うか
0888nobodyさん2009/04/24(金) 17:35:56ID:???
ていうかPHPとかんk(ry
0889nobodyさん2009/04/24(金) 17:37:09ID:???
多分 AcceptPathInfo じゃないの。PHPとは関係ない。
0890nobodyさん2009/04/24(金) 17:40:25ID:???
>>884
phpじゃ無理
■ このスレッドは過去ログ倉庫に格納されています