2017-01-25 5 views
0

Versuchen Sie, den Benutzer eines Admin-Steuerfelds eine PHP-if-Anweisung aus einem HTML-Formular auszuführen.Senden Sie PHP if-Anweisung über das HTML-Formular

Da das Control Panel mit einer Software von Drittanbietern integriert ist, haben wir nur eine Möglichkeit, die Daten auszuwählen - unter Verwendung von PHP-Variablen.

Ein Beispiel der if-Anweisung, die

$contact_details['Contacted'] == "Yes" 

der Benutzer eine Schnittstelle haben wird ein HTML-Eingabefeld mit dem vollen if-Anweisung z.B. füllt über das Formular gesendet würde wird, die

$contact_details['Contacted'] == "Yes" && $contact_details['Country'] == "UK" 

Wenn das Formular jedoch gebucht wird, filtert die if-Anweisung die Ergebnisse nicht ordnungsgemäß.

Es zeigt die Anweisung an, wie sie ausgeführt werden sollte, führt jedoch die Abfrage nicht aus.

Gibt es eine Möglichkeit, dies zum Laufen zu bringen, oder muss ich das anders machen?

+0

Erstellen Sie eine '$ mIfStatement'-Variable, und legen Sie sie als Zeichenfolge mit der gewünschten if-Anweisung fest. Dann ändere deine if-Anweisung 'if ($ _ POST [" ifstatement "] == $ mIfStatment)' –

+1

Wie ist das, wenn die Anweisung gepostet wurde? Als eine Schnur? Dann müssen Sie es durch 'eval()' ausführen, damit es als PHP geparst wird. _HINWEIS: _ Seien Sie vorsichtig bei der Verwendung von 'eval()'. Es wird _any_Befehl als PHP ausführen und wird als sehr unsicher angesehen. Es gibt normalerweise viel sicherere Wege, zu tun, was Sie versuchen zu tun. –

+0

Hinzufügen zu @Magnus Eriksson's Antwort über die eval() Methode. Sie können php.net/manual/en/function.eval.php oder www.w3schools.com/php/func_misc_eval.asp überprüfen. –

Antwort

2

Ihre If-Anweisung wird nicht ausgewertet. Sie müssen eval() verwenden, um es zu bewerten. Bitte kopieren Sie nicht nur dieses Beispiel gedankenlos:

<?php 
$foo = '$result = ' . $_POST["ifstatement"] . ';'; 
eval($foo); 
if ($result) { 
    // ... 
} 
?> 

Aber das ist ein wirklich schlechter Geruch-Code und es einen riesigen remote code execution Fehler erstellen, wenn Sie die Eingabe nicht richtig sanieren.

Also sollten Sie Ihren Ansatz überdenken, denn es wird eine bessere und sichere auf.

Verwandte Themen