Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-Code wird auf der Webseite ausgegeben

Einklappen

Neue Werbung 2019

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

  • PHP-Code wird auf der Webseite ausgegeben

    Hallo,

    ich habe eine php-Seite gemacht, die seit Jahren auf einem Server ohne Probleme läuft und richtig angezeigt wird.

    Aber bei mir lokal wird ab einer gewissen Stelle der php-Code angezeigt und ich krieg einfach nicht raus, warum.
    So sieht das aus:



    Das geht über ziemlich viele Zeilen so.
    Der Rest darunter wird wieder ganz normal dargestellt.

    Die php-Version ist die gleiche, wie auf dem Server.
    Ich habe natürlich schon die lokale- und die Server-php.ini verglichen, aber den möglichen Unterschied nicht gefunden.
    register_long_arrays ist auf dem Server "On" - war's aber nicht.
    register_globals war's auch nicht.

    Seltsamerweise wird hier immer "eregi_replace" ausgegeben, obwohl ich im Code "preg-replace" benützt habe (wie kann das denn sein?).

    Tja, ich finde es nicht raus.
    Etwas Hilfe würde mich sehr freuen.

    Grüße, Hago
    Angehängte Dateien


  • #2
    Ohne den Quellcode zu kennen, kann man nur raten.

    Könnte eventuell an short_open_tags liegen, hast duim Quellcode <? und/oder <?php stehen?
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Seltsamerweise wird hier immer "eregi_replace" ausgegeben, obwohl ich im Code "preg-replace" benützt habe (wie kann das denn sein?).
      Halte ich für unwahrscheinlich! Wenn das dort ausgegeben wird, wird das auch im Code so sein. Evtl. handelt es sich um ein Shopsystem? Dann könnte das am Cache liegen.

      Bei den meisten Shopsystemen kannst Du zudem in den Einstellungen definieren, wie sie mit PHP-Code in Template-Dateien umgehen sollen.
      Sollte das bei dem von Dir verwendeten auch so sein, solltest Du diese Einstellung nutzen. Auswendig weiß ich dies leider nur vom OXID, da stellt man das bspw. auf "PHP-Code in Template ausführen".
      Andernfalls wird dieser ignoriert oder wie bei Dir ausgegeben.
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Hallo,

        @ uha
        ich habe "<?php" benutzt.

        @ Arne
        das ist zwar ein Shop, aber kein Shop-Systen, hab' alles selbst gemacht.

        hier der fragliche Code:
        -------------------

        for($i=1;$i<=$_SESSION['tW'];$i++)
        {
        $x=$_SESSION['w'][$i]; $y=$_SESSION['gelW'][$i]; $so=$_SESSION['sorteW'][$i]; $nr=$_SESSION['nummerW'][$i];
        eval ("\$x = \"$x\";");
        eval ("\$y = \"$y\";");
        eval ("\$z = \"$z\";");
        eval ("\$so = \"$so\";");
        eval ("\$p = \"$p\";");
        eval ("\$nr = \"$nr\";");
        $x=str_replace(',','.',$x);
        $x=preg_replace("/[^\d,.]/",'',$x);
        if($x!=0){ $x=sprintf("%01.3f", $x); }

        $x = str_replace('.',',',$x);
        if ($x==1 & $so=="Fl."){$s=preg_replace('/Fl./','Flasche',$so);}
        if ($x>1 & $so=="Fl."){$s=preg_replace('/Fl./','Flaschen',$so);}
        if ($x>1 & $so=="Bd"){$s=preg_replace('/Bd/','Bund',$so);}
        if ($x>1 & $so=="Bd."){$s=preg_replace('/Bd./','Bund',$so);}
        if ($x>1 & $so=="St."){$s=preg_replace('/St./','Stück',$so);}
        if ($x>1 & $so=="St"){$s=preg_replace('/St/','Stück',$so);}
        if ($x>1 & $so=="Kg"){$s=preg_replace('/Kg/','kg',$so);}
        if ($x>1 & $so=="Kiste"){$s=preg_replace('/Kiste/','Kisten',$so);}
        if ($x>1 & $so=="Karton"){$s=preg_replace('/Karton/','Kartons',$so);}
        if ($x>1 & $so=="Schale"){$s=preg_replace('/Schale/','Schalen',$so);}
        if ($so!="Kg" & $so!="kg"){$x=preg_replace('/,[0-9]{3}/','',$x);}
        $xx="\t$x";
        -------------------------

        da er auf dem Server richtig dargestellt wird, nehme ich schon an, dass es irgendeinen kleinen PHP-Konfigurationsunterschied gibt, der mir die Sache lokal versaut.
        Funktionieren tut übrigens alles trotzdem.

        Hago

        Kommentar


        • #5
          1. lass mal die Finger von eval, zumal die da überhaupt keinen Sinn machen.
          2. hat sich erledigt, hatte ich überlesen...
          3. Ich glaube Dir immer noch nicht, daß das der Code ist, denn PHP macht nicht einfach eigensinnig eregi_* aus preg_*!
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            3. vielleicht kommt der Code tatsächlich aus irgendeinem Cache.

            Das "eregi" habe ich heute Morgen erst zu "preg" gemacht.
            Es gibt nirgends eine Seite oder Stelle, an der ähnlicher Code auftaucht, das muss schon der Code sein.

            Inzwischen habe ich in der php-ini "short_open_tag" auf "On" gestellt und plötzlich wird alles perfekt angezeigt.
            Das ist mir aber vollkommen unverständlich, weil ich schon lange keine short_tags mehr benutze und in der Seite definitiv keine drin sind.
            Auf dem Server ist "short_open_tag" auch auf "On".

            Wie kann sowas zustande kommen?

            Warum ich die "eval" reingemacht habe, weiß ich ehrlich gesagt nicht mehr.
            Ich hab' sie mal rausgemacht - funktioniert trotzdem, soweit ich das im Moment überschaue.

            Danke jedenfalls.

            Hago

            Kommentar


            • #7
              Neben dem bereits geschriebenen:

              Zitat von hago Beitrag anzeigen
              if ($x==1 & $so=="Fl."){$s=preg_replace('/Fl./','Flasche',$so);}
              preg_replace() ist Unfug, ein einfaches str_replace() reicht völlig (davon ausgehen dass du wirklich den String »Fl.« ersetzen willst, das was da steht würde z.B. aus »Flasche« »Flaschesche« machen da der Punkt auf jedes Zeichen passt).

              Kommentar

              Lädt...
              X