Vorab:
Warum bedankt Ihr euch bei mir ?
fishnet war der der zuerst einen Fix vorgeschlagen hat.
In privatem Mail-Verkehr war ich allerdings auch schon für den nun hier vorgestellten offiziellen Fix für die
/includes/write_customers_status.php.
Meinen Zusatz finde ich allerdings begründet.
Mein Freund, noRiddle:
echo '0' == 0 ? 'true' : 'false'; #> true
echo '0' === 0 ? 'true' : 'false'; #> false
Deine Code ergibt so für mich keinen Sinn, du meinst vermutlich ===.
Und ich wüsste gerne auch in welchem Fall das eintreten könnte.
Schreib mich einfach per Mail an, bevor du hier einige verunsicherst.
LG, h-h-h
"Keinen Sinn" finde ich ein wenig übertrieben
.
Deine codierte Fragestellung ist nicht zielführend, sie müsste anders lauten,
denn,
da
mysql_fetch_array() false ergibt wenn kein Ergebnis der Query vorhanden ist, vermutete ich, daß dann die
$_SESSION['customers_status']['customers_status_id'] in der
/includes/write_customers_status.php auf
false gesetzt würde (siehe Code dort) und
false == 0 als Boolean.
Der Test müsste also so aussehen, dachte ich:
echo '<h1>noRiddle</h1>';
echo '0' == true ? 'true<br />' : 'false<br />'; #>false
echo '0' == false ? 'true<br />' : 'false<br />'; #>true
echo 0 == false ? 'true<br />' : 'false<br />'; #>true
echo 0 === false ? 'true<br />' : 'false<br />'; #>false
echo false == 0 ? 'true<br />' : 'false<br />'; #>true // <= das ist der wichtigste Test
echo false === 0 ? 'true<br />' : 'false<br />'; #>false // <= das ist der zweitwichtigste Test
echo true == 1 ? 'true<br />' : 'false<br />'; #>true
Nachdem ich mit
h-h-h alles durchgetestet habe kam raus, daß die
$_SESSION['customers_status']['customers_status_id'] auf NULL gesetzt wird wenn in der Query
$customers_status_query_1 kein Ergebnis gefunden wurde.
Der Test sollte also so aussehen:
echo '0' == NULL ? 'true<br />' : 'false<br />'; #> false
echo 0 == NULL ? 'true<br />' : 'false<br />'; #> true
Wenn also in der von mir zitierten
/templates/YOUR_TEMPLATE/source/boxes.php die Abfrage so lautet (also nicht auf String 0 geprüft):
if ($_SESSION['customers_status']['customers_status_id'] == 0) {
require_once(DIR_WS_BOXES . 'admin.php');
$smarty->assign('is_admin', true);
}
ist das verkehrt.
Damit man aber nicht immer und überall darauf achten muß ist der Fix in der
/includes/write_customers_status.php den das Team zur Verfügung gestellt hat genau richtig, nämlich an der Wurzel gepackt.
Also, alles gut, auch ohne meinen Fix in der
/templates/YOUR_TEMPLATE/source/boxes.php, auch wenn er korrekter wäre als nicht auf String zu testen.
Gruß und good night,
noRiddle