woonem
@woonem

PHP. Возможно ли сократить следующий код?

<input type="text" name="email" placeholder="Email" value="<?php if(isset($_GET['e'])) echo $_GET['e']; elseif(isset($_POST['email'])) echo $_POST['email']; elseif(isset($_COOKIE['e'])) echo $_COOKIE['e']; ?>">

Поле ввода в коде для контекста. Сократить нужно конечно-же PHP. Просто интересно сократить. Никакой пользы не принесёт, вопрос задан исключительно ради интереса =)
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
@novrm
<?= isset($_GET['e']) ? $_GET['e'] : (isset($_POST['email']) ? $_POST['email'] : (isset($_COOKIE['e']) ? $_COOKIE['e'] : null)) ?>

или для "продуктивности" (дважды не извлекать переменную):
<?= isset($getE = $_GET['e']) ? $getE : (isset($postEmail = $_POST['email']) ? $postEmail : (isset($cookieE = $_COOKIE['e']) ? $cookieE : null)) ?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
nazarpc
@nazarpc
Open Source enthusiast
PHP7 (PHP код спереди, чтобы легче было читать):
<input value="<?=$_GET['e'] ?? ($_POST['email'] ?? ($_COOKIE['e'] ?? ''))?>" type="text" name="email" placeholder="Email">


P.S. Нужно понимать, что этот код имеет XSS и в продакшен попадать не должен
Ответ написан
post и get назвать одинокого email
<?php if(isset($_REQUEST['email'])) 
                echo $_REQUEST['email'];
 elseif(isset($_COOKIE['e']))
                echo $_COOKIE['e']; ?>

c post get понятно что работать будет а вот с кукой надо протестировать
Ответ написан
Комментировать
trevoga_su
@trevoga_su
Запусти свой сценарий с этим query string:

test.php?e="><script>alert(1)</script>

phpfaq.ru/tech/safety
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы