Ich benutze $ wpdb und das folgende ist Teil der Codes, die $ wpdb-> update aufruft.Wordpress WPDB und mysql seltsames Verhalten
Dieser Code funktioniert gut, wenn es normal ist [email protected], aber wenn Benutzer das + Zeichen in ihrem Benutzernamen, z. [email protected]@domain.com, wpdb liest nicht das + Zeichen
Unten sind Variablen von $ _GET, aber ich gebe Werte für die Lesbarkeit.
$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 Dump von $ wpdb-> last_query und $ wpdb-> LAST_ERROR die folgenden zurück.
string (235) "UPDATE status
SET invite_status
= 'geöffnet', open_time
= 1461103507 WHERE invite_email
= 'etwas [email protected] UND rating_invite_token
= '2f1e4b16a9a882bbef9b00906fc5c8f563fd70a5'"
ich oben Teil bemerken in Fehler, in fett markiert, dass mein Pluszeichen (+) ist weg und es ließ ein Leerzeichen, wodurch die obige Anweisung nicht zu aktualisieren.
Darf ich wissen, ob ich etwas verpasse?
Update: ich frage, weil einige Benutzer von Gmails die + nicht verwendet signieren ihre E-Mails zu kategorisieren, wie [email protected] noch zurück zu [email protected]
gehtWenn eine Hygienisierung gibt es die Ich soll es tun, aber ich verpasse es, bitte führe mich auch. Ich nehme an, dass alle $ _GET-Daten sollten bereinigt worden sein.
Oh ja, Sie sind vor Ort! Darf ich annehmen, dass dies ein häufiges Problem ist und str_replace ('', '+', $ open_email); ist ein allgemeiner Schritt nach einem GET mit E-Mail-String zu tun? –
Ja und nein, wenn Sie wirklich möchten, dass das '+' ein Plus ist, sollte die URL von der Quelle, z.B. "http: //example.com? email = etwas% 2bADDITION% 40gmail.com & open_key = xxx' Ein' + 'in einer URL ist eine spezielle Kodierung für ein Leerzeichen, wenn Sie eigentlich ein' + 'darstellen wollen, hexen Sie es als kodieren '% 2b' – drew010