暗号化された$ _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'でした。 :)
OPが発見したように、m
は予約されたパラメータ名で、coreのみが使用します(月を示します)。解決策は、他のパラメータ名を使用することです(常にすべてのグローバルコンテキストで独自のプレフィックスを使用してください)。
最初に;まだしていなければ、wp_debug関数をオンにします。 (wp_config.php)これにより、追加のエラーデータが得られます。第二に。 urldecode を使用しているが、文字列はエンコードされていないようです。メールアドレスを含める場合は、 urlencode あなたのデータも忘れずに。