#php
#php
Вопрос:
Может ли кто-нибудь объяснить мне, почему при тестировании некоторого PHP-кода на localhost выдает предупреждения с ошибками, а при загрузке его на мой хостинг — нет?
Я нахожу это тревожным, поскольку это происходит не в первый раз, но, похоже, все равно работает нормально…
Пример:
Использование простого пароля защиты на одной странице:
<?php
// Define your username and password
$username = "logitek_00164";
$password = "JHvzQ3jK";
if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {
?>
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="txtUsername">Username:</label>
<input type="text" title="Enter your Username" name="txtUsername" />
<label for="txtpassword">Password:</label>
<input type="password" title="Enter your password" name="txtPassword" />
<input type="submit" name="Submit" value="Login" />
</form>
Сообщает об этой ошибке: Обратите внимание: Неопределенный индекс: txtUsername в C:xampphtdocstest_passwordindex.php в строке 6
Я знаю, что отключение отчетов об ошибках может быть решением (худшим), а с другой стороны, я мог бы решить проблему, но мне просто интересно, связана ли проблема с какой-либо конфигурацией PHP или нет.
Заранее благодарю вас
Ответ №1:
Потому что php в XAMPP настроен так, как в php.ini, а php на вашем сервере — нет.
Смотрите http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
Это также может быть настроено внутри вашего php-скрипта. Смотрите http://php.net/manual/en/function.error-reporting.php
Комментарии:
1. в зависимости от заданной вами конфигурации будут генерироваться сообщения об ошибках и уведомления.
Ответ №2:
Вы должны использовать:
if ((isset($_POST['txtUsername'])amp;amp;$_POST['txtUsername'] != $username )|| (isset($_POST['txtUsername'])amp;amp;$_POST['txtPassword'] != $password)) {
Ну, отчеты об ошибках также настроены в php.ini
, которые вы можете отключить (я не буду рекомендовать при разработке) оттуда.
Комментарии:
1. Спасибо за рекомендацию, но, как вы сказали, отключить ее — не лучшее решение
2. Да, но написание кода без ошибок может быть одним из них, а также считается хорошей практикой.
3. Конечно, как вы сказали, это должен быть код без ошибок, но, с другой стороны, ваш код просто ломает мой сайт. В любом случае спасибо за ваше время, я действительно ценю это