Seltsames stripos verhalten

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

  • Seltsames stripos verhalten

    Hi @ all,

    Folgendes Dokument ist durchaus ernst gemeint, auch wenn ich mich bemühe es unterhaltsam zu präsentieren.
    Dazu gehört allerdings auch, daß ich etwas aushole und weitschweifig werde.

    Und nein, das hat absolut nichts damit zu tun, daß ich mich gerne reden höre!

    (wie auch, wenn ich schreibe und übrigens, wer Rechtschreibfehler findet, der darf sie ohne Entgeld behalten und weiterverwerten)

    Zu mir:
    Ich bin PHP Anfänger und dabei mich in PHP5 einzuarbeiten.

    Als Anfangsprojekt habe ich mir vorgenommen ein Kontaktformular zu erstellen, welches ich schnell den entsprechenden Umständen anpassen kann.
    Wie nicht anders zu erwarten traten die ertsen Probleme relativ schnell auf und ich machte mich auf die Suche im Netz.
    Dabei bin ich auf dieses Forum gestoßen und habe hier schon Hilfe erhalten und Anregungen gefunden (danke arkos und H2O).

    Nun habe ich etwas festgestellt, bzw. gefunden was ich mir absolut nicht erklären kann:

    Das Verhalten von stripos

    Was ich damit meine?

    Dazu muss ich ganz am Anfang beginnen:

    Am Anfang schuf ich...:

    Ein einfaches Eingabeformular unter XHTML:
    <form id="FormName" action="zielscript.php" method="post" name="FormName">
    Ihre E-Mailadresse:<input type="text" name="eMail" size="24">
    <p>
    <input type="submit" name="sent"></p>
    </form>
    ok, in Ordnung ich fass mich kurz ....
    Zusammenfassung

    Ich habe den Ablauf 3 - geteilt:

    1. Formular
    2. Browserausgabe mit include Versand
    3. der Versand

    bla, bla, Problem, falscher Pfad bei include, bla bla ....

    Das Formular wurde erweitert, im Versand wurde ein korrekter Header eingebaut und ....

    Ja, jetzt komme ich zum Punkt!

    von H2O erhielt ich 2 überarbeitete Codes (wahrscheinlich gieng ich ihm zu dem Zeitpunkt schon zum 1. mal auf die Nerven, sorry H2O
    1. Die Ausgabe
    2. Den Versand-Teil des Scripts

    Im Vesand-Teil wurde folgende Abfage Eingefügt:
    PHP-Code:
    if(stripos($eMail'bcc:')){    // Minimale Kontrolle
        
    die("Ung&uuml;ltige Absenderadresse, Mail nicht verschickt<br />"); 
    Und das Unerklärliche begann!
    Fatal error: Call to undefined function: stripos() in ...
    Tja, was ist wohl der 1. Gedanke bei der Meldung?

    Genau: stripos gibt es erst ab PHP5

    Aber es steht doch PHP5 zur Verfügung!

    Edit:
    Auf der Testdomain ist PHP 3, PHP 4 und PHP5 (V. 5.2.4) installiert

    Das wird sofort überprüft!
    Mit folgender Abfrage
    stripos.php:
    PHP-Code:
    <?php
    if (!function_exists('stripos')) {
       echo 
    "stripos ist da";
        }
    else {
       echo 
    "nope";
    }
    ?>
    Die Ausgabe erfolgt wie Erwartet:
    stripos ist da
    Und nun wirds wirklich seltsam.

    Folgender Code gibt die allseits beliebte Meldung:
    Fatal error: Call to undefined function: stripos() in ...
    aus:
    stripos2.php:
    PHP-Code:
    <?php
    $findmich  
    'a';
    $meinstring1 'xyz';
    $meinstring2 'ABC';

    $pos1 stripos($meinstring1$findmich);
    $pos2 stripos($meinstring2$findmich);

    // 'a' ist natürlich nicht in 'xyz' enthalten
    if ($pos1 === false) {
        echo 
    "Die Zeichenkette '$findmich' kommt nicht im String '$meinstring1' vor.";
    }

    // Beachten Sie die Verwendung von ===. Ein einfaches == funktioniert nicht wie
    // erwartet, da 'a' an Position 0 (also erster!) Stelle steht
    if ($pos2 !== false) {
        echo 
    "Die Zeichenkette '$findmich' wurde in '$meinstring2' an Position $pos2 gefunden";
    }
    ?>
    Naja, man ist ja vorsichtig, man kann die PHP-Version über die Endung *.php3, *.php4, *.php5 definieren

    Gesagt, getan.

    stripos2.php umbenannt in stripos2.php5 ergibt folgende Meldung:
    Die Zeichenkette 'a' kommt nicht im String 'xyz' vor.Die Zeichenkette 'a' wurde in 'ABC' an Position 0 gefunden
    Super, Problem gelöst, dachte ich zumindest,
    bis auf eine Kleinigkeit:

    Warum zum Teu... gibt mir dann stripos.php5:
    PHP-Code:
    <?php
    if (!function_exists('stripos')) {
       echo 
    "stripos ist da";
        }
    else {
       echo 
    "nope";
    }
    ?>
    nope aus?

    Kann mir das bitte irgendwer erklären?

    Gruß

    Martin
    Zuletzt geändert von brmartin; 01.11.2007, 11:56.
    Greets

    Martin

    absolut beginner
    aber lernwillig

  • #2
    Es muss natürlich heißen:
    PHP-Code:
    if (function_exists('stripos')) {
       echo 
    "stripos ist da";
        }
    else {
       echo 
    "nope";

    Kommentar


    • #3
      Danke PHP Desaster,

      Mann bin ich mal wieder Blind!

      wie kann man das "!" überlesen?

      Das kommt davon wenn "copy und paste" verwendet wird!

      Ich hätte mir gestern 1,5h sucherei ersparen können

      Und damit ist Obiges geschreibsel mal wieder hinfällig.

      Auser man macht daraus ein Beispiel, daß der verwendete Code genau gelesen werden sollte!
      Greets

      Martin

      absolut beginner
      aber lernwillig

      Kommentar


      • #4
        Original geschrieben von brmartin
        Auser man macht daraus ein Beispiel, daß der verwendete Code genau gelesen werden sollte!
        Oder einfach selber schreiben!
        hopka.net!

        Kommentar


        • #5
          Re: Seltsames stripos verhalten, oder wie dumm manche User sind

          [QUOTE]Original geschrieben von brmartin
          PHP-Code:
          <?php
          if (!function_exists('stripos')) {
             echo 
          "stripos ist da";
              }
          else {
             echo 
          "nope";
          }
          ?>
          warum machst du echo-s statt direkt eine stripos zu machen?
          PHP-Code:
          if (!function_exists('stripos')) 
          {
            function 
          stripos($str,$find)
            {
               return 
          strpos(strtolower($str),strtolower($find));
            }

          Slava
          bituniverse.com

          Kommentar


          • #6
            Hi Slava,

            Wie gesagt,

            war ein einfaches "copy and paste", hab mir die Abfrage nicht genauer angesehen und auch nicht darüber nachgedacht, sonst währe mir die Negation aufgefallen.

            Sinn war ja nur nachzuprüfen ob bei der endung *.php PHP 5 oder PHP 4 geparsed wird. Daß Php 5 zur Verfügung steht weiß ich.

            Klar, ich hätte auch einfach phpinfo.php aufrufen können, dann hätte ermir angezeigt, daß die Endung php über PHP 4 geparsed wird.

            Naja, etwas nachdenken hilft
            Greets

            Martin

            absolut beginner
            aber lernwillig

            Kommentar

            Lädt...
            X