テキストボックス等で入力した内容をsubmit時に下記のような記述で次のPHPファイル(jianewchk.php)へ渡しているのですが前のページで入力した内容を認識してくれません。<FORM action="jianewchk.php" method="POST" enctype="multipart/form-data">


ローカル環境では問題ないのですがレンタルサーバーへアップしたら機能しなくなりました。考えられる原因を教えて頂きたいと思います。初心者なので質問の意味が分かりにくいかもしれませんがよろしくお願いします。サーバーはKAGOYAインターネットを使用しています。

回答の条件
  • 1人5回まで
  • 登録:2006/11/01 15:13:55
  • 終了:2006/11/06 11:22:06

ベストアンサー

id:tobeoscontinue No.3

tobeoscontinue回答回数214ベストアンサー獲得回数542006/11/04 18:53:36

ポイント100pt

KAGOYAインターネットを見てみるとPHPが使えるのは専用サーバプランだと思いますが、このPHPは4.3.11のようです。PHPはバージョンによって動作が違ってくるのでバージョンの違いによるものかもしれません。


単純なものはregister_globals=Offです。PHP-4.2.0以前はOnだったようでこれに依存したコードを書いていた場合は動かないでしょう。受け取りが$_POST["名前"]のようになっていればこれでは無いです。


気になる点はenctype="multipart/form-data"です。これはファイルアップロード時などに使われるようです。しかし

>テキストボックス等で

とあるのでこの辺かなぁと思います。http://www.php.net/manual/ja/ref.mbstring.php]のHTTP 入出力で

    注意:  PHP 4.3.2 およびそれ以前のバージョンの場合、 
           HTML フォームのenctype が multipart/form-data に設定された場合、
           mbstring は、POST データの文字エンコーディングを変換しません。 
          この場合、文字列を内部文字エンコーディングに変換してやる必要があります。 

    注意: PHP 4.3.3 以降、HTML フォームの enctype が multipart/form-data に設定され、
          かつ、 php.ini において mbstring.encoding_translation に On が指定されている場合、
          POST データの変数とアップロードされたファイルの名前の文字エンコーディングは、 
          内部文字エンコーディングに変換されます。

注意にあるようにPHP-4.3.11ではmultipart/form-data に設定された場合、POST データの文字エンコーディングを変換しないということが原因ではないでしょうか。

id:moks

回答ありがとうございます。register_globals=Onにて解決しました。丁寧な解説参考になりました。

2006/11/06 11:21:04

その他の回答(2件)

id:esecua No.1

esecua回答回数510ベストアンサー獲得回数102006/11/02 11:09:55

ポイント100pt

PHPは使えますよね?

パーミッションは大丈夫でしょうか?

ちょっとソースがないのでなんともいえません。もしよろしければソースを見せていただけないでしょうか?

id:moks

回答ありがとうございます。

先ほどソースを貼り付けたのですが上手くいかなかったので良かったらこちらから直接みて頂けないでしょうか?よろしくお願いします。

入力ページがjianew.phpで確認ページがjianewchk.phpとなっています。

ftp://guest01@shichoukaku.serveftp.net/

ユーザー名:guest01

パスワード:guest01

2006/11/02 17:45:39
id:esecua No.2

esecua回答回数510ベストアンサー獲得回数102006/11/03 09:39:42

ポイント100pt

すいませんが、エラーがでてダウンラードできません。

両方ともPHPなら一つのスクリプトにまとめてみてはいかがでしょうか?以下は簡単なスクリプトです。(test_POST.php)

<?php

if (isset($_POST['check_post'])) {

$name = htmlspecialchars($_POST['name']);

$email = htmlspecialchars($_POST['email']);

echo'

<h2>登録ありがとうございました。</h2>

<p>登録内容</p>

<p>名前:<b>'.$name.'</b></p>

<p>メール:<b>'.$email.'</b></p>

';

} else {

echo'

<h2>以下の項目を入力してください。</h2>

<form action="test_POST.php" method="POST">

<p>名前:<input type="text" value="" name="name" /></p>

<p>メールアドレス:<input type="text" value="" name="email" /></p>

<p><input type="submit" name="check_post" value="登録" />

</form>

';

}

?>

以上を改造してみてください。これでもダメな場合は他の方法を考えてみたいと思います。

参考になれば幸いです。

id:moks

すいません。tobeoscontinue様の回答により解決しました。素人の質問に丁寧な対応をして頂きありがとうございました。

2006/11/06 11:20:32
id:tobeoscontinue No.3

tobeoscontinue回答回数214ベストアンサー獲得回数542006/11/04 18:53:36ここでベストアンサー

ポイント100pt

KAGOYAインターネットを見てみるとPHPが使えるのは専用サーバプランだと思いますが、このPHPは4.3.11のようです。PHPはバージョンによって動作が違ってくるのでバージョンの違いによるものかもしれません。


単純なものはregister_globals=Offです。PHP-4.2.0以前はOnだったようでこれに依存したコードを書いていた場合は動かないでしょう。受け取りが$_POST["名前"]のようになっていればこれでは無いです。


気になる点はenctype="multipart/form-data"です。これはファイルアップロード時などに使われるようです。しかし

>テキストボックス等で

とあるのでこの辺かなぁと思います。http://www.php.net/manual/ja/ref.mbstring.php]のHTTP 入出力で

    注意:  PHP 4.3.2 およびそれ以前のバージョンの場合、 
           HTML フォームのenctype が multipart/form-data に設定された場合、
           mbstring は、POST データの文字エンコーディングを変換しません。 
          この場合、文字列を内部文字エンコーディングに変換してやる必要があります。 

    注意: PHP 4.3.3 以降、HTML フォームの enctype が multipart/form-data に設定され、
          かつ、 php.ini において mbstring.encoding_translation に On が指定されている場合、
          POST データの変数とアップロードされたファイルの名前の文字エンコーディングは、 
          内部文字エンコーディングに変換されます。

注意にあるようにPHP-4.3.11ではmultipart/form-data に設定された場合、POST データの文字エンコーディングを変換しないということが原因ではないでしょうか。

id:moks

回答ありがとうございます。register_globals=Onにて解決しました。丁寧な解説参考になりました。

2006/11/06 11:21:04
  • id:tobeoscontinue
    register_globals=Onはセキュリティ的に危険です。
    register_globals=Offで動作するよう修正することをお勧めします。

    いるかちゃんをありがとうございます。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません