Я только что создал систему 404, которая работает двумя способами: ? 404 - Будет загружен случайный мем. ? 404 = (a-u) - укажет мем.
В настоящее время я должен указать все из них в части селектора, есть ли способ получить из этого строку запроса и переменную эха?
<center>
<br>
<?php
$a = '<img src = "https://img-9gag-fun.9cache.com/photo/aAxQ9Bd_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$b = '<img src = "https://img-9gag-fun.9cache.com/photo/aPjmGrB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$c = '<img src = "https://img-9gag-fun.9cache.com/photo/a2oMpY1_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$d = '<img src = "https://img-9gag-fun.9cache.com/photo/anM7Djq_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$e = '<img src = "https://img-9gag-fun.9cache.com/photo/awrmNLB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$f = '<img src = "https://img-9gag-fun.9cache.com/photo/aMAvmGM_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$g = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460svwm.webm" type = "video/webm"></video>';
$h = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460svwm.webm" type = "video/webm"></video>';
$i = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460svwm.webm" type = "video/webm"></video>';
$j = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460svwm.webm" type = "video/webm"></video>';
$k = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460svwm.webm" type = "video/webm"></video>';
$l = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460svwm.webm" type = "video/webm"></video>';
$m = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460svwm.webm" type = "video/webm"></video>';
$n = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460svwm.webm" type = "video/webm"></video>';
$o = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460svwm.webm" type = "video/webm"></video>';
$p = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460svwm.webm" type = "video/webm"></video>';
$r = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460svwm.webm" type = "video/webm"></video>';
$r = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460svwm.webm" type = "video/webm"></video>';
$s = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460svwm.webm" type = "video/webm"></video>';
$t = '<iframe height = "500" width = "890" src = "https://www.youtube.com/embed/a3nPG9JpoLg?rel=0&controls=0&showinfo=0&autoplay=1" frameborder = "0" allow = "autoplay encrypted-media"></iframe> ';
if ($_GET['404'] == 'a') { echo $a; }
else if ($_GET['404'] == 'b') { echo $b; }
else if ($_GET['404'] == 'c') { echo $c; }
else if ($_GET['404'] == 'd') { echo $d; }
else if ($_GET['404'] == 'e') { echo $e; }
else if ($_GET['404'] == 'f') { echo $f; }
else if ($_GET['404'] == 'g') { echo $g; }
else if ($_GET['404'] == 'h') { echo $h; }
else if ($_GET['404'] == 'i') { echo $i; }
else if ($_GET['404'] == 'j') { echo $j; }
else if ($_GET['404'] == 'k') { echo $k; }
else if ($_GET['404'] == 'k') { echo $l; }
else if ($_GET['404'] == 'm') { echo $m; }
else if ($_GET['404'] == 'n') { echo $n; }
else if ($_GET['404'] == 'o') { echo $o; }
else if ($_GET['404'] == 'p') { echo $p; }
else if ($_GET['404'] == 'q') { echo $q; }
else if ($_GET['404'] == 'r') { echo $r; }
else if ($_GET['404'] == 's') { echo $s; }
else if ($_GET['404'] == 't') { echo $t; }
else {
$error = range('a', 't');
$random_error = array_rand($error);
echo $$error[$random_error];
}
?>
<h1>You dun goofed</h1>
<?php echo 'Error code: '. $_SERVER['QUERY_STRING']; ?>
</center>
<style>
body { overflow-y: hidden; }
#content { height: 1000px; }
</style>
Я также рекомендую вам узнать об ассоциативных массивах PHP, потому что такой стиль программирования не является устойчивым. С ассоциативным массивом вы можете использовать $message[$_GET['404']]
вместо использования операторов Nif
.
Это 58 строк переворачивания, разве вставка их туда не будет считаться спамом или чем-то подобным?
Уловка состоит в том, чтобы размещать только строки достаточно, которые мы знаем, о чем вы говорите. Например, пост a,b...y,z
, и мы можем понять, что для краткости были вырезаны и другие материалы. Не нужно все перечислять исчерпывающе. Публикация его за пределами сайта не поможет нам быстрее прочитать весь этот дублированный код.
Вы можете использовать переменная-переменная:
echo $$_GET['404'];
хотя с этим массивом вам, возможно, придется сделать:
echo ${$_GET['404']};
http://sandbox.onlinephpfunctions.com/code/4f51e957806e803300dd58e892532e311a19a32a
Однако лучшим решением было бы сохранить переменные в массиве:
$images = ['a' => 'something.jpg', 'b' => . 'something-else.png'];
echo $images[$_GET['404']];
Хотя это технически правильно, это лишь усугубляет проблемный дизайн этого кода.
Вместо :
$a = '<img src = "https://img-9gag-fun.9cache.com/photo/aAxQ9Bd_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$b = '<img src = "https://img-9gag-fun.9cache.com/photo/aPjmGrB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
$c = '<img src = "https://img-9gag-fun.9cache.com/photo/a2oMpY1_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
и т.д., вы можете использовать ассоциативный массив, например:
$memes = array(
'a' => '<img src = "https://img-9gag-fun.9cache.com/photo/aAxQ9Bd_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">',
'b' => '<img src = "https://img-9gag-fun.9cache.com/photo/aPjmGrB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">',
'c' => '<img src = "https://img-9gag-fun.9cache.com/photo/a2oMpY1_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">',
);
Затем вы можете использовать значение строки запроса, чтобы получить член на основе этого ключа, например:
echo $memes[$_GET['404']];
Отличный первый рефакторинг.
Не могли бы вы показать мне, как я бы добавил это в свой код? У меня около 3 недель опыта работы с PHP, 40% этого кода даже не мной ...
@DoubleThePsycho замените строки if ($_GET['404'] == 'a') { echo $a; }
на if (array_key_exists('404', $_GET) && array_key_exists($GET['404'], $memes)){ echo $memes[$_GET['404']]; } else { //... error }
Я попробовал. На этот раз загрузилась остальная часть страницы, но сам мем не появился. Мой текущий код: 'u' => '' ); if (array_key_exists('404', $_GET) && array_key_exists($GET['404'], $memes)){ echo $memes[$_GET['404']]; } else {} ?> <h1>You dun goofed</h1> <?php echo $random_error; ?>
Изменил его на 3v4l.org/ADOtJ, чтобы предметы отображались случайным образом, большое спасибо за помощь, приятель!
Пожалуйста, постарайтесь, чтобы ваши вопросы оставались самодостаточными. Внешние ссылки настоятельно не рекомендуются, потому что они неудобны, могут быть заблокированы для некоторых людей и могут измениться или быть удалены позже.