私は$ wpdbを使用していますが、以下は$ wpdb-> updateを呼び出すコードの一部です。Wordpress WPDBとMysqlの変な動作
このコードは通常の[email protected]の場合でもうまく動作しますが、ユーザーが自分のユーザー名に+記号を使用するとしたらどうでしょうか? email [email protected]、wpdbは+記号を読み取らない
以下の変数は$ _GETの値ですが、わかりやすくするために値を入れています。 $ wpdb-> last_queryと$ wpdb-の
$open_email = '[email protected]';
$open_key = '2f1e4b16a9a882bbef9b00906fc5c8f563fd70a5';
$open_time = time();
if (strlen($open_key) == 40) {
$status_update = $wpdb->update('status',
array(
'invite_status' => 'opened',
'open_time' => $open_time
),
array(
'invite_email' => $open_email,
'invite_token' => $open_key
),
array(
'%s',
'%d'
),
array(
'%s',
'%s'
)
);
}
のvarダンプ>以下を返しLAST_ERROR。
文字列(235) "UPDATE status
SET invite_status
は= '開かれた'、invite_email
= open_time
= 1461103507 '何か[email protected]' AND rating_invite_token
= '2f1e4b16a9a882bbef9b00906fc5c8f563fd70a5'" 私は一部の上に気づく
太字ので強調表示されていますが、マイナス記号(+)が消えてスペースが残っているため、上記の文が更新されません。
私には何も分からないことが分かりますか?
更新:Gmailの一部のユーザーがどの任意の消毒がある場合[email protected]はまだ戻って[email protected]
に行くように+、彼らの電子メールを分類するために署名を使用しないので、私は求めています私はしなければならないが、私は逃して、私もガイドしてください。私はすべての$ _GETデータが消毒されていたはずだと思います。
ああ、あなたは上のスポットです!私はこれが共通の問題であり、str_replace( ''、 '+'、$ open_email)と仮定してもよいでしょう。電子メール文字列でGETした後に行う一般的な手順ですか? –
はい、いいえ、実際に '+'をプラスにしたい場合、URLはソースから適切に16進数でエンコードされている必要があります。 'http://example.com?email = something%2bADDITION%40gmail.com&open_key = xxx' URLの' + 'はスペースの特殊なエンコーディングです。実際に' + 'を表現したい場合は、 '%2b' – drew010