web-dev-qa-db-ja.com

404 Not Foundを引き起こすWordpressのGETパラメータ

暗号化された$ _GETパラメータを使用してデータを取得しているときに、ワードプレスのページに問題があります。これは私の機能です:

function encryptDecrypt($key, $string, $decrypt)
{
    if($decrypt)
    {
        $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "6");
        return $decrypted;
    }else{
        $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
        return $encrypted;
    }
}

登録ユーザーのメールを暗号化し、$ _GETパラメータを使用して自分のデータを取得するために使用しています。問題は、私が通常の電子メールアドレスを使用する場合(暗号化されていないので、それはまったく役に立たず危険です)、$ _GETリクエストが機能することです。私が暗号化されたEメールを使うならば、私は404エラーを得るだけです。

これが私がこれまでに試したことです。

$m=urlencode(encryptDecrypt('mail',$mail,false));    
$msg.="<br><a href='siteurl/pageurl/?m=".$m."'>Click here</a>";

データ送信用のURLで使用される暗号化メールの例

VOvk4Wh%2FpMzm21lQNrFnvBcwRWLw6ZVPOMe0VCi2t3g%3D

そして、 "検索"ページでは:

urldecode($_GET['m']);

データを取得するためにURLで使用される暗号化メールの例:

VOvk4Wh/pMzm21lQNrFnvBcwRWLw6ZVPOMe0VCi2t3g=

私はそのリンクで "受信"ページを開くと私は404エラーが出ます

_更新_ +

私はこの問題を解決しました。これは、ワードプレスのデフォルトの分類法である$ _GETパラメータとしての 'm'でした。 :)

4
CapitanFindus

OPが発見したように、mは予約されたパラメータ名で、coreのみが使用します(月を示します)。解決策は、他のパラメータ名を使用することです(常にすべてのグローバルコンテキストで独自のプレフィックスを使用してください)。

3
Mark Kaplun

最初に;まだしていなければ、wp_debug関数をオンにします。 (wp_config.php)これにより、追加のエラーデータが得られます。第二に。 urldecode を使用しているが、文字列はエンコードされていないようです。メールアドレスを含める場合は、 urlencode あなたのデータも忘れずに。

0
john23klipp