Ответы в темах

Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Только стоит помнить, что не всех хотят это использовать. Не отпугните пользователей.

    Да, как дополнительный вариант на выбор, с галочкой в форме входа или в настройках профиля 🙂

    Благодарю всех!
    Попробую делать двух факторную авторизацию или использовать соответствующие плагины.

    • Ответ изменён 7 лет, 3 месяца назад пользователем avense.

    всего то надо сравнить хэши этого типа —> wp_hash_password(). Это вообще возможно?

    Нет. Если бы для входа было достаточно только хеша — можно было бы с тем же успехом хранить в базе пароли в открытом виде: злоумышленник, получивший дамп базы, мог бы моментально авторизоваться на сайте, не подбирая пароль.

    Ну если сравнить не возможно, тогда не получится сделать задуманное.
    Пускай даже WordPress хранит пароли в md5 далее в хэше методом wp_hash_password, но ведь передается пароль при авторизации в открытом виде, что не есть надежно, разве что если использовать соединение по протоколу SSL.

    Мне нужно что бы авторизация была все же WordPress-совская, всего то надо сравнить хэши этого типа —> wp_hash_password()
    Это вообще возможно?
    Как то же сравнивает функция wp_check_password() простой пароль…
    Смотрел её в wp-includes, но не разобрался.

    Я понимаю что сравнить хэши паролей в md5 просто:

    $pass_client = md5("пароль");
    $pass_server = md5("пароль");
    if( $pass_client == $pass_server ) echo "OK";

    А вот вопрос в том как сравнить эти хэши паролей:

    $pass_client = wp_hash_password( "111" ); // Результат: $P$BoCWftwFtN8sUMkmZNJvUO5kLmMOMb0
    $pass_server = wp_hash_password( "111" ); // Результат: $P$BZiVqS35VVNvGlF5xHD561ShKKxWvH1
    if( my_func( $pass_client, $pass_server ) ) echo "OK";

    Так как хэши пароля каждый раз уникальные в отличии от хэша md5 и тому подобных.

    • Ответ изменён 7 лет, 3 месяца назад пользователем avense.

    Задержка в том что я не знаю можно ли и как именно сравнить эти два хэша паролей..?

    if ( wp_check_password( "input_text_password", $server_hash_password ) )
    а надо что то типа
    if ( wp_check_password( $client_hash_password, $server_hash_password ) )

    К примеру:

    echo wp_hash_password( "111" ); // Результат: $P$BoCWftwFtN8sUMkmZNJvUO5kLmMOMb0
    echo "<br>";
    echo wp_hash_password( "111" ); // Результат: $P$BZiVqS35VVNvGlF5xHD561ShKKxWvH1

    Как теперь сравнить что эти два хэша один и тот же пароль «111» ?

    Результат: $P$BoCWftwFtN8sUMkmZNJvUO5kLmMOMb0
    Результат: $P$BZiVqS35VVNvGlF5xHD561ShKKxWvH1

    Sergey Biryukov, благодарю, данный пример работает!

    Скажите, а как часто данный action будет запускать функцию disable_publish_button()?
    Каждый раз при открытии какой то страницы в админке?

    Может не донес..
    — возьмите сам виджет
    — уберите не нужное (код открытый)
    — добавьте\уберите что нужно = свой сделайте

    Да при чем здесь взять код виджета самому, отредактировать и поместить куда то?
    Мне нужно автоматически получать содержимое виджета для вывода например контактов в header. В смысле что бы не вставлять контакты в код шаблона в файле header.php а что бы можно было редактировать их в виджете и они бы выводились в header в нужное место шаблона где будет функция получения содержимого заданного виджета.

    При необходимости буду пользоваться темы решениями, что я привел по ссылкам выше.

    Хорошо, пока буду использовать это решение или этот плагин.
    Удобно же выводить нужный виджет в определенном месте шаблона или страницы. Например для вывода контактов или соц.сетей в хедере или футере.
    Можно и другими путями, но все же данное решение пригодится.

    >> написал в отзывах
    де? на сайте производителя?

    здесь, но там только методом: get_option(‘widget_text’);

    Я там уже написал в отзывах как можно сделать с помощью get_option(‘widget_text’); для других плагинов.

    Хотелось бы знать какие еще есть способы.
    Например с помощью класса $wpdb, можно получить содержимое всех виджетов, но не разобрался как получить нужный:

    global $wpdb;
    $widgets = $wpdb->get_var(«SELECT option_value FROM wp_options WHERE option_name = ‘widget_text'»);
    echo $widgets;

    еще есть мм.. не помню как называются — тут страниц 10-20 отмотай назад — там и как вставить и как считать — если савсем плохо будет — пиши в личку.

    не нашел.

    А вот нашел хороший маленький плагин, который может выводить существующие виджеты по шорткоду:
    https://ru.wordpress.org/plugins/widget-shortcode/
    Надо посмотреть как он получает содержимое виджетов.

    ОК!
    Благодарю за помощь!

    Добавил следующий код в файл image.php

    <?php
    if ( is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent != 0) ) {
    	wp_redirect(get_permalink($post->post_parent), 301); // permanent redirect to post/page where image or document was uploaded
    	exit;
    } elseif ( is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent < 1) ) {   // for some reason it doesnt works checking for 0, so checking lower than 1 instead...
    	wp_redirect(get_bloginfo('wpurl'), 302); // temp redirect to home for image or document not associated to any post/page
    	exit;
    }
    ?>

    Теперь переадресовывает тот и тот вид страниц, без использования плагина.

    Вопрос, надо ли этом случае во втором условии использовать 302 переадресацию, а не постоянную 301 ?
    Для поисковой индексации это правильно будет во втором условии 302 переадресация?

    Попробуйте переименовать image.php в attachment.php

    Переименовывал результат тот же.

    Удалил файлы image.php в attachment.php и поставил плагин.

    Теперь переадресовывает тот и тот вид страниц отлично!

    А можно как то по аналогии кода из плагина Attachment Pages Redirect, сделать что бы добавить код в файл image.php и иметь такой же результат без необходимости использовать плагин?

    Вот код из плагина:

    <?php
    	function sar_attachment_redirect() {
    		global $post;
    		if ( is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent != 0) ) {
    			wp_redirect(get_permalink($post->post_parent), 301); // permanent redirect to post/page where image or document was uploaded
    			exit;
    		} elseif ( is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent < 1) ) {   // for some reason it doesnt works checking for 0, so checking lower than 1 instead...
    			wp_redirect(get_bloginfo('wpurl'), 302); // temp redirect to home for image or document not associated to any post/page
    			exit;
        }
    	}
    
    add_action('template_redirect', 'sar_attachment_redirect',1);
    
    ?>

    В теме не было указанных файлов: image.php или attachment.php

    Я создал файл: image.php и поместил туда:
    <?php wp_redirect(get_permalink($post->post_parent)); ?>

    Страницы о которых я писал в самом верхнем посте начали переадресовываться как Вы и писали, а вот страницы вида /?attachment_id=657 при открытии висят, а точнее браузер пишет: «Отправка запроса на…», потом «Подключение к удаленному узлу….», потом эти запросы поочередно повторяются долго, потом браузер хром выдает на этой странице обнаружена цыклическая переадресация. Пример ссылки с attachment_id

    Убираю файл image.php и страницы вида /?attachment_id=657 открываются нормально, хоть они и не нужны в индексе, но их можно закрыть по шаблону в robots.txt

    Но вот эта циклическая переадресация с этим типом страниц при открытии, как то настораживает.

    Что можно предпринять в данном случае?

Просмотр 15 ответов — с 1 по 15 (всего 17)