Bah, immer beim zweiten aufruf PHP Error? |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
Bah, immer beim zweiten aufruf PHP Error? |
Sat. 30. June 2007, 14:19
Beitrag
#1
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Ich versuche ein Modul zu schräuben, dass auf eine übergebene Variable testet und diese mit einem Textfeld vergleicht.
Beim ersten Mal funzt das auch prima, beim zweiten mal gibt es aber folgende Fehlermeldung. CODE Fatal error: Call to undefined function: type_output_text() in /www/.....hierpfad....../cms/inc/frontend.php(250) : eval()'d code on line 1312 Offensichtlich (weil beim zweiten mal) ein Cache Problem. Woran liegt das? Hier mein Moduloutput: CODE <CMSPHP> $honkurl = <cms:mod type="text" id="1" title="Passwort" menuoptions="false" addslashes="true"/>; if ($view != "edit" && $kpcode != $honkurl) { $url = $HTTP_REFERER. "&wrongcode=true"; if ($pcode != $honkurl ) { header("Location: $url"); } } if($honkurl == '' && $view == "edit") { echo "<div class=\"error\">Es ist kein Passwort definiert!!! Bitte geben Sie ein Passwort ein!</div>"; } elseif($honkurl != '' && $view == "edit") { echo "<div class=\"ok center\">Passwort ist eingerichtet: \"".$honkurl."\"</div> "; } </CMSPHP> <div class="center"> <cms:mod type = "typegroup" elements = "text[1]" title = "Kurspasswort eingeben" /> </div> Sollte doch eigentlich alles stimmen -------------------- |
|
|
Sat. 30. June 2007, 22:03
Beitrag
#2
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
Soll das von außen zugänglich sein? Ich frag wegen Referrer, der könnte auch deaktiviert sein, nur falls du das nicht bedacht hast...
-------------------- |
|
|
Sun. 1. July 2007, 01:43
Beitrag
#3
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Das wollte ich noch weiter abfangen. ich hake ja schon vorher... Aber danke für den Hinweis. Erstmal muss ich aber das ganze überhaupt zum laufen bringen bevor es ans finetuning geht!
-------------------- |
|
|
Mon. 2. July 2007, 11:44
Beitrag
#4
|
|
Administrator Gruppe: Members Beiträge: 1.092 Mitglied seit: 16.06.2006 Wohnort: Köln Mitglieds-Nr.: 1 |
Du mischt gecachtes und ungecachtes PHP mit CMS:Tags. CMS:Tags sind nur im ungecachtem PHP möglich. Beim ersten Skriptaufruf wird die Seite in den Cache geschrieben: Dort sind die Funktionen, die von den CMS:tags benötigt werden noch vorhanden. Kommt die Seite aus dem Cache sind die Funktionen nicht mehr da und es gibt den gezeigten Fehler.
Einfachste und böseste Möglichkeit: Cachecontrolmodul auf der Seite benutzen, mit Cachezeit von 0. -------------------- Es wird, es wird...
|
|
|
Mon. 2. July 2007, 19:10
Beitrag
#5
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Einfachste und böseste Möglichkeit: Cachecontrolmodul auf der Seite benutzen, mit Cachezeit von 0. Wieso ist das so böse? -------------------- |
|
|
Tue. 3. July 2007, 11:06
Beitrag
#6
|
|
Administrator Gruppe: Members Beiträge: 1.092 Mitglied seit: 16.06.2006 Wohnort: Köln Mitglieds-Nr.: 1 |
Weil Du den Cache schreibst und dann gleich wieder löscht, was ja eigentlich nicht im Sinne des Erfinders ist, geht aber.
Andere Möglichkeit wäre, gecachte Inhalte in "dynamisches" PHP rüberzuretten. Das Kontaktformular oder das Contentflex machen das zum Beispiel so. Das setzt ein wenig Programmierung voraus, hatte ich gestern keine Zeit das zu erklären, heute aber schon. Guck Dir einfach folgendes Beispiel an. Kopier es einfach in die Modulfrontendausgabe. QUELLTEXT <CMSPHP:CACHE> //Alle Variablen, die nur innerhalb des gecachten PHPs sichtbar sind, auch für dynamisches PHP zur Verfügung stellen //Auf cms:tags kann nur innerhalb von gecachten PHP zugegriffen werden $elements['wysiwyg2:1'] = <cms:mod type="wysiwyg2" id="1" addslashes="true" />; $elements['wysiwyg2:2'] = <cms:mod type="wysiwyg2" id="2" addslashes="true" />; //innerhalb von gecachten PHP wird ein <CMSPHP> Tag erzeugt. Darin wiederum werden die CMS:tag //Variablen ausgegeben. echo '<CMSPHP>'; if (is_array($elements)) { foreach($elements AS $k => $v){ echo '$mvars["'.$k.'"] = "'. addslashes($v) .'";'."\n"; }} echo '</CMSPHP>'; </CMSPHP:CACHE> <CMSPHP> //Die CMS:tag Variablen wurden in dynamisches PHP getette und können nun ausgegeben werden. echo $mvars['wysiwyg2:1']; echo '<hr />'; echo $mvars['wysiwyg2:2']; </CMSPHP> Das klinkt jetzt vielleicht ein wenig kompliziert, ist aber eigentlich recht simpel. Du musst Dir vor Augen halten, das innerhalb von Sefrengo PHP immer 2 mal ausgeführt wird. Zuerst wird das <CMSPHP:CACHE> ausgeführt. Die daraus resultierende Ausgabe wandert in den Cache. Unser oberes Beispiel sieht dann nach der ersten Ausführung im Cache so aus: QUELLTEXT <CMSPHP> $mvars["wysiwyg2:1"] = "Inhalt von dem, was der Redakteur im wysiwyg2:1 eingegeben hat."; $mvars["wysiwyg2:2"] = "Inhalt von dem, was der Redakteur im wysiwyg2:2 eingegeben hat."; </CMSPHP> <CMSPHP> echo $mvars['wysiwyg2:1']; echo '<hr />'; echo $mvars['wysiwyg2:2']; </CMSPHP> Sobald die Inhalte dann bei einem Seitenaufruf aus dem Cache entnommen werden, wird <CMSPHP> Teil ausgeführt und die Ausgabe im Frontend sieht dann folgendermassen aus: QUELLTEXT Inhalt von dem, was der Redakteur im wysiwyg2:1 eingegeben hat.
<hr /> Inhalt von dem, was der Redakteur im wysiwyg2:2 eingegeben hat. -------------------- Es wird, es wird...
|
|
|
Tue. 3. July 2007, 12:12
Beitrag
#7
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Björn ist der geilste!
Supi. Funzt. Außerdem ist das mal eine echt gute erklärung der Problematik! Werde das heut Abend mal ins Wiki posten. -------------------- |
|
|
Tue. 3. July 2007, 12:45
Beitrag
#8
|
|
Administrator Gruppe: Members Beiträge: 1.092 Mitglied seit: 16.06.2006 Wohnort: Köln Mitglieds-Nr.: 1 |
Kommunikationswissenschaftler können sich doch am Besten artikulieren. Das mit dem Wiki finde ich eine sehr gute Idee.
-------------------- Es wird, es wird...
|
|
|
Tue. 3. July 2007, 20:39
Beitrag
#9
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Ist drin. Habe allerdings weniger Kommunikationswissenschaftlich gearbeitet, sonder neinfach viel von deiner guten Erklärung kopiert
-------------------- |
|
|
Vereinfachte Darstellung | Aktuelles Datum: 28.4.24 - 13:52 |