アプリケーションのキャッチされていない例外ログ ( js -> php -> vb6 dll ) を検索すると、奇妙なエラーに気付きました:
file: /displaywords_GET.php?GreekWord=%E1%ED%E8%F1%F9%F0%EF%EC%DE%ED%E1%F2&selectedRes=1 # <b>Source:</b> mydll<br/><b>Description:</b> Invalid procedure call or argument # Variables:
# Array
(
[GreekWord] => ανθρωπομήνας
[selectedRes] => 1
)
そのため、指定されたパラメーターに対して .dll の例外が発生します。アプリで特定の単語を入力してテストしましたが、エラーは発生しませんでした。次に、エンコードされた URL をアドレスバーに直接入力してテストしたところ、エラーが再現されました。エンコーディングに何か問題があるかどうかを確認するために、javascriptで行いました
encodeURIcomponent("ανθρωπομήνας")
結果は次のとおりです。
%CE%B1%CE%BD%CE%B8%CF%81%CF%89%CF%80%CE%BF%CE%BC%CE%AE%CE%BD%CE%B1%CF%82
これは、上記の php ログの GET パラメータとは大きく異なります。次に、phpファイルに見られるように、url getパラメーターをデコードしようとしました:
decodeURIcomponent("%E1%ED%E8%F1%F9%F0%EF%EC%DE%ED%E1%F2")
そしてjavascriptは言う:不正な形式のURIシーケンス。なぜこうなった ?特定の URL パラメータの形式が適切ではなく不正であるため、明らかにアプリケーションがクラッシュします。
さて、私の問題は、エンコードされた文字列が適切なものか破損したものかをどのように確認できますか? ( javascript が不正な形式であると言っているのに、php がログでそれを正しくデコードしているように見える理由はわかりません)。
前もって感謝します!