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

【PHP】下らねぇ質問はここに書き込みやがれ 30

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/10/05(木) 01:38:25ID:y1WWhz/p
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0932nobodyさん2006/10/24(火) 10:49:18ID:???
>>931
質問者は「POSTを弾く方法」を聞いてるんじゃないのか?
0933nobodyさん2006/10/24(火) 11:17:10ID:???
>>909の質問は、どう見てもCSRFを防ぐ方法について。
本人がCSRFという言葉や概念を知っているかどうかは知らないけどな。

で、CSRF防御策については、決定打は無いものの、
世間的に概ねFAが出ている。
0934nobodyさん2006/10/24(火) 11:41:57ID:???
大手では画像に数字をだして、それを入力させてsubmitさせてるよ。
0935nobodyさん2006/10/24(火) 12:06:41ID:???
有名な件ですが
ttp://www.atmarkit.co.jp/fsecurity/column/ueno/33.html
0936nobodyさん2006/10/24(火) 12:12:08ID:???
>>934
別に、大手でなくても・・・
0937ここ壊れてます2006/10/24(火) 12:48:35ID:???
0938nobodyさん2006/10/24(火) 12:53:36ID:???
>>909ってhoge.com側の対策じゃなくて自宅側の対策について聞いてるような?
0939nobodyさん2006/10/24(火) 13:01:22ID:???
>>909
だからhoge.comは実在する企業のドメインだからexample.comを使えと何度言えばわk
0940nobodyさん2006/10/24(火) 13:18:43ID:???
おまえらほんとセキュリティにはうぶなんだな(笑)
0941nobodyさん2006/10/24(火) 13:51:15ID:???
>>940
ぜひここでセキュリティ対策の講義を(笑)
0942nobodyさん2006/10/24(火) 14:16:18ID:???
>>940
初心者でもわかりやすくお願いしますね(笑)
0943nobodyさん2006/10/24(火) 14:22:00ID:???
>>940の次の一言で歴史は動く。
09449402006/10/24(火) 15:29:24ID:???
ネットに繋がなければいいんだよ。
0945nobodyさん2006/10/24(火) 16:33:41ID:???
>>944
お前にはがっかりだ。
0946nobodyさん2006/10/24(火) 16:44:02ID:???
単純な話、cookieでいいじゃん。
ブロックしてたら、ブロックしないようにしてから投稿してねで。
0947nobodyさん2006/10/24(火) 16:59:53ID:Fh1N1ejS
ホゲドットコム
(´д`)つhttp://hoge.com/about/index.html
0948nobodyさん2006/10/24(火) 17:20:24ID:???
>>944
騙ってんじゃねえよ。
いいか、phpでもっとも有効な対策は重要なデータはhiddenにのせないことだ。
0949nobodyさん2006/10/24(火) 17:22:27ID:???
cookieが使えるのはPCのみで、携帯ではcookie対応機のみ。
PC用と携帯用で振り分ければいい。
万能な記述などない。やるだけだ。
0950nobodyさん2006/10/24(火) 17:24:14ID:???
あと、クッキーに「サーバのログに書き込むデータ」は保存しないことだ。
クッキーが改ざんされてしまうだろうが。
0951nobodyさん2006/10/24(火) 17:29:51ID:???
やはりセッションが無難であるといえる。
ただ、ハイジャックされることも頭に入れてコードを書かなくてはならない。
たとえば、下記を参照してもらおう。

セッションA−−−−−−−→セッションB
         ↑
         盗聴

クライアントにセッションAを与える。
クラッカーがセッションAを盗撮。
しかし、セッションAを与えた直後、セッションBに移し変えてセッションAを消してやれば
盗聴されたセッションAは何の意味ももたなくなる。
09529402006/10/24(火) 17:30:29ID:???
>>948->>951はおれ

ツッコミどうぞ
0953nobodyさん2006/10/24(火) 17:36:10ID:???
・セッションはIPと対にして発行、IPが変わったら無効
・そもそもSSL通せや
が抜けてる
0954nobodyさん2006/10/24(火) 18:38:11ID:???
スレ違いだけど、PHP使い始めて2年、プログラマになって20日だけど、今日初めてinclude_onceの有り難みが解ったorz
0955nobodyさん2006/10/24(火) 18:42:39ID:???
>>951
>盗撮

ふだん使ってる言葉が無意識に出ちゃってるぞ。
0956nobodyさん2006/10/24(火) 19:04:53ID:???
>>953
ipだけじゃだめでしょ。
0957nobodyさん2006/10/24(火) 20:35:28ID:???
質問です。

aaa.php?test=1とURLに指定して呼び出したときに
echo $HTTP_GET_VARS['test'];をしても1が表示されません。

phpinfo()を呼んだ画面ではregister_globalsがOnと表示されています。

register_globals以外に上記を取得するための設定が必要なのでしょうか?
fedora core5を使っていて、phpのバージョンはphp-5.1.6-1.1です。
0958nobodyさん2006/10/24(火) 20:38:45ID:???
ttp://jp.php.net/manual/ja/ini.core.php#ini.register-long-arrays
0959nobodyさん2006/10/24(火) 20:42:36ID:???
>>957
そんなもん使うな。

$_GET, $_POSTなどのスーパーグローバル変数を使え。
0960nobodyさん2006/10/24(火) 20:44:31ID:???
>>958
ありがとうございます。
1ピコ秒で解決しました。
0961nobodyさん2006/10/24(火) 21:02:38ID:???
ぼくのぴこ
0962nobodyさん2006/10/24(火) 21:30:09ID:???
>>956
ほかになにがあるんですか?いってください。
0963nobodyさん2006/10/24(火) 21:31:45ID:???
別の人だけどproxyも全部はじかないとな
0964nobodyさん2006/10/24(火) 21:36:14ID:???
>>930
921のリンク先の言葉を使えば、デフォルトのままでforeachが「内部イテレータ」の役割を果たす。
Iteratorはその挙動を自分で指定できる、メタプログラミングの一種かと(既存のarrayを操作できるわけではないけど)。
0965nobodyさん2006/10/24(火) 21:49:31ID:???
>>964
そのリンク先、関連項目のforeachをあわせて見てみるべし。
イテレーションとは別のものとして取り上げているしPHPのforeachもそこにある。

本質的な話は別として、そのリンク先では
>配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。
と解説されている。

>>964
>Iteratorはその挙動を自分で指定できる、メタプログラミングの一種
まさにこれの事ではないのか?
0966nobodyさん2006/10/24(火) 22:33:27ID:???
>>965
物凄いスレ違いだけど、おもしろそうなのでつっこんでみる。
「foreachの対象はイテレータではない」
というのが965の主張??
foreachは(おそらく一般的には)イテレーションの構文糖じゃないの?

> 本質的な話は別として、そのリンク先では
> >配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。
> と解説されている。
これを実現する一つとしてforeachがあるかと。

ちなみにPHPのSPLで用意されているIteratorは、大雑把に言って「foreachの挙動を操作するもの」だと思う。
0967nobodyさん2006/10/24(火) 23:34:01ID:???
投票結果に応じてオッズを計算して更新するアプリを公開してるサイトとかありますか?
0968nobodyさん2006/10/24(火) 23:56:44ID:???
あぷり?
0969nobodyさん2006/10/25(水) 00:02:50ID:noTSvRA3
すいません下らねぇ質問です!

サイト上の特定のワードを、特定の文字に置き換えることはPHPで簡単にできますか?

例えば、 英文字の DOG というのを すべて日本語の 犬 に置き換えるという具合です。

できるとすればどんな構文になるのでしょうか? お願いします。
0970nobodyさん2006/10/25(水) 00:11:44ID:???
ブックマークレットでも使ったらどうかな。
0971nobodyさん2006/10/25(水) 00:24:22ID:noTSvRA3
>>970
翻訳できない造語(英語)や日本語のローマ字入力なんかがあるのでブックマークレットは
使えないので残念です。
0972nobodyさん2006/10/25(水) 00:24:54ID:???
IEならjavascriptをアドレスバーに直接ぶちこめばできるよ
0973nobodyさん2006/10/25(水) 00:33:46ID:???
翻訳…?

2つ3つの単語を対応する単語に置き換えるならともかく、
まともな翻訳処理を施すなら単語の置換どころの騒ぎではなくなる。

素直に検索サービスに飛ばすブックマークレット使え。
0974nobodyさん2006/10/25(水) 00:37:00ID:noTSvRA3
>>973
私の説明が悪かったです^^;

置き換えは英語、日本語関係なく、

 サイト内の 「AAA」 という単語を、 単純に「BBB」 と置き換えるだけです。

置き換えたい単語は全部で10個程度です。
宜しくお願いします。
0975nobodyさん2006/10/25(水) 00:44:18ID:???
それだとブックマークレットで駄目な理由が分からん。
サーバ上のファイルで一括置換したいという意味であれば適当なテキストエディタ使え。
0976nobodyさん2006/10/25(水) 00:45:00ID:???
>>954
詳しく!
0977nobodyさん2006/10/25(水) 00:46:54ID:???
>>974
一回ファイルに読み込んで
置換すればいいだけじゃね?
09789652006/10/25(水) 00:47:47ID:???
>>966
「PHPのforeachが繰り返しの抽象化としてのイテレータなのか」という議論はおいといて、

>>921のリンク先では関連項目のforeachにはPHPのそれが載っているが、
イテレータには載っていない。
この文脈では、PHPのイテレータとしてはIteratorを挙げるのが適当では?
ということ。

話は変わるけどimplements IteratorはJavaやPythonの例のように、
イテレーションのインターフェイス(巻き戻し、次の要素、次があるかの問い合わせ)
を提供するわけで、
・ある集合に繰り返しの窓口を設けるもの。
対してforeachは、
・繰り返しの窓口に対して、順番に要素を取り出すもの。
という事じゃないだろうか?
0979nobodyさん2006/10/25(水) 00:55:17ID:noTSvRA3
>>977
どんな関数で置き換えができるのでしょうか?
PHP詳しくないんですみません。ヒント教えていただければ検索してみます。
0980nobodyさん2006/10/25(水) 00:58:49ID:???
>>979
マニュアルを最初から読まないことを前提にしてる人にまで回答してられないよ。
というか、その内容ならPHP使わない方がいいんじゃない?
Windows用の置換ツールとか使った方がいいでしょ。
0981nobodyさん2006/10/25(水) 01:02:55ID:noTSvRA3
>>980
$hoge = array(
'1'=>'犬',
'2'=>'猫',
'3'=>'フェレット',
);
$line = "1 2 3";
$line2 = strtr($line,$hoge);

こんな感じでやってるんですがなかなか・・・ 
0982nobodyさん2006/10/25(水) 01:07:33ID:???
javasciptがわけわかんなくて投げ出しそうな奴はPHPも挫折しますか?
0983nobodyさん2006/10/25(水) 01:13:01ID:???
うん
0984nobodyさん2006/10/25(水) 01:14:28ID:???
>>981
それで具体的に何が困ってるの?
0985nobodyさん2006/10/25(水) 01:17:54ID:noTSvRA3
みなさん

$hoge=str_replace("dog","犬",$Str);

で、できました!お騒がせしました。

でも、あってますよね^^; 一応ウェブサイト上では置換えできてます

0986nobodyさん2006/10/25(水) 01:18:26ID:???
>>978
> この文脈では、PHPのイテレータとしてはIteratorを挙げるのが適当では?
いや、ぶっちゃけforeachだけ載せても、SPLのIteratorまで載せても、大した問題じゃないと思うけど。
perlのとこだってforeachとwhile-eachの例しか載ってないし。
せいぜいIteratorってのもあるよ、ってくらいのコメントで十分かと。
0987nobodyさん2006/10/25(水) 01:38:21ID:???
まあPHPのIteratorは、foreachで内部イテレータを書くことも、forで外部イテレータを書くこともできちゃうから、説明としてはまあまあ有用性高い気もするけどね。
筆者がたまたまPHPを知らなかっただけの話でしょ。

// 例
class Records implements Iterator {・・・}
$records = new Records();

// 内部イテレータ
foreach ($records as $index => $record) {
 処理
}

// 外部イテレータ
for ($records->rewind(); $records->valid(); $records->next()) {
 $record = $records->current();
 $index = $records->key();
 処理
}
0988nobodyさん2006/10/25(水) 02:03:01ID:???
strtrって遅くない?
何回計ってもstr_replaceの方が倍以上速い
どう考えてもstrtrのほうが軽そうなのに
0989nobodyさん2006/10/25(水) 02:10:30ID:???
件のページに書き足すなら、foreachとimplements Iteratorを併記がいいって事で。
0990nobodyさん2006/10/25(水) 02:14:28ID:rZkuwLJp
>>985
さらに一歩進むなら
$hoge=str_replace(array("dog","cat"),array("犬","猫"),$Str);
0991nobodyさん2006/10/25(水) 02:20:35ID:???
>>988
strtrはインターフェースが冗長だからそこで時間食ってる。
0992nobodyさん2006/10/25(水) 02:30:26ID:???
俺のとこではstrtrとstr_replaceの速度は誤差の範囲内だったけど。
(何回も繰り返すと、strtrのほうが速いときも少なくないし)
988のベンチとった実際のコードキボンヌ
0993nobodyさん2006/10/25(水) 02:45:49ID:???
strtrは配列で置換指定するタイプはダメね
配列じゃない方も対象文字列が長くないとダメね
0994nobodyさん2006/10/25(水) 07:16:01ID:???
>>988
strtrは文字列置換ではなく文字置換
strtr("ABC", "XYZ", "A1B1C1");
A=>X, B=>Y, C=>Zに置換されX1Y1Z1になる
0995nobodyさん2006/10/25(水) 07:22:26ID:???
間違えた
strtr("A1B1C1", "ABC", "XYZ");
phpは似たような関数で引数の順番が違うからいちいちマニュアルで確認しないといけない
0996nobodyさん2006/10/25(水) 08:00:56ID:???
次スレ立てるけど、いくつか修正するのに文句あるやついる?

・「ですます調」が中途半端に混ざっててキモイので全て「非ですます調」に統一。
・過去スレを全部リストアップするのは色々な意味で無駄なので5つ程度に制限。
・関連リンクでZFのマニュアルは日本語版があるので修正。
・関連スレは確認が面倒なので削除(どのスレも「php」で検索するだけでヒットするのにリストアップする必要性を感じない)。
・FAQは変なとこで改行されててムカつくので、変な改行を除去。
・printはecho同様に関数ではなく、値を返すだけなので修正(数スレ前に話題に出た)。
09979962006/10/25(水) 08:11:19ID:???
つーか、そんなこといちいち断ってから立てる必要もないか。
1000まで残り少ないし。
変だったら、さらにその次のスレから直してください。
09989962006/10/25(水) 08:13:52ID:???
なにこの板。スレ立てられないじゃん。
スマソが誰が任せた。
0999nobodyさん2006/10/25(水) 08:27:59ID:???
じゃとりあえず適当にスレ立ててくる。
1000nobodyさん2006/10/25(水) 09:13:56ID:???
次スレ
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。