7

セージペイをワードプレスサイトに統合しました。現在、sagepay をシミュレーターモードで実行しています。

支払いが成功すると、sagepay は私のサイトの成功ページにリダイレクトされます。リダイレクトURLはこんな感じ。

mysite.com/?page_id=632&crypt=@7564ASKJjkkjh....encrypted string.

$_REQUEST または $_GET で成功ページのクエリ文字列パラメーターを取得しようとすると、page_id しか取得できません。

しかし、「crypt」パラメーターを取得できません。

var_dump($_REQUEST) も試しました。また、page_id のみを提供し、crypt パラメータは提供しません。

クエリ文字列から「crypt」パラメーターを取得したくありません。

注: localhost で適切に動作しています。両方のパラメーターを取得しました。しかし、サイトをライブ サーバーにアップロードすると、page_id のみを取得できますが、'crypt' パラメータは取得できません。

何か案は?

更新: Sage Pay によって与えられたクエリ文字列は次のようになります。

mysite.com/?page_id=632&crypt=@

しかし、ローカルホストでは問題なく動作します

4

2 に答える 2

4

答え

Suhosin Security Patch を実行しているようです。このパッチは、$_GETパラメーターを最大 512 バイトに制限します。

これを回避するには、に値を追加する必要がありますphp.ini

suhosin.get.max_value_length = LIMIT_HERE

参照

ソース: http://www.php.net/manual/en/reserved.variables.get.php#101469

suhosin パッチがインストールされた PHP セットアップでは、get パラメータのデフォルトの制限が 512 文字であることに注意してください。悪い習慣ですが、ほとんどのブラウザー (IE を含む) は最大約 2000 文字の URL をサポートしていますが、Apache のデフォルトは 8000 文字です。

suhosin で長いパラメーターのサポートを追加するに suhosin.get.max_value_length = <limit>は、php.ini を追加します。

更新 1

にアクセスできないためphp.ini、ファイルの値を変更する必要があり.htacessます (Apache を使用している場合)。または、組み込みの PHP 関数を使用して変更できる場合もありますini_set()

.htacess メソッド:

php_value suhosin.get.max_value_length 8000

ini_set メソッド:

ini_set('suhosin.get.max_value_length', '8000');

ただし、PHP インストールでは、ディレクトリごとに Suhosin 変数を変更できない可能性があります (確実ではありません) 。これを修正するには、これを に配置するようにリクエストする必要がありますphp.ini。そうしないと、何もできません。

suhosin.perdir = "p"
于 2012-11-14T10:05:11.487 に答える
3

あなたの実稼働環境では、$_REQUEST の php.ini でフィルターが構成されていると思います。php.ini のフィルター セクションを確認してください。詳細: http://www.php.net/manual/en/filter.configuration.php

実稼働環境でこの構成を変更したくない場合は、filter_input を使用して値にアクセスできます。詳細: http://www.php.net/manual/en/function.filter-input.php

于 2012-11-14T08:51:58.210 に答える