[PHP] unerwünschte ziffer 1 / eins in php script

  • Hi zusammen,
    Ich habe schon bei ein paar meiner "Seiten" beobachtet, dass wenn ich mit PHP eine Inhalt Datei (hier die aboutme.php) per auf der index.php switch/case/$get und der include() funktion aufrufe, wird am ende der includeten datei eine 1/eins eingefügt.
    Beispiel hier
    ich bin am verzweifeln, wäre cool wenn ihr mir helfen könntet.

  • Hi,


    Weshalb die "1" erscheint weiss ich auch nicht... ich nehme an in der aboutme.php steht sie nicht an letzter Stelle?


    Was anderes... In die aboutme.php solltest du nicht nochmal einen ganzen HTML-Aufabu reinsetzen:

    Code
    1. </body>
    2. </html>1


    gehört erst ganz an den Schluss (abgesehen vom "1" natürlich)

    TOWER i7 3930K | 7970 3GB | 32GB | GA-X79A-UD5 | 250GB Vertex 3 | Lian-Li V1200B-Plus | Eizo 24" | cooled w/ H2O
    FILER A6 5400K | 8GB | 120GB EVO Basic | RAID5 w/ 22TB usable | Lian Li PC-Q25
    NBOOK Lenovo ThinkPad W530 | i7-3720QM | Quadro K2000M | 24GB | 500GB OCZ Vector 180 | 15" WUXGA
    CINE Yamaha A-S1000+CD-S1000 | Marantz SR-6003 | Focal Chorus 725+706V, Cobalt SR 800 | Nubert nuLine CS-72+AW-560 | Panasonic TX-P65ST50J
    photosmusicinsta

  • hallo


    könntest du den ganzen quelltext irgendwo pasten? könnte beim debuggen helfen...


    und: ich nehme an, du hast beim switch/case statement jeweils vor dem nächsten case ein break dabei, oder? ist sonst noch eine beliebte quelle für unvorgesehenerweise ausgeführten code :)

    Lian-Li PC-V1100B / Eizo FlexScan S2133 x 2 / Intel Core 2 Duo E7400 / Asus P5Q / Asus STRIX R7 370

  • @stimorol
    ja, bei der datei ansich ist die 1 nicht drin, und den html code habe ich mal in ein echo gepackt um zu sehen ob das der fehler sein könnte ;)


    cockroach
    break ist nahc jedem case


    hier der source:
    ausschnitt aus der index.php



    aboutme.php

  • ah okay, das problem ist folgendes:


    wenn du include()st, wird anscheinend eine 1 ("true", etc) zurückgegeben (find ich so nicht in der php-doku, macht aber sinn). da du nun aber "echo include()" machst, sagst du im prinzip "gib den rückgabewert des include-aufrufs aus", was du aber mit an sicherheit grenzender wahrscheinlichkeit nicht machen willst :)


    korrekt wäre einfach "include(...)", ohne das echo.

    Lian-Li PC-V1100B / Eizo FlexScan S2133 x 2 / Intel Core 2 Duo E7400 / Asus P5Q / Asus STRIX R7 370

  • super! :applaus
    das ist die lösung :)
    kA wieso ich auf das echo gekommen bin :stupid
    habs jetz aber sowieso (da ich diese variante schon vorher gesehen habe) so gelöst:


    Die if isset abfrage brauche ich hier damit wenn $content nicht gesetzt ist, bzw. ich auf einer seite nur text will (z.b. hier bei impressum) keine fehlermeldung erscheint bzw. eben der text
    Danke vielmals euch beiden (cockroach wegen der lösung und stimorol für den tip mit den doppelten tags)

  • hmm, musst aber huren aufpassen, dass dir die variable nicht von sonstwoher untergeschoben werden kann (register_globals?). ich wuerde eher etwas wie folgt empfehlen:
    [php]
    $section = $_GET['section']


    $pages = array(
    "aboutme" => "aboutme.php",
    "foo" => "bar.php"
    );


    if (array_key_exists ($section, $pages)) {
    include ($pages [$section]);
    } else {
    echo "Seite nicht gefunden...";
    }
    [/php]
    (der array_key_exists teil ist nicht zwingend buchstabengetreu korrekt - hab grad kein php hier ums auszuprobieren).


    damit kann niemand seiten/dateien laden, die nicht explizit in $pages definiert sind.


    falls die pages immer so heissen wie die section, kannst du auch einfach ein array ("aboutme", "foo") machen, mit in_array pruefen, ob die section im array definiert ist und dann $section.php includen.


    nur so am rande :)

    Lian-Li PC-V1100B / Eizo FlexScan S2133 x 2 / Intel Core 2 Duo E7400 / Asus P5Q / Asus STRIX R7 370