За последние 24 часа нас посетили 19204 программиста и 1643 робота. Сейчас ищут 915 программистов ...

ERR_TOO_MANY_REDIRECTS Как это исправить?

Тема в разделе "PHP для новичков", создана пользователем sega174, 19 окт 2018.

Метки:
  1. sega174

    sega174 Новичок

    С нами с:
    22 ноя 2015
    Сообщения:
    12
    Симпатии:
    0
    ЗДРАВСТВУЙТЕ, при выполнение кода происходит ошибка Сайт выполнил переадресацию слишком много раз. Удалите файлы cookie. ERR_TOO_MANY_REDIRECTS Как это исправить?
    файл profile.php

    PHP:
    1. <?php
    2. /*
    3. * Template name: Шаблон профиля пользователя
    4. */
    5. global $user_ID;
    6. // если пользователь не авторизован, отправляем его на страницу входа
    7. if( !$user_ID ) {
    8.     header('location:' . site_url() . '/wp-login.php');
    9.     exit;
    10. } else {
    11.     $userdata = get_user_by( 'id', $user_ID );
    12. }
    13.  
    14. ?><html>
    15. <body>
    16. <?php
    17. // после сохранения профиля и смены пароля понадобятся уведомления
    18. // если уведомлений больше двух, то оптимальнее их будет вывести через switch
    19.  
    20.  
    21.  
    22.  
    23. if( isset( $_GET['status']) ) :
    24.     switch( $_GET['status'] ) :
    25.         case 'ok':{
    26.              echo "<script>alert(\"Вы вошли на сайт, как гость.\");</script>";
    27.             break;
    28.         }
    29.         case 'exist':{
    30.             echo '<div class="error">Пользователь с указанным email уже существует.</div>';
    31.             break;
    32.         }
    33.         case 'short':{
    34.             echo '<div class="error">Пароль слишком короткий.</div>';
    35.             break;
    36.         }
    37.         case 'mismatch':{
    38.             echo '<div class="error">Пароли не совпадают.</div>';
    39.             break;
    40.         }
    41.         case 'wrong':{
    42.             echo '<div class="error">Старый пароль неверен.</div>';
    43.             break;
    44.         }
    45.         case 'required':{
    46.             echo '<div class="error">Пожалуйста, заполните все обязательные поля.</div>';
    47.             break;
    48.         }
    49.     endswitch;
    50. endif;
    51. // profile-update.php - это файл, который находится в папке с темой и обрабатывает сохранение, его содержимое будет в следующем шаге
    52. ?>
    53. <form action="profile-update.php" method="POST">
    54.     <input type="text" name="first_name" placeholder="Имя" value="<?php echo $userdata->first_name ?>" />
    55.     <input type="text" name="last_name" placeholder="Фамилия" value="<?php echo $userdata->last_name ?>" />
    56.     <input type="text" name="city" placeholder="Город" value="<?php echo get_user_meta($user_ID, 'city', true ) ?>" />
    57.     <input type="email" name="email" placeholder="Email" value="<?php echo $userdata->user_email ?>" />
    58.     <input type="password" name="pwd1" placeholder="Старый пароль" />
    59.     <input type="password" name="pwd2" placeholder="Новый пароль" />
    60.     <input type="password" name="pwd3" placeholder="Повторите новый пароль" />
    61.     <button>Сохранить</button>
    62. </form>
    63. </body>
    64. </html>
    файл profile_update.php
    PHP:
    1. <?php
    2. // $_SERVER['HTTP_REFERER'] - полный URL страницы, откуда пришел пользователь
    3. // $url[0] - без GET параметров
    4. // это нам понадобится для правильных редиректов
    5. $url = explode("?",$_SERVER['HTTP_REFERER']);
    6. // подключаем WordPress
    7. // тут указан правильный путь, если profile-update.php находится непосредственно в папке с темой
    8. require_once( '/var/www/alumnus//wp-load.php' );
    9. // если не авторизован, просто выходим из файла
    10. if( !is_user_logged_in() ) exit;
    11. // получаем объект пользователя с необходимыми данными
    12. $user_ID = get_current_user_id();
    13. $user = get_user_by( 'id', $user_ID );
    14. // сначала обработаем пароли, ведь если при сохранении пользователь ничего не указал ни в одном поле пароля, то пропускаем эту часть
    15. if( $_POST['pwd1'] || $_POST['pwd2'] || $_POST['pwd3'] ) {
    16.     // при этом пользователь должен заполнить все поля
    17.     if( $_POST['pwd1'] && $_POST['pwd2'] && $_POST['pwd3'] ) {
    18.         // сначала проверяем соответствие нового пароля и его подтверждения
    19.         if( $_POST['pwd2'] == $_POST['pwd3'] ){
    20.             // пароль из двух символов нам не нужен, минимум 8
    21.             if( strlen( $_POST['pwd2'] ) < 8 ) {
    22.                 // если слишком короткий - перенаправляем
    23.                 header('location:' . $url[0] . '?status=short');
    24.                 exit;
    25.             }
    26.             // и самое главное - проверяем, правильно ли указан старый пароль
    27.             if( wp_check_password( $_POST['pwd1'], $user->data->user_pass, $user->ID) ) {
    28.                 // если да, меняем на новый и заново авторизуем пользователя
    29.                 wp_set_password( $_POST['pwd2'], $user_ID );
    30.                 $creds['user_login'] = $user->user_login;
    31.                 $creds['user_password'] = $_POST['pwd2'];
    32.                 $creds['remember'] = true;
    33.                 $user = wp_signon( $creds, false );
    34.             } else {
    35.                 // если нет, перенаправляем на ошибку
    36.                 header('location:' . $url[0] . '?status=wrong');
    37.                 exit;
    38.             }
    39.         } else {
    40.             // новый пароль и его подтверждение не соответствуют друг другу
    41.             header('location:' . $url[0] . '?status=mismatch');
    42.             exit;
    43.         }
    44.     } else {
    45.         // не все поля заполнены - перенеправляем
    46.         header('location:' . $url[0] . '?status=required');
    47.         exit;
    48.     }
    49. }
    50. // допустим, что Имя, Фамилия и Емайл - обязательные поля, Город - не обязательное
    51. if( $_POST['first_name'] && $_POST['last_name'] && is_email($_POST['email']) ) {
    52.     // если пользователь указал новый емайл, а кто-то уже под ним зареган - отправляем на ошибку
    53.     if( email_exists( $_POST['email'] ) && $_POST['email'] != $user->user_email ) {
    54.         header('location:' . $url[0] . '?status=exist');
    55.         exit;
    56.     }
    57.     // обновляем данные пользователя
    58.     wp_update_user( array(
    59.             'ID' => $user_ID,
    60.             'user_email' => $_POST['email'],
    61.             'first_name' => $_POST['first_name'],
    62.             'last_name' => $_POST['last_name'],
    63.             'display_name' => $_POST['first_name'] . ' ' . $_POST['last_name'] ));
    64.     // ну и город не забываем обновить
    65.    
    66. } else {
    67.     // не все поля заполнены - перенеправляем
    68.     header('location:' . $url[0] . '?status=required');
    69.     exit;
    70. }
    71. // если выполнение кода дошло до сюда, то следовательно всё ок
    72. header('location:' . $url[0] . '?status=ok');
    Подскажите как исправить...Спасибо!
     
  2. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Кода много, теоретически один и тот же файл перенаправляет на себя же.. в итоге бесконечный цикл.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Была такая фигня после переноса ВП на другой *домен*. Лечится внимательным изучением конфига - он должен соответствовать реальному местоположению сайта, удалением файлов в кеше и применением wp-cli для исправления ссылок везде.
    --- Добавлено ---
    P.s. начни с конфига, лол