Я сделал функцию, которая генерирует случайную строку 21 di git, используя wp_generate_password()
, хэширует ее, используя wp_hash()
, сохраняет сгенерированную строку в базу данных и return
s хэшированную строку. Работает отлично. Тем не менее, я хочу сделать другой путь, вместо сохранения сгенерированной случайной строки в базу данных, я хочу сохранить хешированную строку и return
случайную строку.
Но это не работает. Когда я пытаюсь сохранить хешированную строку в базе данных, она просто не создает никакой записи. Прекрасно работает, если я хочу сохранить случайную строку.
Я пытался санировать хешированную строку, применил strval()
, применил $wpdb->insert
с format
, где я объявил ее как строку. Ничего не работает! Я даже пытался увеличить ресурсы сервера до 4 ГБ оперативной памяти, процессоры 2Vcore. Увеличено ограничение ресурса php .ini до 3 ГБ. Ничего не работает.
Вот функция, которая отлично работает. Однако в этой функции я хочу заменить 'verification_code'=>$email_verification
на 'verification_code'=>$email_verification_hashed
, и это не работает. Я хочу, чтобы это работало, поэтому хэшированная строка отправляется в базу данных, а случайная строка возвращается.
function generate_verification($user_id) {
$user_info = get_userdata($user_id);
$email_verification = wp_generate_password( 21, true, true );
$email_verification_hashed = wp_hash( $email_verification );
if (isset($user_info)) {
global $wpdb;
$table_name = $wpdb->base_prefix.'custom_table'; //already exist
$user_email = $user_info->user_email;
$data = array('email'=>$user_email, 'verification_code'=>$email_verification, 'user_id'=>$user_id);
$where = array('user_id'=>$user_id);
$existing_data = "SELECT * FROM {$wpdb->prefix}custom_table WHERE user_id = {$user_id}";
$existing_data_results = $wpdb->get_results($query);
if($existing_data_results > 0) {
$wpdb->update( $table_name, $data, $where);
return $email_verification_hashed;
} else {
$wpdb->insert( $table_name, $data);
return $email_verification_hashed;
}
} else {
return 'Failed';
}
}