#php #wordpress
#php #wordpress
Вопрос:
У меня есть плагин WordPress, мне нужно разрешить пользователям регистрироваться, не предупреждая их о том, что некоторые «пароли» не разрешены. В моем цикле foreach мне нужно проверить 1 пароль, если он использовался, если его не было, я проверю подлинность пользователя.
Это мой текущий код, первый цикл, он проверит учетные данные пользователя, если они были неверными, он покажет сообщение erorr, если оно правильное, оно направит его на его CP:
if (isset($_POST["username"])) {
$creds = array();
$creds['user_login'] = $_POST["username"];
$creds['user_password'] = $user_pass;
if (isset($_POST["remember"]))
$creds['remember'] = true;
else
{
$user = wp_signon($creds, false);
if (is_wp_error($user))
echo $user->get_error_message();
else
wp_redirect(admin_url());
}
}
Но что мне нужно, так это сначала проверить учетные данные пользователя, если они были правильными, мне нужно направить его на его CP, если не правильно, мне нужно передать текущий цикл для следующей проверки, потому что мне нужно добавить свой оператор if для проверки пользователя в каждом цикле, если он использовал определенныйслова паролей, такие как «passw0rd».
любой совет?
Комментарии:
1. Какой цикл? Мне непонятно, что вы пытаетесь описать. Этот код не имеет для меня особого смысла. Если
isset($_POST["remember"])
значение false, почему вы сразу же проверяете то же самое снова вelse
блоке? Это все равно будет false.2. извините за это, я удалил его. Я не показывал цикл, потому что моя проблема связана только с этой частью кода. Сначала мне нужно проверить учетные данные пользователя, если они были правильными, если нет, мне нужно перейти к следующему циклу.
3. Вы просто ищете
wp_check_password()
функцию? codex.wordpress.org/Function_Reference/wp_check_password4. Нет, на самом деле $user = wp_signon($creds, false) меня устраивает, но сначала мне нужно направить пользователя к его CP, если не исправить cred, мне нужно двигаться вперед.
Ответ №1:
$user = wp_signon($creds, false);
if (is_wp_error($user))
echo $user->get_error_message();
else
wp_redirect(admin_url());
Это та часть кода, которая вас должна заинтересовать в utalization. Как вы указываете в своем вопросе, вы хотите что-то сделать после того, как пользователь не смог войти в систему.
Если вы отредактируете это на что-то вроде:
function nextCheck($userData){
echo $userData['user_login'].' '.$userData['user_password'];
}
$user = wp_signon($creds, false);
if (is_wp_error($user)){
nextCheck($creds);
echo $user->get_error_message();
}
else
wp_redirect(admin_url());
Вы сможете продолжить выполнение своей следующей задачи.
Комментарии:
1. спасибо, мой друг,
wp_redirect(admin_url());
сначала мне нужно, чтобы учетные данные пользователя были правильными, затем мне нужно двигаться вперед, если учетные данные неверны. мой и ваш код перенаправляют пользователя на последний шаг!2. Эта строка
if (is_wp_error($user))
проверяет данные входа пользователей. Если это верно (что пользователь не смог войти в систему), он выполняет код в скобках. Если учетные данные неверны, вы всегда сможете узнать об этом в этом блоке.