Я пытаюсь отключить форму по выходным. В моем коде у меня есть разрыв после переменной $ noaccess. Когда я запускаю код, форма не загружается. Я не уверен, что происходит, пожалуйста, помогите.
Вот мой код:
$wkday = date('D');
if ($wkday == "Sun") {
$noaccess = "yes";
break;
} elseif ($currday == "Sat") {
$noaccess = "yes";
} else {
$noaccess = "no";
}
Вот код для отображения формы:
if ($noaccess == "yes") {
echo "You cannot access this area now";
} else {
//Form displays normally
}
Вы ссылаетесь на неправильную переменную $currday
в elseif ($currday == "Sat")
который должен быть $wkday
как в elseif ($wkday == "Sat")
в отношении $wkday = date('D');
Плюс, как сказал Дейв Готен, break;
не нужно
добавлять exit;
, die;
или же return;
если необходимо.
$wkday = date('D');
if ($wkday == "Sun") {
$noaccess = "yes";
} elseif ($wkday == "Sat") {
$noaccess = "yes";
} else {
$noaccess = "no";
}
// test echo
if ($noaccess == "yes") {
echo "You cannot access this area now";
} else {
//Form displays normally
echo $noaccess; // test variable echo
echo "You have access";
}
Базовая отладка, такая как Отчет об ошибках сигнализировал бы неопределенную переменную в этот день.
т.е .: Notice: Undefined variable: currday...
добавлять Отчет об ошибках в начало вашего файла (ов), который поможет найти ошибки.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Примечание: Отчеты об ошибках должны выполняться только на стадии подготовки, а не на производстве.
Кроме того, убедитесь, что ваша форма выглядит следующим образом:
//Form displays normally
echo "<form action='' method='post'>"; // or get. I have no idea what you're using
echo "<input type='text' name='name'>";
echo "<input type='submit' name='submit'>";
echo "</form>";
…так как вы не включили это в свой вопрос. Просто чтобы убедиться, что нет синтаксических ошибок.
используйте оператор или, чтобы упростить вашу логику, и тогда нет необходимости использовать разрыв.
if ($wkday == "Sun" || $wkday == "Sat") {
$noaccess = "yes";
} else {
$noaccess = "no";
}