- 追加された行はこの色です。
- 削除された行はこの色です。
*vote.inc.phpで、選択肢の文字列に'.'を含んでいると投票してもカウンタが増えない
*vote.inc.phpで、選択肢の文字列に'.'を含んでいると投票してもカウンタが増えない [#v920a5d9]
-ページ: BugTrack
-投稿者: [[ぱんだ]]
-優先順位: 低
-状態: 完了
-カテゴリー: その他
-投稿日: 2002-12-13 (金) 09:38:30
-バージョン:
-バージョン:
**メッセージ
**メッセージ [#n6aadcf6]
([[練習用ページ]]より)
//([[練習用ページ]]より)
#vote(1.もんた[0],2.アキヲ[0])
//#vote(1.もんた[0],2.アキヲ[1])
-$HTTP_POST_VARSに入ってきた時点で'vote_1.もんた'が'vote_1_もんた'に化けている。これはApache or PHPの問題? -- [[ぱんだ]]
--Apache/1.3.26 で PHP/4.1.2 ですよね。で、HTML上は、問題ないんですけど、どう見て、そうなっていると分かったんですか? --[[upk]]
perlとPHPで同じことをしてみました。
-perl
#!/usr/bin/perl
read(STDIN,$buf,$ENV{'CONTENT_LENGTH'});
$str = '';
foreach $pair (split(/&/,$buf)) {
($key, $val) = split(/=/, $pair);
$key =~ tr/+/ /;
$key =~ s/%([0-9a-fA-F]{2})/pack('C', hex($1))/eg;
$val =~ tr/+/ /;
$val =~ s/%([0-9a-fA-F]{2})/pack('C', hex($1))/eg;
$str .= " [$key] => $val\n";
}
print <<__HTML__
Content-type:text/html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>test</title>
</head>
<body>
<pre>$str</pre>
<form method="post">
<input name="vote_1.もんた" value="投票" type="submit">
</form>
</body>
</html>
__HTML__
--結果
<pre> [vote_1.もんた] => 投票
</pre>
-PHP
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>test</title>
</head>
<body>
<pre><?php print_r($HTTP_POST_VARS) ?></pre>
<form method="post">
<input name="vote_1.もんた" value="投票" type="submit">
</form>
</body>
</html>
--結果
<pre>Array
(
[vote_1_もんた] => 投票
)
</pre>
PHPでは、name="vote_1.もんた"でsubmitしたのに'vote_1_もんた'が入ってきます。
----
-$argをencode()を通してやり取りするようにしてみました。(177.diff) -- [[ぱんだ]] SIZE(10){2002-12-13 (金) 09:58:44}
#comment
-亀レスですが、、[[PHPのマニュアル:http://jp.php.net/manual/ja/language.variables.external.php#language.variables.external.dot-in-names]] に載っています。register_globals が on な時代の名残ですね -- [[ひろ]] SIZE(10){2002-12-25 (水) 20:44:37}
-なるほど。PHPの仕様でしたか。ドキュメントに書いてあったとは。 -- [[ぱんだ]] SIZE(10){2002-12-25 (水) 23:24:12}
//#comment