IF-Abfrage in IF-Abfrage - Ausgrenzen?

Alice

Erfahrenes Mitglied
Hallo Leute.

In meinem Skript gibt es an einer Stelle ein interessantes Problem.

PHP:
if ($var_5 == 'Ja') {

   if(preg_match('/^[A-Z0-9]{180}$/', $text) { 

}
   else
{

   if(preg_match('/^[A-Z0-9]{280}$/', $text) {

}

Code Code Code Code Code
Code Code Code Code Code
Code Code Code Code Code
Code Code Code Code Code
Code Code Code Code Code

   }

Die IF-Abfrage (preg_match) wird erst ein paar 100 Zeilen später geschlossen. Auf Grund einiger Veränderungen am Skript, muss ich nun eine neue IF-Abfrage dazu bauen.

Könnte das Probleme geben? Ich meine jetzt z.B. auch Sicherheitsrelevante Probleme oder so ähnlich?

"Weiss" das Skript das die preg_match IF-Abfrage hier NICHT geschlossen werden soll? Oder gibt es für solche Probleme eine spezielle Vorgehensweise?
 
Du darfst nicht ein inneres IF nach dem äusseren schliessen. Das wirft den ganzen Code durcheinander.

Stufe für Stufe zuerst schliessen.

Vor allem intepretiert PHP das mit dem schliessen anderst als du. PHP sieht nur eine schliessende Klammer und schliesst damit den innersten if.
PHP:
//So meinst du das Script:
if($a){
	if($b){
		echo 1;
} //if($a) schliessen
	echo 2;
} //if($b) schliessen)

//Und so intepretiert PHP den Code
if($a){
	if($b){
		echo 1;
	} //if($b) schliessen)
	echo 2;
} //if($a) schliessen
 
Danke für die Antwort.

Dann muss ich mir wohl etwas anderes ausdenken.

Was hälst du davon?

PHP:
$erlaubte_zeichen = 'A-Z0-9';
$erlaubte_länge = '280';

if(preg_match('/^[$erlaubte_zeichen]{$erlaubte_länge}$/', $text) {

Die Variablen "$erlaubte_zeichen" und "$erlaubte_länge" wären dann natürlich Hardcoded im Skript.

Oder ist das zu unsicher?
 
Du kannst aber mit goto arbeiten. Das sorgt außerdem dafür, dass du in deinem Quelltext nicht mehr durchsiehst, wenn du nur genügend Sprungmarken verwendest.
 
Hi, das mit dem "goto" klingt interessant aber ich würde damit die Übersicht verlieren. Denn mein Skript ist schon ziehmlich lang.

Würde es mit meinem Beispiel nicht gehen?

PHP:
$erlaubte_zeichen = 'A-Z0-9';
$erlaubte_länge = '280';

if(preg_match('/^[$erlaubte_zeichen]{$erlaubte_länge}$/', $text) {
 
Wenn du dein Problem noch einmal genau definieren würdest, dann bestimmt. Momentan glaube ich einfach, dass du nicht weißt, wie du eine weitere Verschachtelungsebene einfügen sollst. Also quasi so hier:
Vorher
PHP:
if($omas_geburtstag === $heute) {
  echo 'Meine Oma hat heute Geburtstag';
} else {
  echo 'Meine Oma hat heute nicht Geburtstag';
}
Nachher
PHP:
if($omas_geburtstag === $heute) {
  if($ich_habe_zeit) {
    echo 'Ich besuch meine Oma heute, weil sie Geburtstag hat';
  } else {
    echo 'Ich besuch meine Oma heute nicht, obwohl sie Geburtstag hat';
  }
} else {
  echo 'Meine Oma hat heute nicht Geburtstag';
}
 
Wenn du dein Problem noch einmal genau definieren würdest, dann bestimmt. Momentan glaube ich einfach, dass du nicht weißt, wie du eine weitere Verschachtelungsebene einfügen sollst.

Das stimmt, ich weiss es wirklich nicht. Irgendwie bin ich auch in letzter Zeit nicht wirklich Aufnahmefähig. Also bitte seit mir nicht böse.

Auch wenn es hier nicht ins Thema gehört und eigentlich auch nicht in das Forum, möchte ich kurz an dieser Stelle erwähnen, dass ich mich Beruflich verändert (vorher KFZ-Mechatroniker in Fachrichtung Kommunikationstechnik und Bürokaufmann) habe und seit ein paar Monaten Selbstständig bin. Und die Selbstständigkeit verbraucht alle meine Reserven.

Zum Thema:
Nach ein paar Überlegungen wäre es mir doch lieber es so zu machen:
PHP:
$text = 'Ich mag PHP';

if ($var_5 == 'Ja') {
   $erlaubte_zeichen = 'A-Z0-9'; 
   $erlaubte_länge = '180';
}
   else
{
   $erlaubte_zeichen = 'A-Z0-9'; 
   $erlaubte_länge = '280';
}

if(preg_match('/^[$erlaubte_zeichen]{$erlaubte_länge}$/', $text) {  

Code Code Code
Code Code Code
Code Code Code

}

Aber nur wenn es auch Sicher ist.
 
Zuletzt bearbeitet:
Das weiss ich ja nicht. Hatte deswegen ja extra den Hinweis gegeben das es Hardcoded im Skript ist.

Also kein Problem?
 
Zurück