Dank auch von mir!
Und wer hat in der anderen Streitfrage nun Recht? noRiddle oder h-h-h ?
Das haben
h-h-h und meine Wenigkeit doch geklärt und ich habe es
hier ausführlich erklärt.
Ich hatte Recht, allerdings mit der verkehrten Begründung, da
$_SESSION['customers_status']['customers_status_id'] ohne den Fix auf die Konstante NULL gesetzt wurde und nicht auf Boolean 0 (== false).
Im übrigen hat
fishnet Recht mit seiner Antwort, es ist egal da der hier vorgestellte Fix an der Wurzel angreift.
Ich habe mir das jetzt nicht "ganz genau" angesehen, aber mir stellt sich eigentlich die Frage, bzw. Überlegung,
... sollte man nicht einfach dafür sorgen dass $_SESSION['customer_id'] richtig bzw. überhaupt gefüllt wird, damit man nicht später solche Verrenkungen machen muss.
Ich meine fishnet´s Lösung ist sicher nicht verkehrt, aber das "Problem" sollte doch am Uhrsprung gelöst werden.
Oder habe ich da etwas falsch verstanden?
Gruß
Lieber
web0null.
- ist das Problem ja am Ursprung/an der Wurzel gepackt indem die
$_SESSION['customers_status']['customers_status_id']
durch den Fix nicht mehr auf 0, false oder NULL gesetzt wird wenn die Query in der /includes/write_customers_status.php kein Result liefert
und - geht es nicht um die $_SESSION['customer_id'] (= customers_id aus der Tabelle customers)
- die ist nämlich immer gesetzt sobald jemand eingeloggt ist -
sondern um die
$_SESSION['customers_status']['customers_status_id'] (= customers_status aus der Tabelle customers)
die in besagter Datei gefüllt bzw. definiert wird.
Deshalb hatte ich im anderen Post auch geschrieben, dass die Admingruppe im Standard nicht 0 sonder etwas anderes etwa -1 sein sollte.
In der Tat wäre es von vornherein klüger für den
customers_status keine Werte zu benutzen die als Boolean mißverstanden werden könnten, also weder 1 noch 0 (vielleicht gar überhaupt keine numerischen Werte), damit man beim Codieren nicht ständig aufpassen muß.
Da das allerdings noch eine sog. Altlast ist müsste man zuviel Code anfassen wollte man das ändern.
Man sollte halt immer so programmieren, daß man an der Wurzel Fehler verhindert und das ist mit dem vorliegenden Fix geschehen.
Niemand hat geahnt, daß ein leeres Result aus einer Query die mittels
mysql_fetch_array() in ein Array geschrieben wird einen Wert von
NULL ausgibt wenn er in eine Session geschrieben wird.
Ich hätte gedacht, daß es
false ergeben müsste, da das
PHP-Manual sagt, daß
mysql_fetch_array() false ausgibt wenn keine Row gefunden wurde. Im Manual steht zwar auch dies:
Zitat:
"
Diese Funktion setzt NULL-Felder auf den PHP Wert-NULL."
aber was ist ein NULL-Feld ?, ich verstehe es so, daß es ein Feld ist dessen Inhalt NULL ist, wenn man jedoch gar kein Result hat weil es keinen Eintrag
gibt ?
Gruß,
noRiddle