3v4l.org

run code in 300+ PHP versions simultaneously
<?php add_shortcode( 'form_custom_login', 'form_render_login' ); function form_render_login() { // проверяем, если пользователь уже авторизован, то выводим соответствующее сообщение и ссылку "Выйти" if ( is_user_logged_in() ) { return sprintf( "Вы уже авторизованы на сайте. <a href='%s'>Выйти</a>.", wp_logout_url() ); } // присваиваем содержимое формы переменной и затем возвращаем её, выводить через echo() мы не можем, так как это шорткод $return = '<div class="login-form-container-page"><h2>Войти на сайт</h2>'; // если возникли какие-либо ошибки, отображаем их if ( isset( $_REQUEST['errno'] ) ) { $error_codes = explode( ',', $_REQUEST['errno'] ); foreach ( $error_codes as $error_code ) { switch ( $error_code ) { case 'empty_username': $return .= '<p class="errno">Вы не забыли указать свой email/имя пользователя?</p>'; break; case 'empty_password': $return .= '<p class="errno">Пожалуйста, введите пароль.</p>'; break; case 'invalid_username': $return .= '<p class="errno">На сайте не найдено указанного пользователя.</p>'; break; case 'incorrect_password': $return .= sprintf( "<p class='errno'>Неверный пароль. <a href='%s'>Забыли</a>?</p>", wp_lostpassword_url() ); break; case 'confirm': $return .= '<p class="errno success">Инструкции по сбросу пароля отправлены на ваш email.</p>'; break; case 'changed': $return .= '<p class="errno success">Пароль успешно изменён.</p>'; break; case 'expiredkey': case 'invalidkey': $return .= '<p class="errno">Недействительный ключ.</p>'; break; } } } // используем wp_login_form() для вывода формы (но можете сделать это и на чистом HTML) $args = array( 'echo' => false, 'redirect' => site_url($_SERVER['REQUEST_URI']), //перенаправление на ту же страницу 'form_id' => 'loginform', 'label_username' => __('Имя пользователя'), 'label_password' => __('Пароль'), 'label_remember' => __('Запомнить меня'), 'label_log_in' => __('Войти'), 'id_username' => 'user_login', 'id_password' => 'user_pass', 'id_remember' => 'rememberme', 'id_submit' => 'wp-submit', 'remember' => true, 'value_username' => NULL, 'value_remember' => true ); $form = str_replace('wp-login.php', 'wp-login.php?pass=1', wp_login_form($args)); $return .= $form; $return .= '<a class="forgot-password-page" href="' . wp_lostpassword_url() . '">Забыли пароль</a></div>'; // и наконец возвращаем всё, что получилось return $return; } /* * Редиректы обратно на кастомную форму входа в случае ошибки */ add_filter( 'authenticate', 'pageform_redirect_at_authenticate', 101, 3 ); function pageform_redirect_at_authenticate( $user, $username, $password ) { if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { if ( is_wp_error( $user ) ) { $error_codes = join( ',', $user->get_error_codes() ); $login_url = home_url( '/page-login/' ); $login_url = add_query_arg( 'errno', $error_codes, $login_url ); wp_redirect( $login_url ); exit; } } return $user; } /* * Редиректы после выхода с сайта */ add_action( 'wp_logout', 'pageform_logout_redirect', 5 ); function pageform_logout_redirect(){ wp_safe_redirect( site_url( '/page-login/?logged_out=true' ) ); exit; }

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0060.01218.56
8.3.50.0100.00317.94
8.3.40.0090.00618.77
8.3.30.0110.00418.84
8.3.20.0030.00522.26
8.3.10.0040.00422.04
8.3.00.0030.00522.45
8.2.180.0160.00016.60
8.2.170.0110.00722.96
8.2.160.0030.01020.28
8.2.150.0060.00324.18
8.2.140.0000.00724.66
8.2.130.0050.00326.16
8.2.120.0040.00420.66
8.2.110.0030.00620.55
8.2.100.0030.00917.72
8.2.90.0080.00017.74
8.2.80.0080.00017.97
8.2.70.0000.00817.80
8.2.60.0040.00418.02
8.2.50.0050.00518.10
8.2.40.0040.00419.34
8.2.30.0040.00419.26
8.2.20.0050.00318.02
8.2.10.0070.00019.49
8.2.00.0030.00519.18
8.1.280.0070.01425.92
8.1.270.0040.00423.85
8.1.260.0040.00426.35
8.1.250.0080.00028.09
8.1.240.0090.00024.00
8.1.230.0040.00719.21
8.1.220.0050.00317.74
8.1.210.0050.00320.45
8.1.200.0060.00317.35
8.1.190.0000.00817.00
8.1.180.0040.00418.10
8.1.170.0000.00818.57
8.1.160.0000.00718.70
8.1.150.0040.00418.75
8.1.140.0070.00020.32
8.1.130.0030.00320.16
8.1.120.0050.00617.39
8.1.110.0040.00417.31
8.1.100.0090.00017.29
8.1.90.0030.00617.42
8.1.80.0000.00817.43
8.1.70.0050.00217.45
8.1.60.0090.00017.41
8.1.50.0000.00717.52
8.1.40.0030.00617.48
8.1.30.0090.00017.66
8.1.20.0060.00317.66
8.1.10.0050.00317.54
8.1.00.0000.00817.50
8.0.300.0000.00819.64
8.0.290.0070.00416.62
8.0.280.0070.00018.45
8.0.270.0040.00416.87
8.0.260.0030.00320.01
8.0.250.0060.00017.01
8.0.240.0030.00316.91
8.0.230.0040.00416.93
8.0.220.0070.00016.98
8.0.210.0030.00316.92
8.0.200.0080.00016.93
8.0.190.0040.00417.06
8.0.180.0000.00816.96
8.0.170.0070.00317.02
8.0.160.0000.00816.91
8.0.150.0080.00016.98
8.0.140.0050.00316.88
8.0.130.0060.00013.37
8.0.120.0040.00416.79
8.0.110.0070.00316.93
8.0.100.0040.00416.79
8.0.90.0030.00616.79
8.0.80.0060.01317.00
8.0.70.0000.00716.77
8.0.60.0040.00416.84
8.0.50.0080.00017.02
8.0.30.0040.01317.17
8.0.20.0110.00917.14
8.0.10.0030.00517.09
8.0.00.0120.01216.87
7.4.330.0000.00515.55
7.4.320.0060.00016.31
7.4.300.0030.00316.37
7.4.290.0000.00716.61
7.4.280.0000.00816.58
7.4.270.0080.00016.66
7.4.260.0030.00313.29
7.4.250.0070.00016.50
7.4.240.0000.00716.62
7.4.230.0050.00216.63
7.4.220.0050.00216.46
7.4.210.0040.01116.61
7.4.200.0000.00716.71
7.4.130.0140.00316.62
7.4.120.0060.01216.41
7.4.110.0100.00716.60
7.4.100.0060.01216.55
7.4.90.0060.01216.43
7.4.80.0070.01119.39
7.4.70.0120.00616.50
7.4.60.0120.00316.63
7.4.50.0110.00316.41
7.4.40.0100.01016.50
7.3.330.0030.00316.22
7.3.320.0000.00513.21
7.3.310.0000.00716.39
7.3.300.0040.00416.30
7.3.290.0040.00416.26
7.3.260.0090.00816.45
7.3.240.0080.01316.57
7.3.230.0170.00716.60
7.3.210.0100.00716.35
7.3.200.0080.00816.46
7.3.190.0080.00816.56
7.3.180.0060.01316.58
7.3.170.0030.01216.35
7.3.160.0160.00716.43
7.3.100.0090.00614.61
7.3.90.0130.00314.36
7.3.80.0070.00714.68
7.3.70.0100.01014.79
7.3.60.0060.00914.52
7.3.50.0120.00514.67
7.3.40.0130.00514.45
7.3.30.0060.00914.69
7.3.20.0680.01114.85
7.3.10.0190.00814.85
7.3.00.0430.01014.52
7.2.330.0160.00616.54
7.2.320.0090.01016.72
7.2.310.0060.00916.58
7.2.300.0110.00816.66
7.2.290.0100.00716.66
7.2.220.0080.01114.76
7.2.210.0060.01114.86
7.2.200.0090.00615.02
7.2.190.0120.00614.71
7.2.180.0060.01014.89
7.2.170.0060.01614.68
7.2.160.0080.01114.51
7.2.150.1480.01414.90
7.2.140.0230.01414.66
7.2.130.1240.00614.72
7.2.120.0570.00914.36
7.2.110.0800.01114.82
7.2.100.0710.00714.94
7.2.90.0280.00814.75
7.2.80.0940.01214.67
7.2.70.0830.00914.88
7.2.60.1020.00714.87
7.2.50.0570.01214.81
7.2.40.0340.00614.94
7.2.30.1060.01214.79
7.2.20.1020.01214.56
7.2.10.1010.00314.75
7.2.00.0320.00614.84
7.1.320.0760.01413.84
7.1.310.0760.01313.66
7.1.300.0410.01313.75
7.1.290.0200.01013.80
7.1.280.1120.00613.50
7.1.270.0660.00713.43
7.1.260.0670.00413.56
7.1.250.1080.00613.36

preferences:
36.51 ms | 400 KiB | 5 Q