Author Topic: If Anweisungen verknüpfen  (Read 366 times)

0 Members and 1 Guest are viewing this topic.

Offline alexander-schwarz

  • Newbie
  • *
  • Posts: 2
If Anweisungen verknüpfen
on: Wed, 11. August 2010 - 11:19:59
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: [Select]
if ($_POSTuser] == "" or $_POSTpasswort] == ""){
       $tmpl->setvar(index_noinput, "1");
}

in der html:
Code: [Select]
<tmpl_if name=index_nouser op=== value=1>
 Bitte alle Felder ausfüllen
</tmp_if>

Gibts da etwas besseres?

Viele Grüße
Alexander Schwarz
Last Edit: Wed, 11. August 2010 - 13:10:22 by ClausVB

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: If Anweisungen verknüpfen
Reply #1 on: Wed, 11. August 2010 - 13:08:08
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: [Select]
<?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!);
  }
?>

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
Last Edit: Wed, 11. August 2010 - 13:11:58 by ClausVB

Offline alexander-schwarz

  • Newbie
  • *
  • Posts: 2
Re: If Anweisungen verknüpfen
Reply #2 on: Wed, 11. August 2010 - 22:00:09
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: [Select]
if($benutzer=="" or $passwort==""){
 Ausgabe Fehlermeldung
 exit;
}

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

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: [Select]
if ($_POSTuser] == "" or $_POSTpasswort] == ""){
       $tmpl->setvar(index_noinput, "1");
       exit;
}

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

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: If Anweisungen verknüpfen
Reply #3 on: Thu, 12. August 2010 - 14:37:16
Hallo Alex!

Quote
Ich werde deine Vorschläge berücksichtigen.

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.
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!
Last Edit: Thu, 12. August 2010 - 14:59:10 by ClausVB