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ü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