Variable prüfen

Ich habe das ganze jetzt eingebaut weil ich durch einen Firefox Plugin festgestellt habe, dass man das Formular (Auswahl-Optionen) manipulieren kann.

Stichwort: Tamper

Durch diese kleine IF-Abfrage ist dies aber nicht mehr möglich.
 
Ich hätte da noch eine Frage.

Ist es möglich so etwas umzusetzen.

PHP:
if  ( !in_array($var1, array( 'PS','KW','HP' ) ) )  { 
    TREFFER
} 

if  ( !in_array($var2, array( '1','2','3' ) ) )  { 
        TREFFER
} 

Wenn (if) ein Treffer WAHR ist, dann mach dies und das.

?

Edit: Sorry für Doppelpost.
 
Zuletzt bearbeitet:
Abgesehen davon, dass du beide if Abfragen zu einer verknüpfen kannst (mit &&)
setze eine Variable vor den beiden if abfragen auf false. In beiden If Abfragen setzt du die Variable auf true. Danach kannst du prüfen ob die Variable true ist (also war mind. eine der beiden if Abfragen true).
 
Wie ich kann die IF-Abfragen verknüpfen? Kannst du mir vielleicht zeigen wie das geht?

Ich habe es aktuell so gelöst:

PHP:
if  ( !in_array($var1, array( 'PS','KW','HP' ) ) )  { 
$form = 'Form 1'; 
} 

if  ( !in_array($var2, array( '1','2','3' ) ) )  { 
$form = 'Form 2'; 
} 

if  ( !in_array($var4, array( 'a','b','c' ) ) )  { 
$form = 'Form 3'; 
}

PHP:
if (in_array($form, array('Form 1','Form 2','Form 3'))) {
       echo 'Das HTML-Formular wurde manipuliert.';
       exit();
   }

Das ganze funktioniert so aber ich hätte schon lieber eine Abfrage wo ich direkt feststellen kann welche Optionen manipuiert wurden.

Beispiel: Option 1 und 2 wurden manipuliert.
 
Wie wäre es damit.

PHP:
$errors=array();

if  ( !in_array($var1, array( 'PS','KW','HP' ) ) )  { 
  $errors[] = '$var1 wurde manipuliert.';
} 

if  ( !in_array($var2, array( '1','2','3' ) ) )  { 
  $errors[] = '$var2 wurde manipuliert.';
} 

if  ( !in_array($var4, array( 'a','b','c' ) ) )  { 
  $errors[] = '$var4 wurde manipuliert.';
} 

if (count($errors)) {
  echo implode('<br />', $errors);
} else {
  // Daten weiter verarbeiten
}
 
Das klappt schon fast ganz gut.

Nur würde ich gerne:

PHP:
if (count($errors)) {
  echo implode('<br />', $errors);
} else {
  // Daten weiter verarbeiten
}

ändern in:

PHP:
if (count($errors)) {
  $new_errors = "Manipuliert wurden - ".$errors."\n";
}

Leider gibt er mir nur "Array" aus.
 
Das klappt schon fast ganz gut.

Nur würde ich gerne:

PHP:
if (count($errors)) {
  echo implode('<br />', $errors);
} else {
  // Daten weiter verarbeiten
}

ändern in:

PHP:
if (count($errors)) {
  $new_errors = "Manipuliert wurden - ".$errors."\n";
}

Leider gibt er mir nur "Array" aus.
Im Prinzip steht die Lösung dafür schon in Napofis Post.
PHP:
if ( count( $errors ) ) {
  $new_errors = 'Manipuliert wurden - '.implode( ', ', $errors )."\r\n";
}

Gruß
 
Geht es auch das $errors nicht untereinander sondern nebeneinander verbunden mit &-Zeichen angezeigt werden?
Das Snippet was ich gepostet habe gibt die Errors kommagetrennt nebeneinander aus...

Mit & wäre es dann so:
PHP:
if ( count( $errors ) ) { 
  $new_errors = 'Manipuliert wurden - '.implode( ' & ', $errors )."\r\n"; 
}

Du solltest dich wirklich mit den Grundlagen befassen und bei Funktionen von PHP welche Du verwendest das Manual anschauen.
  1. http://php.net
  2. http://php.net/manual/de/

Gruß
 
Zurück