Seite 1 von 1

nur eine statt zwei Fehlermeldungen anzeigen

Verfasst: 03.02.2007 07:31
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

Verfasst: 03.02.2007 13:59
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

Verfasst: 03.02.2007 14:50
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 :)

Verfasst: 03.02.2007 14:53
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

Verfasst: 03.02.2007 15:39
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.