AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Aus if-Anweisung springen

Ein Thema von TheMiller · begonnen am 25. Aug 2009 · letzter Beitrag vom 25. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

[PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:13
Hallo,

nach langer (Urlaubs-)Zeit, bin ich mal wieder hier. Und das gleich mit einer Frage

Ich programmiere gerade eine Seite in PHP. PHP an sich kann ich auch ganz gut, aber ich habe gerade eine Stil-Frage.

Und zwar prüfe ich viele verschiedene Dinge, wenn ich ein ausgefülltes Formular zugesendet bekomme. Nun möchte ich bei einem Fehler die weiteren Prüfungen abbrechen und mit dem Ausgeben der Fehlermeldung und der restlichen Seite fortfahren.

Es sieht ungefähr so aus:

Code:
if(isset($_POST['speichern'])) {

   $username = $val->checkText('Username', $_POST['username'], 3, 15);
   
   //Hier nicht validieren, da md5 benutzt wird.
   $pass1 = $_POST['pass1'];
   $pass2 = $_POST['pass2'];

   if($pass1 !== $pass2) {
     addFehler('Passwort', 'Die Passwörter stimmen nicht überein');
     //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!!
   }

   if($pass1 == "" || $pass1 == NULL) {
     addFehler('Passwort', 'Das Passwort darf nicht leer sein');
     //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!!
   }

   $user = new user();
   
   $userdaten = array("username" => $username, "passwort" = md5($pass1));
   $user->insertUser(TABLE_USER, $userdaten);
   addMeldung('', 'Die Registrierung war erfolgreich');
}

$engine->showTemplate('registrierung'');
Klar könnte ich eine Kontrollvariable ($err = true / $err = false) anlegen, aber dann müsste ich immer ihren Wert prüfen, es ist viel Schreibarbeit und irgendwie unprofessionell....

Gibt's eine andere Lösung?

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:23
Hi,

wie wäre es mit Else-If?

Code:
if(isset($_POST['speichern'])) {

   $username = $val->checkText('Username', $_POST['username'], 3, 15);
   
   //Hier nicht validieren, da md5 benutzt wird.
   $pass1 = $_POST['pass1'];
   $pass2 = $_POST['pass2'];

   if($pass1 !== $pass2) {
     addFehler('Passwort', 'Die Passwörter stimmen nicht überein');
     //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!!
   }
   else if($pass1 == "" || $pass1 == NULL) {
     addFehler('Passwort', 'Das Passwort darf nicht leer sein');
     //HIER AUS DER IF RAUSSPRINGEN - EXIT GEHT NICHT, WEGEN DEM ANZEIGEN DES TEMPLATES!!!!!
   }
   else {
     $user = new user();
   
     $userdaten = array("username" => $username, "passwort" = md5($pass1));
     $user->insertUser(TABLE_USER, $userdaten);
     addMeldung('', 'Die Registrierung war erfolgreich');
  }
}

$engine->showTemplate('registrierung'');
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:27
Ok das wäre eine Lösung (bei kleinen Formularen). Mein Formular ist aber größer (viel größer) - ich habe es hier nur gekürzt.

Oder kann man else-if auch intelligent bei großen Formularen (oder Prüfungen generell) anwenden und meinen gewünschten Effekt erreichen?

Ich hätte halt gerne was wie "exit_if()"... break / continue etc. funktioniert leider nicht.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:28
wie wärs mit
Code:
throw new Exception()
mit einem dazugehörigen Exception-Handler kannst Du die Meldung auch schön formatiert ausgeben.

Viele Grüße+
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:32
Ich hab's mir fast gedacht... Das ist jetzt wirklich Neuland.

Ich habe mir eine Funktion gebaut, die das "Fehlermeldungen"-Array ausgibt und schön positioniert anzeigt. Das wäre ja jetzt quasi überfüllig, oder?

Naja, ich schau mir das erstmal an.

Danke!
  Mit Zitat antworten Zitat
iGoA

Registriert seit: 9. Jul 2007
69 Beiträge
 
#6

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:40
Oder Du baust den ganzen Befehlsblock in eine Funktion und bei einem Abbruch trägst Du "return false" ein. Am Ende ein "return true". Dann kannst Du beim IF diese Funktion aufrufen und prüfen, ob sie durchgelaufen ist oder nicht.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#7

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 10:47
@iGoA: Sehr gut. So wird's gemacht! Schau mal, ich habe einige Klassen geschrieben, die es genauso machen - warum kam ich da grad net selbst drauf.... vllt. weil's keine Klasse ist?

Wie auch immer - coole Idee - wird umgesetzt

Die Exceptions und Error_Handler scheinen mir ein wenig mit Kanonen auf Spatzen geschossen.

Danke an alle!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 19:07
Andere Alternative:
Code:
switch (false) {
  case $pass1 == $pass2:
    // Code
    break;
 
  case !empty($pass2):
    // Code
    break;
 
  default:
    // Code
    break;
}
Die einzelnen case-Teile werden natuerlich ausgewertet und der erste, der false ergibt wird abgearbeitet...ganz simples Konstrukt
Das Ganze kann man uebrigens auch mit switch (true) ausfuehren.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#9

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 19:20
Danke für die Antworten. Jetzt habe ich noch eine Stil-Frage dazu:

Ich sprach doch vorhin von meinem Fehlermeldungen-Array. Jeder Fehler der Auftritt, wird in das Array über die simple Funktion "addFehler" geschrieben.

Immer dann, wenn ich nicht möchte, dass spezieller Code ausgeführt wird, prüfe ich mit der simplen Funktion fehlerCount, ob Fehler aufgetreten sind.

Code:
function addFehler($feld, $msg) {
    global $fehler;
    $fehler[$feld] = $msg;
}

function addMeldung($feld, $msg) {
    global $meldungen;
    $meldungen[$feld] = $msg;
}

function fehlerCount() {
    return count($fehler);
}

////////////////
index.php
///////////////

[Prüfungen mit Fehler]

if(fehlerCount == 0) {
  $db->insertSQL.....
}

[Template anzeigen (und Fehler ausgeben)]
Kann man doch auch so lassen, oder ist das schlechter Stil?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#10

Re: [PHP] Aus if-Anweisung springen

  Alt 25. Aug 2009, 19:36
Diese globals sind absolut haesslicher Stil und die prozedurale Programmierung ist absolut nicht mehr zeitgemaess. Sorry wenns boese klingt, is aber so.

BTW, guck dir fuer zukuenftige Projekte mal PHP-Frameworks wie z.B. Symfony an, mach dort ein Tutorial und du wirst die Art der PHP-Programmierung wie du sie bisher gemacht hast relativ schnell verlassen

Greetz
alcaeus

[edit]Link zum Tutorial angepasst[/edit]
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz