CMS_VALUE default wert

Gesperrt
lynx
Beiträge: 9
Registriert: Do 14. Sep 2006, 11:10
Wohnort: Berlin
Kontaktdaten:

CMS_VALUE default wert

Beitrag von lynx »

hallo

eigentlich ist das ein simples modul. es soll unter konfigurieren ein auswahl menü zur verfügung stellen. man wählt den artikel aus und schon wird darauf ein link generiert. falls aber noch nichts ausgewählt wurde, kommt folgender fehler:
Parse error: syntax error, unexpected ';' in /home/share/www/seitz/cms/front_content.php(792) : eval()'d code on line 142
liegt wohl einfach daran dass die zuweisungen fehlschlagen, da die CMS-variablen leer sind.

Code: Alles auswählen

$id_cat = CMS_VALUE[10];
$id_catart = CMS_VALUE[11];
wie kann ich einfach überprüfen, ob diese CMS-variablen gesetzt sind oder wie weise ich ihnen einen default 0 wert zu ?

gruß
lynx

PS: wenn nach so nem modul bedarf besteht, poste ich es natürlich gerne wenn es bugfei ist :)
Die verückten und ihre Autos:
CarPC-Forum
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Versuch doch mal, Anführungszeichen um die CMS_VALUE[] zu setzen.

Eine Default-Zuweisung sollte doch so ganz einfach gehen:

Code: Alles auswählen

$value = "CMS_VALUE[1]";
if (! $value) $value = "default";
lynx
Beiträge: 9
Registriert: Do 14. Sep 2006, 11:10
Wohnort: Berlin
Kontaktdaten:

Beitrag von lynx »

ok danke, das funktionniert.

aber gibts nicht doch ne funktion womit man CMS-variablen auf ihre gültigkeit prüfen kann?

PS: super fixe antwort danke danke :D
Die verückten und ihre Autos:
CarPC-Forum
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

lynx hat geschrieben:aber gibts nicht doch ne funktion womit man CMS-variablen auf ihre gültigkeit prüfen kann?
Da nur du weißt, wann die Variablen gültig sind, wäre eine solche Funktion schon recht schwierig zu realisieren.
lynx
Beiträge: 9
Registriert: Do 14. Sep 2006, 11:10
Wohnort: Berlin
Kontaktdaten:

Beitrag von lynx »

ne das weiß ich eben nicht, siehst du ja im obigen beispiel.

deswegen ne funktion, die nachschaut ob die var gesetzt ist ...
muss halt contenido intern passieren.

nen kleiner hack wäre halt:

Code: Alles auswählen

$var = "CMS_VALUE[1]";
if (strlen($var > 0))
{ 
    //var gesetzt ...
}
aber wäre halt klasse wenn contenido sowas anbietet, da diese cms-variablen halt nen contenido-feature sind.
Die verückten und ihre Autos:
CarPC-Forum
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Du kriegst das doch anscheinend auch so hin. Es kommt halt immer auf das Modul an und wie dort Input und Output aussehen. Da du das als Modulschreiber erledigst, liegt es auch in deiner Hand, was vom Input beim Output ankommt.

Aber wie soll Contenido erkennen, was richtig ist?

Es kann durchaus Module geben, bei denen eine leeres CMS_VALUE[] Sinn macht. Bei anderen steht dann dort ein Datum drin in einem bestimmten Format usw.

Also nochmal die Frage: wie soll Contenido das erkennen?

=> Das ist Sache des Modulprogrammierers. Schau dir dazu auch mal "docs/techref/modules/writing.modules.html" an.
lynx
Beiträge: 9
Registriert: Do 14. Sep 2006, 11:10
Wohnort: Berlin
Kontaktdaten:

Beitrag von lynx »

ich seh schon wir sind da sehr ungleicher meinung. vielleicht liegts auch noch an meiner mangelnden erfahrung :)

danke für die hilfe
Die verückten und ihre Autos:
CarPC-Forum
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

nein das problem was dodger auszudrücken versucht ist folgendes:
der variableninhalt der CMS_VARS kann unterschiedlich ausschauen. z.b. nur zahlen 0-99999 dabei wäre 0 in der programmiersprache sowas wie nicht gesetzt, wäre aber durchaus je nach modul ein gültiger wert. wenn du in dem feld nur alphanumerische zeichen setzen würdest (a-z) das feld aber jetzt auch eine zahl enthält, wäre das ein ungültiger wert. wie also soll diese funktion herausfinden, welcher variablenwert jetzt der korrekte ist, wenn es nur eine globale funktion gibt? daher ist es aufgabe des modulprogrammierers diese plausibilitätskontrolle durchzuführen, der in dem fall du bist, da ich in meinem modul vll. ganz andere variablen-inhalte benötige, die z.b. standard vordefiniert den wert false verlangen. ausserdem gilt auch hier das sprichwort: traue nur deinem eigenen code und keinem anderen. damit fährt man sicherheitstechnisch auf jeden fall besser. setzt allerdings voraus, dass man ahnung hat was man tut
lynx
Beiträge: 9
Registriert: Do 14. Sep 2006, 11:10
Wohnort: Berlin
Kontaktdaten:

Beitrag von lynx »

stese hat geschrieben:nein das problem was dodger auszudrücken versucht ist folgendes:
der variableninhalt der CMS_VARS kann unterschiedlich ausschauen. z.b. nur zahlen 0-99999 dabei wäre 0 in der programmiersprache sowas wie nicht gesetzt, wäre aber durchaus je nach modul ein gültiger wert. wenn du in dem feld nur alphanumerische zeichen setzen würdest (a-z) das feld aber jetzt auch eine zahl enthält, wäre das ein ungültiger wert. wie also soll diese funktion herausfinden, welcher variablenwert jetzt der korrekte ist, wenn es nur eine globale funktion gibt?
ich will doch nur auf NULL/Nichts checken, keine komplexe kontrolle ob gültige zeichen oder nicht. die methode muss ja nicht checkvalid heissen, checknull tuts doch auch. da ist keine aussage vorhanden obs gültig ist oder nicht und damit KÖNNTE man herausfinden ob der wert gesetzt wurde oder nicht.
und für meine zwecke: wie wärs mit checkValidArticleID?

da ich aber jetzt weiß, das gibs alles net, muss ich mich mit meinen lösungen begnügen.
stese hat geschrieben:ausserdem gilt auch hier das sprichwort: traue nur deinem eigenen code und keinem anderen. damit fährt man sicherheitstechnisch auf jeden fall besser. setzt allerdings voraus, dass man ahnung hat was man tut
contenido ... hassu selbst programmiert??? :shock:
ich hab den gründer gefunden, lasst uns feiern Bild
ich glaub die aussage ist hier falsch!
Die verückten und ihre Autos:
CarPC-Forum
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

nein habe es nicht selbst programmiert, das galt eher für die module. aber ich kann gut genug code lesen um zu sagen, dass passt oder das passt nicht. auch contenido hat so seine ecken - da gebe ich dir recht, aber das schlimmste tor für die sicherheit sind module, weil die eben jeder schreiben kann, wobei im core eine eher kleine gemeinde rumschreibt.

dein check ob emtpy oder nicht geht z.b. so:

Code: Alles auswählen

$value = "CMS_VALUE[1]";
if (empty($value) || strlen(trim($value)) == 0 ) {
  // leer
  $value = 'default wert';
}
wenn du eine artikelid suchst und setzt in cms var, würde ich zusätzlich noch auf integer wert prüfen:

Code: Alles auswählen

$value = "CMS_VALUE[1]";
if (empty($value) || strlen(trim($value)) == 0 || (int)$value == 0 ) {
  // leer
  $value = 'default wert';
}
lynx
Beiträge: 9
Registriert: Do 14. Sep 2006, 11:10
Wohnort: Berlin
Kontaktdaten:

Beitrag von lynx »

jo was mich an der sache halt stört, ist die geschichte dass man den wert immer als string zuweisen muss, obwohl es in meinem fall 100% nen int ist.

Code: Alles auswählen

$value = "CMS_VAR[1]"; 
Ich bin halt der Meinung dass nen interner check, ob die variable notnull oder eine gültige artikel-id ist, schneller & effektiver als die Lösung aus deinem post.
Die verückten und ihre Autos:
CarPC-Forum
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

lynx hat geschrieben:Ich bin halt der Meinung dass nen interner check, ob die variable notnull oder eine gültige artikel-id ist, schneller & effektiver als die Lösung aus deinem post.
Der Meinung kannst du ja sein, hast auch ein Recht auf diese. Das tut leider in diesem Fall nichts dazu, dass du eben nicht Recht hast.

Außerdem macht es, wie stese oben schon angemerkt hat und du anscheinend falsch verstehen wolltest, es durchaus Sinn, dass sich der Modulprogrammierer mit solchen Dingen auseinandersetzt.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ich möchte dann doch noch ein wenig Aufklärungsarbeit leisten: Die CMS_VALUE-Werte werden ganz einfach komplett ersetzt. Weisen sie keinen Wert auf, steht da:

$Value = ;

Und das ist einfach ein Fehler im PHP-Konstrukt. Daher auch die Anführungszeichen.

Geschlossen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Gesperrt