Проблема заключается в следующем:
<? if ($variable == true) { ?>
По правилам синтаксического анализа PHP переменная $ равна 'true', если переменной $ не присвоено ни значение 'false', ни 'null'.
Значение PHP true в принципе бесполезно для сравнений, так как ЛЮБОЕ значение, которое может быть типо-ненулевым / ненулевым / ненулевым, оценивается как логическое true.
Следующее:
<?php
echo '7: ', (7 == true) ? 'true' : 'false', "\n";
echo '-1: ', (-1 == true) ? 'true' : 'false', "\n";
echo '0: ', (0 == true) ? 'true' : 'false', "\n";
echo 'null: ', (null == true) ? 'true' : 'false', "\n";
echo 'true: ', (true == true) ? 'true' : 'false', "\n";
echo 'abc: ', ('abc' == true) ? 'true' : 'false', "\n";
echo 'array: ', (array() == true) ? 'true' : 'false', "\n";
Результат:
7: true
-1: true
0: false
null: false
true: true
abc: true
array: false