Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

 
Reply to this topicStart new topic
> Bah, immer beim zweiten aufruf PHP Error?
saschapi
Beitrag 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 sad.gif


--------------------
Go to the top of the page
 
+Quote Post
Olaf
Beitrag 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...


--------------------
Gruß Olaf aus Ohorn

Lieber spät und richtig als nie und falsch.
Go to the top of the page
 
+Quote Post
saschapi
Beitrag 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... wink.gif Aber danke für den Hinweis. Erstmal muss ich aber das ganze überhaupt zum laufen bringen bevor es ans finetuning geht! wink.gif


--------------------
Go to the top of the page
 
+Quote Post
bjoern
Beitrag 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...
Go to the top of the page
 
+Quote Post
saschapi
Beitrag 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



ZITAT(bjoern @ Mon. 2. July 2007, 12:44) *
Einfachste und böseste Möglichkeit: Cachecontrolmodul auf der Seite benutzen, mit Cachezeit von 0.



Wieso ist das so böse? huh.gif


--------------------
Go to the top of the page
 
+Quote Post
bjoern
Beitrag 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. smile.gif

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...
Go to the top of the page
 
+Quote Post
saschapi
Beitrag 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! wink.gif

Supi. Funzt.

Außerdem ist das mal eine echt gute erklärung der Problematik! Werde das heut Abend mal ins Wiki posten. smile.gif


--------------------
Go to the top of the page
 
+Quote Post
bjoern
Beitrag 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. tongue.gif Das mit dem Wiki finde ich eine sehr gute Idee. smile.gif


--------------------
Es wird, es wird...
Go to the top of the page
 
+Quote Post
saschapi
Beitrag 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 wink.gif


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 28.4.24 - 18:16

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.