PHP、サーバの質問です。

formに関しておかしな動きをするサーバがあるのですが、これはサーバ仕様でしょうか?何か対処法はないものでしょうか?
・文字を入れて送信すると、下に入力した文字が出る(<?= $f_ser; ?>の部分)
・その後リフレッシュせずにもう一度文字を入れて送信すると、下に文字が出ない(postで送ったデータが空になっている?)
・他のサーバは正常に動く
環境は4.4.6で.htaccessは使えます。

↓ソース
<?
mb_language('ja');
mb_internal_encoding('UTF-8');
mb_http_output("UTF-8");
set_time_limit(60);
$f_ser = stripslashes($_POST['f_ser']);
?>
<? echo '<?xml version="1.0" encoding="UTF-8"?>'."\n" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test</title>
</head>

<body>
<form action="#" method="post">
<input type="text" size="80" name="f_ser" value="a" />
<input type="submit" value="送信" style="width:200px; height:40px;" />
</form>
<?= $f_ser; ?>
</body>
</html>

一度はPOSTで送れているところから、POST禁止というわけではなさそうです。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/01/11 10:06:09
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:so-asano No.1

回答回数40ベストアンサー獲得回数5

ポイント60pt

> formに関しておかしな動きをするサーバがあるのですが、これはサーバ仕様でしょうか?

> 他のサーバは正常に動く

ということなら、サーバについての記述がないと何も言えない。レンタルの共有サーバとかなら、どこのを使っているか書けば、回答しやすくなると思う。上のだけ見て、ちょっと考えたのは、php.ini の設定。php の動作って、これで随分変わってくる。共有サーバでも ini_set 関数を使えば設定を変えられるので、そこの問題なら、その方法で多分解決可能。 だけのファイルを実行した結果を、うまく動いているサーバとそうでないサーバで比較してみて、何か問題に関係していそうな差がないかどうか。それっぽいのがあったら、書いてもらえれば、解決できるかも。

id:tukihatu

ありがとうございます。

phpinfo見ながらいろいろやっていたら半分解決しました。

どうやらinputデータの連投がサーバ側で禁止されているようで、時間を置くことで正しく送信できました。

できれば連投できるようにしたいのですが、どこを変更すればいいでしょうか?

max_input_timeが120に設定されている以外は、動くサーバと同じような設定で、Linuxでした。

max_input_timeは無関係ですよね?どちらにしてもini_setで変更不可な項目です。

register_globalsはどちらもoffです。

動かないサーバは、拡張機能が多く追加されています。

あとは項目名を書いていただければ提示します。

よろしくお願いします!

2008/01/09 10:39:42
  • id:tukihatu
    すみません補足です。
    firefox、IEのどちらでも起こります。
    formのactionに#を入れていると、IEでは何回も押しているとページの有効期限切れ、という表示がでます。
    #を消しても問題は解決しませんでした。(有効期限切れにはならなくなりました)
  • id:so-asano
    > だけのファイルを実行した結果

    <? phpinfo(); ?> ってのを普通に全部半角で入力したら、画面では消えてる。最近使い始めたばっかで、このサイトの仕様あんまり知らなかったもんで。お恥ずかしい限り。

    デバッグ(あるいは、バグでなくても、環境によって発生する問題の解決)の手法のひとつは、とにかく、試行錯誤すること。メソッドを GET に変えるとどうなるか試してみる、とか。あと、action="" にスクリプト名を明示するとか。<input type="hidden" name="rand" value="乱数"> みたいのを試しに入れてみるとか。

    実際にこちらでいじれない以上、回答するにも限界があるので、情報は可能な限りたくさん提示した方が、正確な回答を得やすいと思う。上みたいなことをひと通り試して、どんな結果になるか書いてもらえれば、また原因についてちっと考えてみようかと。
  • id:tukihatu
    >so-asanoさん
    ありがとうございます。

    ・getで送信→○
    ・actionで?数値→○
    ・乱数→×
    ・Achillesかませてlocalhost:80で調査→POSTで飛んでくるしバグも起こらず○

    なんだかサーバが遅いだけのような気がしてきました。キャッシュの問題もあるみたいです。
    まあactionで別ファイルに飛ばせば普通に動いているのでとりあえずほぼ解決、ということで。

    これに対しての明確な原因と理由がもしわかればうれしいので、もう少し回答を受け付けます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません