отображение чередующихся URL-адресов в зависимости от даты

#php #html

Вопрос:

В настоящее время я работаю над рождественским календарем для своей сестры. Я сделал html-страницу со ссылками на соответствующие страницы на каждый день. Проблема в том, что я не хочу, чтобы она могла получить доступ ко всем им сразу.

Я попытался написать php-скрипт:

 lt;?php  $day = date(j);  if ($day = 1) {  echo  'lt;a href="Days/1.html" id="1"gt;  lt;div class="box"gt;  lt;h2gt;1lt;/h2gt;  lt;/divgt;  lt;/agt;';}else{  echo  'lt;a href="Days/error.html" id="1"gt;  lt;div class="box"gt;  lt;h2gt;1lt;/h2gt;  lt;/divgt;  lt;/agt;';} ?gt;  

но по какой-то причине это просто создает полный хаос. Я понятия не имею, что я делаю не так.

Комментарии:

1. Используйте switch для удобства логики, чтобы ограничить дату и URL-адрес, которые вы хотите сделать доступными

2. if ($day = 1) = задает значение, используемое == для сравнения

3. @ahoi_prause помимо проблемы (которая на самом деле является единственной =, но использование предложенного состояния переключения может сделать ваш код более понятным), ваша сестра может быть настолько умной, чтобы просто изменить URL на Days/2.html в браузере. Вы также можете добавить days.php и ограничьте вывод там (и выдайте ошибку, если день будет высоким. « $день = дата(j); если ($_GET[‘день’] gt; $день) { // ошибка здесь } // вывод на основе $_GET[‘день’] « Откройте это с помощью /days.php?день=1

Ответ №1:

Если меняется только URL-адрес, установите для него значение a var , а затем просто используйте его в HTML, а не повторяйте его каждый раз.

Пример

Установите $url с switch помощью инструкции, используя резервный URL-адрес по умолчанию или URL-адрес ошибки, если совпадение отсутствует.

 lt;?php $url = ""; $day = date("j"); switch($day) {  case 1:  $url = "Url 1";  break;  case 2:  $url = "Url 2";  break;  default:  $url = "Default URL";  break; } ?gt;  

Обновите встроенный HTML-код следующим образом

 lt;a href="lt;?php echo $url; ?gt;" id="1"gt;  lt;div class="box"gt;  lt;h2gt;1lt;/h2gt;  lt;/divgt; lt;/agt;  

Комментарии:

1. Отсутствует ' в дате парам. Должно быть date('j') . =)

2. @cottton Oops обновлено 😀