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禁止というわけではなさそうです。
よろしくお願いします。
> formに関しておかしな動きをするサーバがあるのですが、これはサーバ仕様でしょうか?
> 他のサーバは正常に動く
ということなら、サーバについての記述がないと何も言えない。レンタルの共有サーバとかなら、どこのを使っているか書けば、回答しやすくなると思う。上のだけ見て、ちょっと考えたのは、php.ini の設定。php の動作って、これで随分変わってくる。共有サーバでも ini_set 関数を使えば設定を変えられるので、そこの問題なら、その方法で多分解決可能。 だけのファイルを実行した結果を、うまく動いているサーバとそうでないサーバで比較してみて、何か問題に関係していそうな差がないかどうか。それっぽいのがあったら、書いてもらえれば、解決できるかも。
ありがとうございます。
phpinfo見ながらいろいろやっていたら半分解決しました。
どうやらinputデータの連投がサーバ側で禁止されているようで、時間を置くことで正しく送信できました。
できれば連投できるようにしたいのですが、どこを変更すればいいでしょうか?
max_input_timeが120に設定されている以外は、動くサーバと同じような設定で、Linuxでした。
max_input_timeは無関係ですよね?どちらにしてもini_setで変更不可な項目です。
register_globalsはどちらもoffです。
動かないサーバは、拡張機能が多く追加されています。
あとは項目名を書いていただければ提示します。
よろしくお願いします!