Deutscher Support > vlibTemplate, vlibMimeMail, vlibDate

If Anweisungen verknüpfen

(1/1)

alexander-schwarz:
Hallo zusammen,

ich arbeite mich gerade in vlib ein würde gerne wissen, ob es möglich ist IF Anweisungen zu schachteln.
Also wenn Benutzername== OR Passwort == dann Fehlermeldung

Ich habs derzeit in php gelöst:


--- Code: ---if ($_POSTuser] == "" or $_POSTpasswort] == ""){
       $tmpl->setvar(index_noinput, "1");
}
--- End code ---

in der html:

--- Code: ---<tmpl_if name=index_nouser op=== value=1>
 Bitte alle Felder ausfüllen
</tmp_if>
--- End code ---

Gibts da etwas besseres?

Viele Grüße
Alexander Schwarz

ClausVB:
Das ist meiner Meinung nach genau richtig gelöst. Perfekt richtig würde ich sogar sagen, wenn man vom PHP-Teil absieht, denn Formularvariablen sollten validiert werden.

Das scheinst du noch nicht zu machen, oder?


--- Code: ---<?php
  if (preg_match(/[a-zA-Z0-9_\\.-]+@[a-zA-Z0-9_\\.-]+/, $_POST[mail]))
  {
    $mail = $_POST[mail];
  }
  else
  {
    exit(Mail-Adresse ist syntaktisch inkorrekt. Bitte geben sie eine g&uuml;ltige Mail-Adresse an, danke!);
  }
?>
--- End code ---

Wenn dir das zu aufwändig (unklug :-) ist oder es ums Intranet geht, dann reicht ein prüfen mit "empty()". So wie du die Validirung machst ist es Murks, aber von der vLIB-Seite her perfekt. :)

(Komplexe) Logik gehört in den PHP-Code, nicht ins Template.

Gruß
Claus

alexander-schwarz:
Herzlichen Dank für deine Antwort.

Ich werde deine Vorschläge berücksichtigen. Ich hoffe, dass ich bei der nächsten Frage, die sich jetzt gestellt hat nicht so sehr in die PHP Schiene abtriffte.

Ich prüfe quasie folgendes:

1)  Wurden benutzername und passwort ausgefüllt
2) gibt es den Benutzername in der DB
3) entspricht das eingegebene Passwort, dem in der DB

Früher sah das so aus:
zu 1)

--- Code: ---if($benutzer=="" or $passwort==""){
 Ausgabe Fehlermeldung
 exit;
}

--- End code ---

zu 2)

--- Code: ---if( md5($passwort) != $row[passwort]){
 Ausgabe Fehlermeldung
 exit;
}

--- End code ---

usw.

Problem ist, dass im html Teil nicht mehr das exit unterstützt - ist ja php. Wenn ich im php ein exit reinbaue kommt es nicht mehr zum parse


--- Code: ---if ($_POSTuser] == "" or $_POSTpasswort] == ""){
       $tmpl->setvar(index_noinput, "1");
       exit;
}

--- End code ---

Nachdem das Formular abgeschickt wurde, wird in mehreren Instanzen die logininformationen geprüft - umgesetzt mit <tmpl_if>. Wenn aber vor dem end if kein exit steht, wird die gesamte Seite ausgeführt, was nicht so sehr Sinn macht.

Hat da jemand einen Tipp wie man das besser machen kann?

Besten Dank vorab
Alex

ClausVB:
Hallo Alex!


--- Quote ---Ich werde deine Vorschläge berücksichtigen.
--- End quote ---

Danke! Es ist aber in Support-Foren so üblich, dass du ZUERST die Vorschläge umsetzt und DANACH erneut Source-Code postest. Meine Änderungen sind bei dir noch nicht umgesetzt. Ich bitte dich das zu tun.

Den Satz:

"Problem ist, dass im html Teil nicht mehr das exit unterstützt - ist ja php. Wenn ich im php ein exit reinbaue kommt es nicht mehr zum parse"

verstehe ich nicht richtig.

Kannst du Ausgabe A und B posten, bitte? Dann kann ich nämlich den Unterschied sehen. Aber zuerst die deinen Post von eben mit den Änderungen (Validierung oder "empty()") im Quellcode versehen.


--- Quote ---Wenn aber vor dem end if kein exit steht, wird die gesamte Seite ausgeführt, was nicht so sehr Sinn macht.
--- End quote ---
Dann musst du dir verschiedene Templates bauen, die je nach Status (IF) genau dann zum Zuge kommen, wenn du sie brauchst. Also wenn Bedingung A und B erfüllt sind, dann Template X, wenn Bedingung A, B und C erfüllt sind, dann Template Y.

Gruß
Claus

EDIT: Ändere bitte "$row[passwort]" in "$rowpasswort]", danke!

Navigation

[0] Message Index

Go to full version