dポイントプレゼントキャンペーン実施中!

<?php
//サーバ内のファイルの絶対パス
$path = $_GET[path];
$source = file_get_contents($path);
//$source = "ダミー";
?>
<html>
<body>
<?php
print<<<END
<form method="POST" action="$_SERVER[PHP_SELF]?path=$_GET[path]">
<textarea name="source">$source</textarea>
<input type="submit" name="exe" value="実行" />
</form>
END;
?>
</body>
</html>

大きめのデータを送信すると403エラーが出ます。
5行目のコメントを外すと正常に動きます。
簡略のためエンコードやHTMLエンティティの処理は省略してあります。

どうすれば解決できるでしょうか。
よろしくお願いします。

A 回答 (3件)

>大きめのデータをを送信すると



具体的には何バイト?
そこにヒントがあると思います。

もしくはWEBサーバのアクセスログに何か残っていませんか?
    • good
    • 0

GETの上限値を超えているのではないでしょうか?



実際どういうデータを送信してるかはわかりませんが、GETはアドレス込みで1024バイトまでしか送信されず、それ以上は切られてしまうので、パラメータが中途半端になっておかしくなってるのではと思うのですが。

送受信をすべてPOSTにすれば、おそらく解消されるかと。
まあPOSTにもGETほどではないにしろ上限はありますが(^^;
    • good
    • 0

処理がおかしい感じがします。


なぜ、フォームはPOSTなのに、GETの形式でパラメータを渡す?
それを直せば解決しませんか?

この回答への補足

ありがとうございます。
しかし、状況は依然変わりませんでした・・・。
基本的にPOSTとGETは併用しても問題ないと思うのですが・・・。

<?php
$path = $_GET[path] ? $_GET[path] : $_POST[path];
$source = file_get_contents($path);
//$source = "ダミー";
?>
<html>
<body>
<?php
print<<<END
<form method="POST" action="$_SERVER[PHP_SELF]">
<textarea name="source">$source</textarea>
<input type="hidden" name="path" value="$path" />
<input type="submit" name="exe" value="実行" />
</form>
END;
?>
</body>
</html>

補足日時:2008/07/29 00:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!