nur eine statt zwei Fehlermeldungen anzeigen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

nur eine statt zwei Fehlermeldungen anzeigen

Beitrag von Dungeonwatcher »

Moin! 8)

Frage an die Profis. Wie muss folgender Code aussehen, damit bei leerem Feld "encryption_key" nur die erste Fehlermeldung "Empty_encryption_key" angezeigt wird? Aktuell wird zusätzlich auch die Meldung "Toshort_encryption_key" mit gemeldet. Das ist zwar nicht ganz falsch, denn kein Eintrag ist halt auch ein zu kurzer Eintrag, aber überflüssig anzuzeigen. 8)

Code: Alles auswählen

		$encryption_key = trim(htmlspecialchars($HTTP_POST_VARS['encryption_key']));
		{
			if ( empty($encryption_key) && $encrypt )
			{
				$error = TRUE;
			$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . $lang['Empty_encryption_key'];
			}
			if (( strlen($encryption_key) < 5) && $encrypt )
			{
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Toshort_encryption_key'];
			}
			if (( strlen($encryption_key) > 15) && $encrypt )
			{
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Tolong_encryption_key'];
			}
		}
Bye/2
Benutzeravatar
Emanuelle_1982
Mitglied
Beiträge: 535
Registriert: 06.03.2006 18:37
Wohnort: Nümbrecht & Siegen
Kontaktdaten:

Beitrag von Emanuelle_1982 »

wie wäre es mit

Code: Alles auswählen

if ( ( (strlen($encryption_key) < 5) && $encrypt ) &&  (strlen($encryption_key) != 0) )
das letzte fragt halt ab ob es nicht die länge 0 (also zu lang) ist

Möglichkeit 2:

Code: Alles auswählen

$encryption_key = trim(htmlspecialchars($HTTP_POST_VARS['encryption_key']));
      {
         if (( strlen($encryption_key) < 5) && $encrypt )
         {
              if ( empty($encryption_key) && $encrypt )
              {
                 $error = TRUE;
                 $error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . $lang['Empty_encryption_key'];
              }
              else
              {
                  $error = TRUE;
                  $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Toshort_encryption_key'];
               }
         }
         if (( strlen($encryption_key) > 15) && $encrypt )
         {
            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Tolong_encryption_key'];
         }
      }
hierbei wird erst überprüft ob die Länge kleiner 5 ist, wenn der String leer ist, dann empty, ansonsten to Short Fehlermeldung

PS: exceptions - nicht nötig, aber in dem Falle sehr praktisch
das solltest du aber erst mal in einem mini PHP Projekt probieren, wenn man nie damit gearbeitet hat, dann ist es gewöhnungsbedürftig - und es funktioniert leider erst in den 'neueren' PHP-5 Versionen
Link auf php.net: http://www.php.net/manual/de/language.exceptions.php

Liebe Grüße
Emma
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Hi! 8)

Super, das funktioniert bestens. DANKE

Ich habe die Variante 2 im Einsatz, denn hier rödelt PHP 5.2.0.

Den Link habe ich mir gleich mal gespeichert.

Nochmals DANKE :)
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Wieso nicht einfach

Code: Alles auswählen

      $encryption_key = trim(htmlspecialchars($HTTP_POST_VARS['encryption_key'])); 
      { 
         if ( empty($encryption_key) && $encrypt ) 
         { 
            $error = TRUE; 
         $error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . $lang['Empty_encryption_key']; 
         } 
         else if (( strlen($encryption_key) < 5) && $encrypt ) 
         { 
            $error = TRUE; 
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Toshort_encryption_key']; 
         } 
         else if (( strlen($encryption_key) > 15) && $encrypt ) 
         { 
            $error = TRUE; 
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Tolong_encryption_key']; 
         } 
      }
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Hi! 8)

So, oder so ähnlich, hatte ich es bereits versucht. Allerdings hat es nicht wirklich so funktioniert wie ich wollte. :oops:

Das ganze habe ich in die privmsg.php eingebaut um den "Private Message Encryption and Decryption" Mod aufzuwerten. Dieser Mod enthält leider ziemlich viele Fehler, welche ich mit diverser Hilfe nach und nach ausmerzen will. Bis auf einem richtigen und einem Schönheitsfehler ist mir das auch bisher gelungen.
Antworten

Zurück zu „Coding & Technik“