simples if oder nicht?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • simples if oder nicht?

    Hallo,

    mir ist per Zufall etwas aufgefallen, was ich mir derzeit nicht erklären kann.

    Wie kann es sein, dass diese Bedingung erfüllt sein kann:

    PHP-Code:
    $page = isset($HTTP_GET_VARS['page']) ? $HTTP_GET_VARS['page'] : 0;

    if ( 
    $page == 'test' )
    {
        echo(
    'Bedingung erfuellt');

    $page ist in diesem Fall false / NULL, aber doch kein vorgegebener String?

    Ersetzt man die 0 gegen leer ('') ist alles normal.

    Gruß
    mein Honda Forum | meine Scripte

  • #2
    Als erstes solltest du $_GET anstatt $HTTP_GET_VARS verwenden.
    Und zweitens kann deine Bedingung erfüllt sein, wenn in $HTTP_GET_VARS['page'] "test" steht. Lass dir das doch einfach mal ausgeben.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Und wenn sich herausstellt, dass dein code nicht der ist, den du hier postest...

      Kommentar


      • #4
        Re: simples if oder nicht?

        Original geschrieben von mgutt
        if ( $page == 'test' )

        $page ist in diesem Fall false / NULL, aber doch kein vorgegebener String?

        Ersetzt man die 0 gegen leer ('') ist alles normal.
        du vergleichst int 0 mit string 'test', dabei wird der string nach int gecastet und das ergibt int 0 und somit ist die bedingung wahr.

        echo (int)'test'; ergibt 0

        Kommentar


        • #5
          So müsste es doch eigentlich auch normal sein
          PHP-Code:
          if ( 'test' == $page)
          {
              echo(
          'Bedingung erfuellt');
          }
          //oder
          if ( $page === 'test')
          {
              echo(
          'Bedingung erfuellt');

          Oder nicht ?

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Original geschrieben von XGremliN
            Als erstes solltest du $_GET anstatt $HTTP_GET_VARS verwenden.
            Und zweitens kann deine Bedingung erfüllt sein, wenn in $HTTP_GET_VARS['page'] "test" steht. Lass dir das doch einfach mal ausgeben.
            Nein, da das Script was ich nutze abwärtskompatibel ist und $_GET von vorneherein bzw. alle möglichen Globals an $HTTP_GET_VARS übergibt.

            Original geschrieben von jahlives
            So müsste es doch eigentlich auch normal sein
            PHP-Code:
            if ( 'test' == $page)
            {
                echo(
            'Bedingung erfuellt');
            }
            //oder
            if ( $page === 'test')
            {
                echo(
            'Bedingung erfuellt');

            Oder nicht ?

            Gruss

            tobi
            Die erste Bedingung ist genau wie meine. Die Prüfungsrichtung ist zwar anders herum, aber wie zuvor gesagt wurde, liegt es an der Prüfung auf integer. Die zweite Bedingung ist klar. Dort wird ja auch der Datentyp mit geprüft. Das geht dann wieder.

            Danke!
            mein Honda Forum | meine Scripte

            Kommentar

            Lädt...
            X