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.
[PHP] unerwünschte ziffer 1 / eins in php script
-
-
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:
gehört erst ganz an den Schluss (abgesehen vom "1" natürlich) -
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
-
@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önntecockroach
break ist nahc jedem casehier der source:
ausschnitt aus der index.phpCode- <TD ROWSPAN=13 BGCOLOR="FFFFFF" ALIGN="justify" VALIGN="TOP">
- <? switch($_GET['section']) {
- case "news":
- echo include("./admin/news.txt");
- break;
- case "aboutme":
- echo include("aboutme.php");
- break;
- case "works":
- echo "works";
- break;
- case "guestbook":
- echo "guestbook";
- break;
- case "links":
- echo "links";
- break;
- case "over":
- echo "Team...";
- break;
- case "Impressum":
- echo "Impressum...";
- break;
- default:
- echo "Seite nicht gefunden...";
- break;
- } ?>
- </TD>
aboutme.php
HTML- <html>
- <head>
- <title>about me</title>
- <LINK REL='stylesheet' TYPE='text/css' HREF='css.css'>
- <script type'text/javascript'>
- function popup (url) {
- fenster = window.open(url, 'Bild', 'width=290,height=380,resizeable=yes');
- fenster.focus();
- return false;
- }
- </script>
- <style type='text/css'>
- <!--
- a:link { text-decoration:none; }
- a:visited { text-decoration:none; }
- a:hover { text-decoration:underline; }
- a:active { text-decoration:none; }
- .style1 {
- font-family: Arial;
- font-size: 14px;
- font-weight: bold;
- color: #819931;
- }
- .style2 {
- font-family: Arial;
- font-size: 14px;
- color: #819931;
- }
- -->
- </style>
- </head>
- <body bgcolor='#FFFFFF' link='#819931' vlink='#577116' alink='#A8BB60'>
- <table cellspacing='10' border='0'>
- <tr>
- <td rowspan='4'><a href='images/foto.jpg' target='_blank' onClick='return popup (this.href);'><img src='images/foto_thumb.jpg' width='100' height='133' border='1' bordercolor='#819931'></a></td>
- <td><p class='style2'>Name</p></td>
- <td><p class='style2'>Jucker</p></td>
- </tr>
- <tr>
- <td><p class='style2'>Vorname</p></td>
- <td><p class='style2'>Fabian</p></td>
- </tr>
- <tr>
- <td><p class='style2'>Spitznamen</p></td>
- <td><p class='style2'>Fabi, Faab</p></td>
- </tr>
- <tr>
- <td><p class='style2'>Nicknames (Internet)</p></td>
- <td><p class='style2'>MonkeyMan, Esben</p></td>
- </tr>
- <tr>
- <td rowspan='6'> </td>
- <td><p class='style2'>Wohnort</p></td>
- <td><p class='style2'>Andelfingen</p></td>
- </tr>
- <tr>
- <td><p class='style2'>Alter</p></td>
- <td><p class='style2'>15 Jahre</p></td>
- </tr>
- <tr>
- <td><p class='style2'>Musik</p></td>
- <td><p class='style2'>Ska, Punk, Oi</p></td>
- </tr>
- <tr>
- <td><p class='style2'>Hobbies</p></td>
- <td><p class='style2'>Computer, CaseModding, Elektronik, Handball, Leichtathletik (Mittel- & Langstrecken)</p></td>
- </tr>
- <tr>
- <td><p class='style2'>E-Mail</p></td>
- <td><p class='style2'><a href=mailto:fabianju[AT]gmx.ch>fabianju @ swissinfo.org</a></p></td>
- </tr>
- <tr>
- <td><p class='style2'>Lieblings Programme</p></td>
- <td><p class='style2'>Adobe Photoshop <b>7.0</b>, Macromedia Dreamweaver MX2006, Maxon Cinema 4D, Mozilla Firefox & Thunderbird</p></td>
- </tr>
- </table>
- </body>
- </html>
-
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.
-
super!
das ist die lösung
kA wieso ich auf das echo gekommen bin
habs jetz aber sowieso (da ich diese variante schon vorher gesehen habe) so gelöst:Code- <TD ROWSPAN=13 BGCOLOR="FFFFFF" ALIGN="justify" VALIGN="TOP">
- <? switch($_GET['section']) {
- case "news":
- $content = "./admin/news.txt";
- break;
- case "aboutme":
- $content = "aboutme.php";
- break;
- case "works":
- echo "works";
- break;
- case "guestbook":
- echo "guestbook";
- break;
- case "links":
- echo "links";
- break;
- case "over":
- echo "Team...";
- break;
- case "Impressum":
- echo "Impressum...";
- break;
- default:
- echo "Seite nicht gefunden...";
- break;
- }
- if (isset ($content)) //Wenn $content gesetzt ist dann include $content
- {include ($content);}; ?>
- </TD>
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