Вы также можете использовать метод compareTo()
для сравнения двух строк. Если результат compareTo равен 0, то две строки равны, в противном случае сравниваемые строки не равны.
==
сравнивает ссылки и не сравнивает фактические строки. Если вы создали каждую строку, используя new String(somestring).intern()
, вы можете использовать оператор ==
для сравнения двух строк, в противном случае могут использоваться только методы equals () или compareTo.
Похоже, что вы передаете текст в браузер перед отправкой header('location'). Вы не можете отправить содержимое в браузер перед выполнением header(), так как ваше эхо заставит отправить заголовок. Закомментируйте эти строки и посмотрите, работает ли это:
// echo $path_choice;
// echo $page_inc;
Теперь ваш заголовок будет отправлен, и вы будете перенаправлены.
Работает ли простой сценарий PHP, подобный следующему?
<?php header('Location: /index.php?page=login'); ?>
Вы также должны убедиться, что путь кода с $ path_choice! = Null
и $ form-> is_connected () == = true
фактически берется, потому что состояния вашей ошибки вообще не устанавливают заголовки HTTP.
Я вижу "destroy_session ()", вы где-то используете session_start ()? Убедитесь, что НЕТ содержимого (включая (сеансовые) файлы cookie) уже отправлено.
Советы по отладке: установите error_reporting (E_ALL) (включая E_NOTICE). Это даст вам строку, в которой отправляются заголовки.
Другие источники проблем: - Спецификация - дополнительные строки перед включенным файлом
Я считаю, что вам нужно проверить свой if-стек и убедиться, что вы попадаете в каждый из ваших циклов. Поместите эхо после каждого оператора if, чтобы убедиться, что header () даже оценивается, ваш цикл, вероятно, прерывается раньше, чем вы ожидаете.
Мой подозреваемый имеет отношение к использованию null и $ path_choice! = Null. Вы пробовали is_null () или isset (), поскольку они были разработаны специально для проверки того, является ли переменная нулевой. Кроме того, операнд! == может работать и в этом случае, но я не уверен, есть ли это в PHP.