Ticket #13 (closed Fehlermeldung: fixed)

Opened 5 years ago

Last modified 5 years ago

Vergleichs-Operator '===' in categories.class.php

Reported by: Klaus <Speckbear@…> Owned by: jeena
Priority: minor Milestone:
Component: Kernfunktion Version: 1.0.1
Keywords: Cc:

Description (last modified by jeena) (diff)

Hallo,

ich hatte das Problem, dass auf meinem Server mit php 4.3.4 entgegen auf dem Testsystem mit php 5.0.5 die Kategorien nicht angezeigt wurden. Der Fehler schein an einem Tippfehler ? zu liegen:

in categories.class.php wird als Vergleichsoperator an drei Stellen '===' statt '==' verwendet:

    function get_id($url) {
        foreach($this->categories AS $cat) {
            if($cat['url'] === $url) return $cat['id'];
        }

    }
    
    function get_categories() {

        if(defined("JLOG_UPDATE") === false AND defined("JLOG_LOGIN") === false)

Nach Änderung auf '==' funktioniert es.

Gruss Klaus

Change History

comment:1 Changed 5 years ago by jeena

  • Owner set to jeena
  • Status changed from new to assigned
  • Version set to 1.0
  • Description modified (diff)

comment:2 Changed 5 years ago by jeena

Welchen der drei Vergleichsoperatoren meinst du? Kannst du mal mit var_dump() ausgeben lassen welchen Typ die entsprechenden Variablen haben?

comment:3 follow-up: ↓ 4 Changed 5 years ago by Klaus

Die Variablen $caturl?; $url; JLOG_UPDATE; JLOGLOGIN sind strings verschiedener Länge. Was bedeuten denn drei "===" Gleichheitszeichen ? Der Syntax war mir noch nicht bekannt.

comment:4 in reply to: ↑ 3 Changed 5 years ago by driehle

Was bedeuten denn drei "===" Gleichheitszeichen?

Siehe PHP-Manual,  Vergleichs-Operatoren.

comment:5 in reply to: ↑ description Changed 5 years ago by driehle

if(defined("JLOG_UPDATE") === false AND defined("JLOG_LOGIN") === false)

An dieser Stelle wird jeweils die Rückgabe von  defined() ausgewertet - da die Rückgabe von defined() nur entweder true oder false ist, darf ein Abändern der Vergleichs-Operatoren von === auf == eigentlich keinen Unterschied machen.

if($cat['url'] === $url) return $cat['id'];

Und wenn an dieser Stelle sowohl $caturl? als auch $url vom Typ string sind, dann dürfte hier == und === auch keinen Unterschied machen.

PHP 4.3.4 ist eine übelst alte PHP-Version, veröffentlicht im  November 2003 - möglicherweise war das ein Bug in der Version. Klaus, wenn dein Provider heute noch eine PHP-Version von 2003 verwendet solltest du dir mal ernsthaft Gedanken darüber machen den Provider zu wechseln! ;-)

comment:6 Changed 5 years ago by Klaus <Speckbear@…>

Hallo,

danke für die Info, jetzt verstehe ich den Sinn der Programmierung. Mein Provider ist Evanzo, warum die noch diese alte Version haben verstehe ich auch nicht. Werde nachhaken. Ich habe noch eine zweite Seite bei 1und1, dort ist php V. 4.4.4 . Leider kann ich dort nicht testen.

comment:7 Changed 5 years ago by jeena

  • Status changed from assigned to closed
  • Resolution set to fixed

Da wir bei Jlog 1.x den Anspruch haben ab PHP 4.1.1 zu laufen habe ich das mal geändert: 1637

Note: See TracTickets for help on using tickets.