ここから本文です

SSL環境下でのPOST通信の問題で悩んでいます。

nek********さん

2016/9/601:26:48

SSL環境下でのPOST通信の問題で悩んでいます。

仕事でzendframework2(以下zf2)を使ったサイトを構築することになり、MVC初心者ながらもなんとか順調に作成できていたのですが、どうしても解決できない問題に頭を抱えています。SSL環境下で、formからPOSTデータを送信しているのですが、受信先からPOSTデータを確認しても中身が空で、index.phpの頭にvar_dump()で$_REQUESTやfile_get_contents("php://input")をおいて、POSTデータを送信後確認しても空になっているといった状態です。

ローカルサーバーで大まかに作成していたときはSSL環境でなかったためこの問題に気が付くのが遅くなってしまいました。海外サイトなど調べたらSSL関係のリダイレクトが原因ということでいろいろ試したところ


<form action="https://ドメイン名/controller/action" method="post" enctype="multipart/form-data">


<form action="https://ドメイン名/controller/action/" method="post" enctype="multipart/form-data">

POST通信成功
<form action="https://ドメイン名/indexA.php" method="post" enctype="multipart/form-data">

みたいな結果になりました。indexA.phpはzf2の影響に関係なく$_POSTを見るため適当に作ったファイルです。存在するファイルだとPOSTデータを受け取れるのが確認できたのですが、zf2の基本がドメイン名/controller/action/みたいな形なのでどうしたらいいの?といった感じです。送るデータを見られたくないということでGET通信などは難しそうです。

現在は、とりあえず上のindexA.phpをもちいたパターンでなんとかできないかと悩んだ結果、サブミットの前にJQUERYの$.post()で

https://ドメイン名/indexA.php

にPOSTデータを送ってSESSIONにPOSTデータを入れてからformのactionに

https://ドメイン名/controller/action

をいれてサブミットさせて、その先で先に入れたSESSIONデータを参照させるといった感じでなんとか処理を進めています。

ただこのままサイト構築していくとこの問題が原因でいつか詰みそうな気がして正直焦っています。

修正作業が大変になる前になんとかこの問題を解決したいのですが何か原因解決のカギになりそうな情報はありませんか?

サーバーの設定、htaccessの設定など何でも構わないのでぜひ助言お願いします。よろしくお願いします。

補足補足です。

運よく別のSSL環境を用意できたので試したところ、普通にPOST通信できて普通に動いたことに感度するくらい心が折れかかっていました。

うまく動かない環境ではパーミッション775でもプログラム内でfopenを使ったファイルの新規作成もできない感じでした。/var/www/htmlのパーミッションは754でした。環境についての知識はそこまであるわけではないのでこの情報でどうしてPOST送信ができないのか…解決の糸口になる情報いただけると嬉しいです。

いろいろ調べたところ$_REQUESTに入るデータすべてが空になっていて、今SESSIONで云々な方法はどうしても必要な部分以外は避けてGET送信にして$_SERVER['QUERY_STRING']か$_SERVER['REDIRECT_QUERY_STRING'](zf2が用意したもの?)からなんとか情報を渡しています。

ブラウザのアドレスバーにクエリが乗らないように同じページにリダイレクトさせていたりと何とも言えない構造になってしまっています。

閲覧数:
381
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

sel********さん

2016/9/913:08:34

情報が断片的ですので憶測しか言えませんが

> 空> <form action="https://ドメイン名/controller/action/" method="post" enctype="multipart/form-data">>
⇒index.phpにわたっているけど、データがない。

> POST通信成功> <form action="https://ドメイン名/indexA.php" method="post" enctype="multipart/form-data">
⇒RewriteRuleしなければPOST通信に問題はない。

https://ドメイン名/controller/action/」は/index.phpに渡ると思いますが、/index.phpへ渡す際のRewriteRule以外の方法なっているということはないでしょうか。

例えば、Webサーバーで404 notfoundの際にindex.phpに渡す設定としているなど。

あまり参考になるかはわかりませんが、解決されることをお祈りしております。

  • 質問者

    nek********さん

    2016/9/915:04:06

    情報ありがとうございます!

    なんと問題解決しました!

    解決についてですが、/var/www/htmlのパーミッションは754のところを755にしてもらったところフォームからのデータを受け取れるようになりました!

    権限の設定が原因のようでした。プログラムの方ばかりやっていたのでこういう問題は原因がさっぽりでかなり精神的にきつかったです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる