Such-Script vernichtet php codes...
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
bedingung
begriff
code
datei
einbinden
ergebnis
ersten beitrag
fehler
fehlermeldung
http
login
problem
stelle
stellen
string
suche
teddy
treten
url
-
Hallo Leute,
ich hab ein Such-Script von weiß ich net mehr wo in meine Seite eingebunden, angepasst und optimiert. Nun eigentlich sieht es soweit gut aus, fehlt nur noch etwas Struktur aber ok, das Problem ist, dass das Suchscript meine Php-Code's vernichtet. Gibt man etwas in die Suche ein, so kommt man auf eine via form gelinkte php Seite, inder nochmal eine php seite mit den ergebnissen angezeigt wird.
Einst auf dieser Seite angekommen sieht das Menü nicht mehr aus, wie vorher, mein php code wird irgendwie vernichtet, ich weiß nicht genau was da passiert, siehet hier:
Klick mich
Die Dateien sind in einem .rar Archiv gepackt und auf dem Download-Server falls benötigt:
Klick mich auch
Hat jemand eine Idee, woran das liegt?
PS: Ja ich weiß, dass das Männchen bei der Suche gar nicht auf die Suche zeigt....
Beitrag zuletzt geändert: 24.1.2012 9:52:43 von kill-a-teddy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich kann den Fehler bei mir nicht nachvollziehen...ich vermute aber, dass der Fehler im search_result.php liegt, und zwar an den Stellen, wo du die $_SESSION['user_id'] überprüfst. Also
<? if($_SESSION['user_id'] == false) { echo '<li><a href="login.php">Login</a></li>'; } ?>
und
<? // nur einblenden, wenn die Bedingung erfüllt wird if($_SESSION['user_id'] == true) { echo '<li><a href="login/logout.php">Logout</a></li>'; } ?>
Hier solltest du beim öffnenden PHP-Tag <?php statt nur <? schreiben, vielleicht behhebt das schon deine Probleme... -
alfr3d schrieb:
Ich kann den Fehler bei mir nicht nachvollziehen...ich vermute aber, dass der Fehler im search_result.php liegt, und zwar an den Stellen, wo du die $_SESSION['user_id'] überprüfst.
Hier solltest du beim öffnenden PHP-Tag <?php statt nur <? schreiben, vielleicht behhebt das schon deine Probleme...
Danke für deine Antwort. Das Skuriose ist, wenn ich das bei der "search_result.php" wegmache verändert sich rein gar nichts, wenn ich es allerdings bei der "search.php" wegmache, dann sieht das Ergebnis genau so aus, wie bei der "search_result.php", also es ist durcheinander ^^
// EDT: Ich hatte beim starten der session noch ein <?php stehe, was ich eben nachträglich entfernt habe, es gibt trotzdem keine Veränderung.
//EDIT2:
Wäre es denkbar, dass in diesen Zeilen
<? if($_SESSION['user_id'] == false) { echo '<li><a href="login.php">Login</a></li>'; } ?> <? // nur einblenden, wenn die Bedingung erfüllt wird if($_SESSION['user_id'] == true) { echo '<li><a href="login/logout.php">Logout</a></li>'; } ?>
Das
den code escaped?</a>
Beitrag zuletzt geändert: 24.1.2012 12:54:00 von kill-a-teddy -
Was ich meinte, ist dass du grundsätzlich überall <?php verwenden sollst...
Das mit dem "escapen" wäre mir neu, zur Sicherheit schreibe es einmal so:
<?php if($_SESSION['user_id'] == false) { echo "<li><a href=\"login.php\">Login</a></li>"; } ?> <?php // nur einblenden, wenn die Bedingung erfüllt wird if($_SESSION['user_id'] == true) { echo "<li><a href=\"login/logout.php\">Logout</a></li>"; } ?>
Aber wie gesagt, ich vermute, dass es an den öffnenden PHP-Tags liegt...
Außerdem würde ich dass ganze evlt so lösen:
<?php // nur einblenden, wenn die Bedingung erfüllt wird if($_SESSION['user_id']) { echo "<li><a href=\"login/logout.php\">Logout</a></li>"; } else { echo "<li><a href=\"login.php\">Login</a></li>"; } ?>
So ist auch der Fall abgedeckt, dass $_SESSION['user_id'] einen anderen Zustand als false oder true hat, aber das nur am Rande.
Beitrag zuletzt geändert: 24.1.2012 13:01:50 von alfr3d -
Durch den unteren Code bekomme ich genau das wieder:
Logout"; } else { echo " LOGIN "; } ?>
statt meinen Link ^^
//EDIT:
Meine zweite überlegung, wenn er die Datei holt
# Template laden $tmpl = join('', file('./search_result.php'));
läd er ja quasi einen php code in den anderen code rein, während beide zur selben Zeit ausgeführt werden, geht das eig.?
Beitrag zuletzt geändert: 24.1.2012 13:08:17 von kill-a-teddy -
alfr3d schrieb:
Tritt der Fehler auch auf, wenn du die search_result.php direkt aufrufst?
Wenn nein, dann vermute ich, dass es evtl Probleme mit dem session_start(); in der search_result.php beim einbinden gibt...
Da kommt tatsächlich derselbe "Fehler" -
kill-a-teddy schrieb:
alfr3d schrieb:
Tritt der Fehler auch auf, wenn du die search_result.php direkt aufrufst?
Wenn nein, dann vermute ich, dass es evtl Probleme mit dem session_start(); in der search_result.php beim einbinden gibt...
Da kommt tatsächlich derselbe "Fehler"
Gibt es einen Link zu der besagten Seite, ich kann das lokal bei mir leider nicht nachvollziehen...
Gibt es denn eine Fehlermeldung? -
alfr3d schrieb:
Gibt es einen Link zu der besagten Seite, ich kann das lokal bei mir leider nicht nachvollziehen...
Gibt es denn eine Fehlermeldung?
Läuft via XAMPP sorry.. Hab lediglich die Dateien hochgeladen (im ersten Beitrag)
//EDIT: Es ist so oder so eigenartig, denn auf anderen Seiten klappt es...
Beitrag zuletzt geändert: 24.1.2012 13:23:16 von kill-a-teddy -
kill-a-teddy schrieb:
alfr3d schrieb:
Gibt es einen Link zu der besagten Seite, ich kann das lokal bei mir leider nicht nachvollziehen...
Gibt es denn eine Fehlermeldung?
Läuft via XAMPP sorry.. Hab lediglich die Dateien hochgeladen (im ersten Beitrag)
Ja hab ich gesehen, läuft aber bei aufgrund fehlender Dateien & Stylesheets nicht.
Also nochmal: search.php wird korrekt dargstellt search_result.php (auch bei direktem Aufruf) hingegen nicht?
Das ist für mich insofern unlogisch, weil die Dateien bis zu dieser Stelle absolut identisch sind (außer dem unterschiedliche Stylesheet).
Bist du dir also absolut sicher, dass du wirklich die aktuelle Datei aufrufst? Und hast du bei search_result.php wirklich alles geändert (<?php anstatt <?)?
Überprüfe nochmal, ob search.php und search_result.php genau gleich sind...
EDIT: was funktioniert auf anderen Seiten?
Beitrag zuletzt geändert: 24.1.2012 13:24:46 von alfr3d -
alfr3d schrieb:
Ja hab ich gesehen, läuft aber bei aufgrund fehlender Dateien & Stylesheets nicht.
Also nochmal: search.php wird korrekt dargstellt search_result.php (auch bei direktem Aufruf) hingegen nicht?
Das ist für mich insofern unlogisch, weil die Dateien bis zu dieser Stelle absolut identisch sind (außer dem unterschiedliche Stylesheet).
Bist du dir also absolut sicher, dass du wirklich die aktuelle Datei aufrufst? Und hast du bei search_result.php wirklich alles geändert (<?php anstatt <?)?
Überprüfe nochmal, ob search.php und search_result.php genau gleich sind...
EDIT: was funktioniert auf anderen Seiten?
Ich lade alles nochmal hoch, inclusive fehlender Stylesheet dauert aber einen Moment. Wenn ich search aufrufe, und meinen Begriff eingebe wird der begriff via einer form an do_search übergeben, diese widerum liest search_result.php, um das Ergebnis zu formatieren. Aber auch wenn ich search_result.php "per hand" aufrufe ändert sich nichts, der Fehler ist nicht verschwunden.
Bis auf den Stylesheet sind beide Dateien absolut identisch ja.
Auf anderen Seiten funktioniert meine Session das meinte ich.
//EDIT: Ist hochgeladen mit den css Dateien... der Link derselbe, wie im ersten Beitrag (ich hab die Datei einfach überschrieben)
---- Bin schnell rauchen ----
Beitrag zuletzt geändert: 24.1.2012 13:37:03 von kill-a-teddy -
Absolut mysteriös...
Ich kann die Suche aber immernoch nicht ausführen, weil mir noch Dateien fehlen auf die do_search.php zugreift.
Aber beim direkten Aufruf, von search_result.php taucht bei mir dieser Fehler nicht auf...
Wie ich jetzt aber sehe verwendest du ja im search_result.php immernoch <? anstatt <?php.
Ändere doch bitte diese Stellen:
<? session_start(); ?> ... <? // nur einblenden, wenn die Bedingung erfüllt wird if($_SESSION['user_id']) { echo '<li><a href=\"login/logout.php\">Logout</a></li>'; } else { echo '<li><a href=\"login.php\">Login</a></li>'; } ?>
in
<?php session_start(); ?> ... <?php // nur einblenden, wenn die Bedingung erfüllt wird if($_SESSION['user_id']) { echo '<li><a href=\"login/logout.php\">Logout</a></li>'; } else { echo '<li><a href=\"login.php\">Login</a></li>'; } ?>
Oder du musst in deiner php.ini folgendes einfügen/ändern/aktivieren:
short_open_tag = On
Beitrag zuletzt geändert: 24.1.2012 13:40:46 von alfr3d -
Das sieht schon besser aus jetzt....
Siehe hier
Beim Direkten aufruf ist es richtig, beim Aufruf via "do_search" leider noch nicht
//EDIT: Die .inc datei, welche "do_search" aufruft ist jetzt im Archiv
Also ich hab die php.ini jetzt geändert und xampp bzw. apache neu gestartet, das hat keine veränderung gebracht
Beitrag zuletzt geändert: 24.1.2012 13:48:30 von kill-a-teddy -
Ja jetzt kann ich dass alles bei mir so nachvollziehen...
Wenn man die search_result.php direkt aufruft ist alles in Ordnung, wenn sie allerdings über die do_search.php gerufen/eingebunden wird, wird der PHP-Code nicht geparst.
Ich vermute, dass in der do_search.php irgendwie die search_result.php als "String" o.ä. ausgegeben wird, und deshalb der enthaltene PHP-Code nicht ausgeführt wird...
Bin jetzt allerdings auch ein bisschen ratlos, da die do_search.php auch nicht gerade klein ist und auf die Schnelle nicht so einfach zu verstehen ist... -
alfr3d schrieb:
Ja jetzt kann ich dass alles bei mir so nachvollziehen...
Wenn man die search_result.php direkt aufruft ist alles in Ordnung, wenn sie allerdings über die do_search.php gerufen/eingebunden wird, wird der PHP-Code nicht geparst.
Ich vermute, dass in der do_search.php irgendwie die search_result.php als "String" o.ä. ausgegeben wird, und deshalb der enthaltene PHP-Code nicht ausgeführt wird...
Bin jetzt allerdings auch ein bisschen ratlos, da die do_search.php auch nicht gerade klein ist und auf die Schnelle nicht so einfach zu verstehen ist...
In diesem Teil wird die Datei geladen:
# Template laden $tmpl = join('', file('./search_result.php'));
-
Das Problem ist, dass join() ein Array, Datei etc einließt dann die ganzen Elemente verknüpft und wieder zurückliefert.
Dadurch erhälst du einen String und dein PHP-Code kann nicht mehr interpretiert werden...
Wenn du dir den Quelltext anzeigen lässt im Browser, kannst du das gut sehen!
Beitrag zuletzt geändert: 24.1.2012 14:17:18 von alfr3d -
alfr3d schrieb:
Das Problem ist, dass join() ein Array, Datei etc einließt dann die ganzen Elemente verknüpft und wieder zurückliefert.
Dadurch erhälst du einen String und dein PHP-Code kann nicht mehr interpretiert werden...
Wenn du dir den Quelltext anzeigen lässt im Browser, kannst du das gut sehen!
Was heißt ich muss den Teil entweder weglassen oder direkt in der do_search.php einbinden richtig? Wenn ich eine globale Variable definiere und diese dann einfach auslesen lasse würde das gehen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage