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

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

レス数が900を超えています。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カテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0822nobodyさん2006/10/22(日) 12:17:43ID:???
>>821
買うならその前にレッツのソースを眺めてろ。
0823nobodyさん2006/10/22(日) 12:21:48ID:BSjdszSl
>>821
レッツって何?
0824nobodyさん2006/10/22(日) 12:24:52ID:???
>>822
レッツ php
で、検索もできないならココで質問するな。
08258242006/10/22(日) 12:25:40ID:???
うお!
レス間違えたorz
0826nobodyさん2006/10/22(日) 13:10:15ID:???
なんだ!この流れのテンションおかしいぞ!
0827nobodyさん2006/10/22(日) 13:37:35ID:???
>>820

なんか<?php 〜〜〜 ?>
が凄く多い気がするんですけど。皆さんも必要部?だけphpの記述をする感じですか?

私の場合、例のような感じですと<tr>なども全て出力させるのて
おおきく<?php で囲ってしまうのですがどうなのでしょうか?
0828nobodyさん2006/10/22(日) 13:43:25ID:???
as you like
0829nobodyさん2006/10/22(日) 13:55:50ID:???
>>827
普通はviewとロジックは分けるもの。
テンプレートエンジン等使って事ある奴ならそんな発言は先ずでない。
0830nobodyさん2006/10/22(日) 14:11:37ID:???
>>829
何処までをLogicとするかはかなり主観的な問題だからその考えは一般的じゃない
0831nobodyさん2006/10/22(日) 14:14:59ID:???
<?php .... ?>のあいだにはいってるのが「ロジック」
そとにあるのが「ロジックではないもの」
ていうロジックなのかな?
0832nobodyさん2006/10/22(日) 14:19:47ID:???
そういうロジックであるべきってロジックじゃないか?
0833nobodyさん2006/10/22(日) 14:21:38ID:???
ロジックはロジカルであるべき
0834nobodyさん2006/10/22(日) 14:22:10ID:???
「?」がたくさん踊っていると個人的には読みにくいと思うので
埋め込み方式では書かないな・・・
0835nobodyさん2006/10/22(日) 14:23:43ID:???
俺はC言語的に書いてしまうな。
0836nobodyさん2006/10/22(日) 14:51:36ID:???
2chのトリップ生成関数を教えてください
0837nobodyさん2006/10/22(日) 15:01:14ID:???
>>836
検索しなさい
08388092006/10/22(日) 16:22:39ID:b7CANJCx
色々とお返事、叱咤等ありがとうございました。
また、>>815>>820のお二方は
具体的に記述していただいて大変感謝です!

ただ、このやりかただと、
<tr><td>二郎</td><td>三郎</td><td>四郎</td></tr>
<tr><td>五郎</td><td>六郎</td></tr>
というように、最初のレコードである「一郎」が表示結果に出ません。
(ソート順は名前でやってあります。)
試しに別フィールド「年齢」でソートしてやっても、
やはり最初のレコードは表示されません。
>>815>>820の両氏のコードで試しましたが、同じでした。
これは私の環境がおかしいのでしょうか??
もしこれがデータベースの問題なら、
これ以上はスレ違いなので調べても分からなかったら他を当たってみます。

しかし、今回のような動的テーブル作成法って変わった事なんでしょうか?
WEBアプリの場合だと、当たり前なんだと思ってました・・・。
0839nobodyさん2006/10/22(日) 16:29:54ID:???
表示する以前に1回fetch_assocやってんるんだろ?
0840nobodyさん2006/10/22(日) 16:41:14ID:???
>>838
素人レベルでは割と普通。
仕事でやるならデータの取得と表示は完全に分けちゃうのが一般的。
0841nobodyさん2006/10/22(日) 16:50:10ID:???
>>838
まずデータの取得「だけ」やってみて確認しなよ。
それすらやらずに人に聞くなんてアホじゃないかと。
0842nobodyさん2006/10/22(日) 17:08:16ID:???
どんな書き方をしても自分で見通しが利けば問題ないよ
他人の書いた物はどうせ見難いし
0843nobodyさん2006/10/22(日) 17:12:53ID:???
見易さ以前にデバッグしづらい書き方しときながら
デバッグできないので教えてください、じゃ話にならんだろ
08448092006/10/22(日) 17:45:09ID:b7CANJCx
皆様、色々とありがとうございました。
>>839氏の仰るとおり、表示以前に処理しておりました。
ご迷惑をお掛けして申し訳ありませんでした。
また、>>815>>820氏にはせっかく書いて下さったのに
失礼な発言をしてしまいました。
お詫びいたします。

これでやっと希望通りの結果を得ることが出来ました。
そのことには深く感謝です!
しかし私が言うのも何ですが、プログラミングって面白いですよね。
これからも少しずつ精進していこうと思います。
最後にもう一度、ありがとうございました!
0845nobodyさん2006/10/22(日) 17:59:35ID:???
>>844
うむ。頑張りな。ノシ
0846nobodyさん2006/10/22(日) 20:26:50ID:QZl/ECEV
昨日からphpを独学で始めましたプログラミングど素人です

↓のようなものをつくりたいのですが、これはどの程度のレベルなのでしょうか?
だいたい何ヶ月くらいで作れるようになりますか?
http://www.satoya-boshu.net/keisai/c.htm
0847nobodyさん2006/10/22(日) 20:36:21ID:???

その里親募集は、レベルとしては中級ってとこじゃないですか。

いろんな人みてますけど、ほんとに人それぞれですよ。

大雑把に言って、2ヶ月、3ヶ月ってとこじゃないですか。

勘のいい人は、まったくの、まっさらの状態から勉強して
1ヶ月でさくっと作ったりしますよ、それぐらいだと。

コツとしては、一度に複雑なものを作らないことです。
必要最小限の機能のものを作って、それに肉付けしていく。

なんか、今日・昨日、DBからひっぱってきたデータを二列に表示したい、とかいう
話がありましたけど、ああいうのも、最初は一列で表示させる、
次に、DBとは関係なく、配列データの二列表示の研究、最後に両者を組み合われる、とか、
「分割して統治せよ」のコツを、うまくつかめるひとは、みにつくのもはやいです。
08488472006/10/22(日) 20:40:40ID:???
即レスありがとうございます
1〜3ヶ月ですか
年内を目標にがんばっていこうと思います

アドバイスもありがとうございます
まだそこまでの域に達していないのでピンときませんが、
忘れないように肝に銘じておきます
0849nobodyさん2006/10/22(日) 21:15:22ID:???
最近佐賀ネタでスレ違いの書き込みが増えている。
佐賀県庁・佐賀県警・談合・痴漢・情報漏洩などの内容だ。
銀行が潰れるとしたデマが回り騒ぎが起きたこともある。
このような書き込みは慎むべきだ。

被害防止のため常駐するスレに啓蒙してくれ。
0850nobodyさん2006/10/22(日) 21:16:06ID:???
それ自体が荒らしだと何故気づかない
0851nobodyさん2006/10/22(日) 21:22:47ID:???
そこ、マジレスするところじゃないよ
0852nobodyさん2006/10/22(日) 21:27:19ID:???
それもスレに「佐賀」と書かせるための釣りだからな
0853from greypawn2006/10/22(日) 21:56:21ID:???
>>848
プログラム未経験なら分かりやすいPHP入門書を1冊買うといいですよ。
あと大事なのは、オンライン公式マニュアルの導入のところをちゃんと読んでおくことと
使えそうな関数のチェックは怠らないことですかね。

847氏も書いてますが、単純な形から徐々に拡大していくというのに賛成です。
今日のテーブルの件だって複雑に考えなくても
for文を使って1から6までの数字を
1 2
3 4
5 6
と表示するにはどうすればいいかと考えることと同じなわけで。

里親募集は要するに掲示板作るのと同じですね。
データの保存にDB使うのかファイル使うのか分からないけどDBと仮定すると、
登録時は
@HTMLからフォーム送信⇒APHPで受け取ってSQL文生成+クエリ実行⇒BDBに保存
表示時は
CSQL文を実行してDBからデータを取得⇒DデータとHTMLタグを組み合わせてHTMLページを出力
みたいな感じ。

あと細かい処理やら写真のアップなどは追々付け足していけばいいわけで。
何か詰まったらまたここで聞いてくださいね。

0854847じゃなくて846でした2006/10/22(日) 23:19:31ID:???
>>853
アドバイスありがとうございます
右も左もわからない状態なので助かりました
0855nobodyさん2006/10/23(月) 01:36:51ID:2dkTMRuK
こんにちは、少し前にこのスレッドにて質問をさせていただいた者です。
また、初心者な質問をさせていただきます。

返信機能付きの掲示板を作成しているところです。

現在、無限ループが発生していて、困って居ます。
演算子などの辺りのマニュアルも一応読みましたが、原因が分かりません。

どなたか教授をお願いします。

ソース:
http://www5.pf-x.net/~php/s/q.phps


あと、質問者として最低の行為だと思うのですが、今日から2日間、小旅行に行ってきますのでお答えを見る事ができません(泣
0856nobodyさん2006/10/23(月) 01:55:02ID:???
帰ってきてから質問しれよw
0857nobodyさん2006/10/23(月) 02:08:44ID:2dkTMRuK
エラメです。
書いておくのを忘れてしまいました。

Fatal error: Maximum execution time of 60 seconds exceeded in C:\Program Files\xampp\htdocs\test\res\res\bbs.php on line 136
0858nobodyさん2006/10/23(月) 02:13:06ID:2dkTMRuK
>>856
帰ってきてからでは少し都合が悪いのです。すみません。


Warning: file(1 .dat) [function.file]: failed to open stream: Invalid argument in C:\Program Files\xampp\htdocs\test\res\res\bbs.php on line 136

もあるようです。1と.datの間に半角スペースが・・・。
0859nobodyさん2006/10/23(月) 02:26:31ID:???
>>858
> $roop_lines = file(ENTRY_NUM_FILE);//現在、「1」が代入されます(最新の親記事番号)
> $num_of_time = (end($roop_lines));//最後の要素(最大数)を取り出します
file()で取得される配列は各行に改行コードがついたままになっている。
それを
> for($i = $num_of_time;$i >= 1;$i--){//最大の要素分ループします。(たぶんこの辺りがおかしい)
> $file = ($i.'.dat');
とやってしまっては、$i(改行).dat という意味不明のファイル名になってしまう。
136行目でMaximum execution time of 60 seconds exceededとfailed to open streamが出てるってことは
> $entry = file($file);
これが136行目なんだろうと思うが、不正なファイル名を渡されて読み込みを行っているために
file()関数が止まってしまってる状態。これは永久ループじゃなく1件目でいきなりこけてると思われ。
0860nobodyさん2006/10/23(月) 02:41:05ID:2dkTMRuK
すいません、解決しました。

こんなに駄レスをしてしまい、申し訳ありません。
0861nobodyさん2006/10/23(月) 02:42:10ID:2dkTMRuK
>>859
rtrim()でその改行コードを取り除いたら解決しました。


回答していただき、ありがとうございます。
0862nobodyさん2006/10/23(月) 05:24:06ID:???
http://cyclone.slis.tsukuba.ac.jp/cgi-bin/cycmap1/cyclone.cgi?node=PHP
0863nobodyさん2006/10/23(月) 13:36:35ID:???
>>862
それ、何の役に立つんだろうね?

一見するとすごいけど、「で、それがどうしたの?」って感じだもんな。
0864nobodyさん2006/10/23(月) 15:40:27ID:???
レッツAJAX!
0865nobodyさん2006/10/23(月) 15:57:37ID:???
役に立たないから面白いんじゃないか。
0866nobodyさん2006/10/23(月) 20:11:42ID:3vDBvRjM
みんなクラスファイルってどこに置いてる?
俺はlib/php以下にclassってディレクトリ作って置いちゃってたんだけど。。
0867nobodyさん2006/10/23(月) 20:50:27ID:???
好きなようにすればいい
0868nobodyさん2006/10/23(月) 20:58:52ID:???
うちはDOCUMENT_ROOTの1つ上の階層にディレクトリ作ってそこ。
0869nobodyさん2006/10/23(月) 21:43:55ID:???
>>865
役に立たないだけでなく、面白くもないんだが。
関連ワードが無茶苦茶だし。
0870nobodyさん2006/10/23(月) 22:17:06ID:???
>>840
仕事でやる人はイテレータとか使わないの?
08718662006/10/23(月) 22:22:33ID:3vDBvRjM
>>868
なるほど。/home/user/class/みたいな感じですかね?
共通クラスみたいのは特に作ってないですか?
0872名無しさん@お腹いっぱい。2006/10/23(月) 22:42:07ID:1uLUI3dC
文字列の置換についてお聞きしたいのですが。
例えば、tenki.txtに"明日 天気にな ぁれ。"のような文章が入っていた
とします。それを全角スペースを置換し、「明日天気になぁれ。」にしたい
のですが、どのようにすれば良いでしょうか。
一応、このようにしてみたのですが・・

$file=fopen("tenki.txt","r+");
$str =fread($fp,filesize("tenki.txt"));
$str2=str_replace(" ","",$str);
fseek($file,0);
fwrite($file,$str2);
fclose($file);
結果はエラーはでないが、効果もないという感じでして。。。
どのようにすれば良いのか、ご教授いただけないでしょうか?

0873nobodyさん2006/10/23(月) 22:44:40ID:???
>>872
とりあえず、$fpは何処から持ってきたのか教えてくれ・・・
0874nobodyさん2006/10/23(月) 22:52:36ID:???
>>871
うちは1サーバー1システムだから。
0875名無しさん@お腹いっぱい。2006/10/23(月) 22:53:42ID:1uLUI3dC
すいません。$fpではなく、$fileでした。
こちらに書く際に間違えてしまいました。
改めて、よろしくお願いします。
0876nobodyさん2006/10/23(月) 22:59:40ID:lxved+5w
ユーザー関数内から$textを表示させたいのですが
思うようにうまくいきません。
どなたかご教授お願いいたします。
php4.4.4です。

$text = "2ちゃんねる";

html($text);

function html()
{
echo $text;
}
0877nobodyさん2006/10/23(月) 23:00:18ID:???
>>872
> $str2=str_replace(" ","",$str);
半角スペースしか置換してないように見えるんですが。
0878nobodyさん2006/10/23(月) 23:01:21ID:???
>>876
function html($text)
0879nobodyさん2006/10/23(月) 23:01:32ID:???
>>876
echo $GLOBALS['text'];
08808762006/10/23(月) 23:07:28ID:???
>>878-879
迅速なアドバイスありがとうございます。
両方とも正しく動きました。
『function html()』と『html()』の両方に引数をわたさないとだめだったんですね。

$GLOBALS['text']はとても使いやすいですね。

お互い要所によって使い分けてみたいと思います。
ありがとうございました。
0881名無しさん@お腹いっぱい。2006/10/23(月) 23:07:47ID:1uLUI3dC
>872です。
" "で効果がなかったので、" "としてしまいました。
どちらにしても置換がされないので、どうしたものかと。。。
0882nobodyさん2006/10/23(月) 23:14:30ID:???
>>881
良く考えたらそれはおかしいよ
文字数が減るからfseek0にしたら後ろにゴミが残るでしょ
だから勘違いしてると思う
0883nobodyさん2006/10/23(月) 23:19:43ID:???
<?php ?>をコード中にたくさん記述するのは処理が重くなるのでしょうか?
0884名無しさん@お腹いっぱい。2006/10/23(月) 23:20:42ID:1uLUI3dC
872
fseekを使わないでやるというパターンも試してみたんですけど、どうも
うまくいかないのです。
よろしければ、答えの一例をお示しいただけないでしょうか?
0885nobodyさん2006/10/23(月) 23:32:48ID:???
>>883
1万個くらい書いたHTML文書を生成して試してみてくれ
0886nobodyさん2006/10/23(月) 23:32:58ID:???
>>880
> 『function html()』と『html()』の両方に引数をわたさないとだめだったんですね。
違う。
function html($text) は「引数を受け取れるようにする」という「指定」。
これで初めて引数を使えるようになるものであって、これは引数を渡しているわけじゃない。
渡される引数と、関数側の指定は別のものなので、
$data1 = "1ちゃんねる";
$data2 = "2ちゃんねる";
html($data1);
html($data2);

function html($text)
{
echo $text;
}
のように異なる変数名を使えるし、そこに利点がある。
(関数はそれ以外の部分がどうなっているかを意識せずに作りこむことができる)

> $GLOBALS['text']はとても使いやすいですね。
> お互い要所によって使い分けてみたいと思います。
グローバル変数を使う方式はこういう自由度が無いため、使い分けが重要。
0887nobodyさん2006/10/23(月) 23:33:45ID:???
>>883
たくさんコメントを書きまくるのと同じ程度には重くなると思います。
0888nobodyさん2006/10/23(月) 23:35:05ID:???
>>881
> " "で効果がなかったので、" "としてしまいました。
それ、どっちも半角スペースだと思うんですが。
0889nobodyさん2006/10/23(月) 23:36:26ID:???
>>882
今は置換されてないんだからゴミも出ないよ。文字数変わってないんだもの。
ちなみにtenki.txtの更新日付は実行後に変化してますか?>>872
0890nobodyさん2006/10/23(月) 23:40:36ID:???
>>889
家でテストしたら半角も全角もちゃんと動いたよ
08918712006/10/23(月) 23:40:38ID:???
>>874
そうでしたか。まああまり気にすることなさそうですね。
レスありがとうございました。
0892nobodyさん2006/10/23(月) 23:44:06ID:???
まさか書き込み禁止のデータファイルでエラー制御してるとかだと笑えるけどw
0893nobodyさん2006/10/23(月) 23:46:41ID:zNg8YSYz
すいません、CSVのの特定の行データ(例:18行目)を抽出しるにはどんな
感じにすればよいのでしょうか?
0894名無しさん@お腹いっぱい。2006/10/23(月) 23:46:46ID:1uLUI3dC
872です。
>888
確かに。言い直すと、全角または半角指定でもうまくいきませんでした。
>889
実行後の更新日時は変化していました。
それと、改めて実行したところ、スペースは置換されました。
しかし、"明日天気になぁれ。れ。"
となってしまいました。
きれいに置換する方法はないものでしょうか?
0895nobodyさん2006/10/23(月) 23:53:33ID:???
>>894
結局置換できなかった理由はなんなのよw
ゴミの方は>>882が書いてるけど、上書き時のゴミでしょ。
1度元のファイルを消さないと、同じ桁位置に上書きするわけだから
字数が短くなれば当たり前だが後ろに上書きされなかった内容が残る。
ファイルを作り直すか、中身消去関数を実行しましょう。
0896nobodyさん2006/10/23(月) 23:55:34ID:???
>>893
$fp = fopen("CSVファイル", "r");
for($i = 0, $i < 17; $i ++) fgets($fp);
$line = fgets($fp);

echo $line;
0897nobodyさん2006/10/24(火) 00:16:44ID:???
>>894
とりあえず、動いてるものを動いてないと勘違いしてた時点で
しばらくは質問を控えて自分で悩んだ方がいいと思うよ。
実際の状態が分からない状態で質問されても正直困る。
0898名無しさん@お腹いっぱい。2006/10/24(火) 00:21:07ID:amM1UeJp
結構悩みましたが。。。まぁとりあえず出直します。
0899nobodyさん2006/10/24(火) 00:26:04ID:???
PHPでCharCodeAtみたいな文字コード番号を返す関数ってありますか?
0900nobodyさん2006/10/24(火) 00:35:04ID:Ylboj5c4
>>896
ありがとうございます。確かに18行目のデータ全て抽出することができました。
さて、これからがぼくにとっての難問なんです・・・

たとえば、2つのCSVファイルがあるのですが(佐賀県.CSVと汚職.CSV)、やりたいことは
汚職.CSVの中の「Sさん」という人物プロフィール紹介のページで、「Sさん」に当てはまる(登録されている)
汚職カテゴリーを佐賀県.CSVの中からすべて抽出し、<li>・・・・・</li>の形で表示したいのですが、
なかなかうまくいきません。

どうかお知恵をおかしください。どんな感じにすればよいのでしょうか?


0901nobodyさん2006/10/24(火) 00:58:03ID:???
@頑張る
A単純化して考えてみる
BDB使う
0902nobodyさん2006/10/24(火) 01:00:27ID:???
>>899
ord
0903nobodyさん2006/10/24(火) 01:18:03ID:???
>>900
18行目の抽出程度で困る人ではその内容は無理かと。
0904nobodyさん2006/10/24(火) 03:52:46ID:???
>>900
佐賀県.CSVをループさせてる間、人名を<a href="hoge.php?query=xxx">で囲ってxxxにエンコした人名を入れておく、
受け取り側では$_GET['query']を確認してから該当文字列を含む列を配列に格納、その配列をぐるぐるしながら表示。
とか?
0905nobodyさん2006/10/24(火) 04:06:20ID:???
まだおきてるひとはいますか?
0906nobodyさん2006/10/24(火) 04:11:00ID:???
いますけど何か?
0907nobodyさん2006/10/24(火) 04:30:03ID:???
質問してもいいですか?
0908nobodyさん2006/10/24(火) 04:34:21ID:???
回答するか(できるか)は分からんけど
質問があるならすればいいかと。
0909nobodyさん2006/10/24(火) 04:48:35ID:+34GEzTN
自宅内PCのlocalhostからhoge.comへポストで送信することについて。
hoge.comに向けられた、自宅内PCから発射されたPOSTを遮断する方法がわかりません。
何かヒントとなるものはございませんでしょうか?


『自宅内PCのindex.phpのコード』

<form action="http://hoge.com/index.php>;
<input type="submit" name="submit" value="submit">
</form>

『hoge.comのindex.phpのコード』
if (isset($_POST[submit]))
{
echo "他サイトからポストがありました";
}
0910nobodyさん2006/10/24(火) 04:57:49ID:???
>>909
REFERERを見て自分のサイト以外だったら弾くとかくらいじゃ…
もっとも、昨今はREFERERを返さない設定にしちゃってる
ブラウザやセキュリティソフトが多いのであまり十分とは言えないけど。
あとはセッションを使って、直前の送信ページ表示の情報を持ってる
ユーザのPOST以外は受信不可にするとか。
もっともこれも1度送信ページを表示してから実行されるとスルーしちゃうけど。

それを完璧に防ぐ方法は理論上存在しないと思う。
しょせん、クライアントのブラウザを介しての処理だからねぇ。
クライアントが「送信元のページ」を正確に渡してくれないことには不可能で、
クライアント自体をユーザが自作可能である以上、そんな手法は存在しない。
0911nobodyさん2006/10/24(火) 05:12:21ID:???
Refererより改竄しやすいけどCookieのセッションがあるな。
有効期限で一定時間以後は無効にもできるし。
0912nobodyさん2006/10/24(火) 05:16:19ID:???
セッション使った対処方法もすでに>>910で書いてるけど…
データ本体をサーバ側に置いとけば改竄はそうそうできないよ。
0913nobodyさん2006/10/24(火) 05:26:08ID:???
正規の入力画面を表示した時にアクセスしたタイムスタンプを送れるように
hiddenを仕込む、同時にその値をDBに突っ込む、
受け側(hoge.comのindex.php)で値を受取る時にDBを確認、
hiddenで送られたタイムスタンプと一致したら正規のPOST、とかどう?
一定時間過ぎたらCronなりでDBを掃除
0914nobodyさん2006/10/24(火) 05:33:41ID:???
アンケートフォームなどで、radioボタンなどのvalueとして設定される数値と
textフィールドに入力されるテキストが値として混在しますが
こういうのはどこで分割するのがいいんでしょうか?

例えばこんなやつです。
<input type="checkbox" name="q1[]" value="1">選択肢1
<input type="checkbox" name="q1[]" value="2">選択肢2
<input type="checkbox" name="q1[]" value="3">選択肢3
<input type="checkbox" name="q1[]" value="4">その他<input type="text" name="q1[]">

@HTMLの時点でname属性を変える(q1_4_txtなど)
ADBのテーブルを数値用と文字列用に2つ作り、POSTされたデータをPHPで判定して振り分ける
BDBにまとめて放り込み、selectするときに上手いことやる

とりえあず@のようにnameを変え、select文を
 select name, value, count (value) from table group by name, value
とし、PHPで全件に対して
valueが数値の場合:  $result[name][value] = count;
valueが文字列の場合: $result[name][] = valie;
と代入して使用しています。

もしかして効率が悪いことしているのかと不安に感じるので、皆さんは普段どうしていますか?
こういうフォームを扱う時のコツなどありましたら教えてください。
0915nobodyさん2006/10/24(火) 05:34:47ID:???
どっちにしろ、正規ページ表示→そのページを元に生成した不正ページから送信 って
パターンは防げないけどね。
>>909が何をどこまで厳密に防ぎたいのかが分からないので何とも。
送信前に1度でも正規ページを表示してくれれば問題なし、って話ならセッションで十分でしょ。
0916nobodyさん2006/10/24(火) 05:39:41ID:???
>>914
フォーム云々ってより集計プログラムの方が問題な気がする。
フォームは集計プログラムの仕様に合わせれば自ずと決まるんじゃないか?それ。
「最終的にどういう形でDBに入ってくれてれば容易に集計できるのか」
という逆算で設計した方がいいよ。
0917nobodyさん2006/10/24(火) 05:40:31ID:???
IPではじけないのか?
0918nobodyさん2006/10/24(火) 05:41:40ID:???
>>917
クライアントのIPと送信元ページに何の関係があるのよ。
0919nobodyさん2006/10/24(火) 05:52:19ID:???
Macのハートマークなどの機種依存文字を省きたいんですが、ordでは成功しませんでした。
どうすればMacなどの機種依存文字を判定できるんでしょうか?
0920nobodyさん2006/10/24(火) 06:52:43ID:???
bin2hex()でゴニョゴニョするのかな?ごめんわからん。
0921nobodyさん2006/10/24(火) 07:34:48ID:???
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF

↑PHPだけ省かれてるのが、何か意図的なものを感じる。
誰かPHPの記述も追加してくれ!!
レス数が900を超えています。1000を超えると表示できなくなるよ。