Ich bekomme diesen Fehler und kann ihn nicht richtig beantworten.
Die genaue Fehlermeldung lautet:
Schwerwiegender Fehler: Der Funktionsrückgabewert kann nicht im Schreibkontext in /home/curricle/public_html/descarga/index.php in Zeile 48 verwendet werden
Zeile 48 ist:
if (isset($_POST('sms_code') == TRUE ) {
Weiß jemand was los ist ???
PS Hier ist die volle Funktion, falls es hilft:
function validate_sms_code() {
$state = NOTHING_SUBMITED;
if (isset($_POST('sms_code') == TRUE ) {
$sms_code = clean_up($_POST('sms_code'));
$return_code = get_sepomo_code($sms_code);
switch($return_code) {
case 1:
//no error
$state = CORRECT_CODE;
break;
case 2:
// code already used
$state = CODE_ALREADY_USED;
break;
case 3:
// wrong code
$state = WRONG_CODE;
break;
case 4:
// generic error
$state = UNKNOWN_SEPOMO_CODE;
break;
default:
// unknown error
$state = UNKNOWN_SEPOMO_CODE;
throw new Exception('Unknown sepomo code: ' . $return_code);
break;
}
} else {
$state = NOTHING_SUBMITED;
}
dispatch_on_state($state);
}
Was meinen Sie
if (isset($_POST['sms_code']) == TRUE ) {
obwohl du übrigens wirklich meinst
if(isset($_POST['sms_code'])) {
Dies passiert auch, wenn bei einer Funktionsrückgabe leer verwendet wird:
!empty(trim($someText)) and doSomething()
weil leer keine Funktion, sondern ein Sprachkonstrukt ist (nicht sicher) und nur Variablen akzeptiert:
Richtig:
empty($someVar)
Falsch:
empty(someFunc())
Seit PHP 5.5 unterstützt es mehr als Variablen. Wenn Sie es jedoch vor 5.5 benötigen, verwenden Sie trim($name) == false
. From leere Dokumentation .
if (isset($_POST('sms_code') == TRUE ) {
ändern Sie diese Zeile in
if (isset($_POST['sms_code']) == TRUE ) {
Sie verwenden Klammern () für $_POST
aber du wolltest eckige Klammern []
:)
OR
if (isset($_POST['sms_code']) && $_POST['sms_code']) {
//this lets in this block only if $_POST['sms_code'] has some value
anstatt von:
if (empty(get_option('smth')))
sollte sein:
if (!get_option('smth'))
Richtige Syntax (am Ende fehlten Klammern):
if (isset($_POST['sms_code']) == TRUE ) {
^
p.s. du brauchst nicht == TRUE
part, da BOOLEAN (true/false) bereits zurückgegeben wird.
Dies kann in mehreren Szenarien vorkommen. Nachfolgend finden Sie eine Liste bekannter Szenarien:
// calling empty on a function
empty(myFunction($myVariable)); // the return value of myFunction should be saved into a variable
// then you can use empty on your variable
// Verwenden von Klammern, um auf ein Element eines Arrays zuzugreifen, und Klammern, um eine Funktion aufzurufen
if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)
Dies kann auch ausgelöst werden, wenn wir versuchen, das Ergebnis einer der folgenden Funktionen zu erhöhen:
$myCounter = '356';
$myCounter = intVal($myCounter)++; // we try to increment the result of the intVal...
// like the first case, the ++ needs to be called on a variable, a variable should hold the the return of the function then we can call ++ operator on it.
Ich hatte auch ein ähnliches Problem wie deins. Das Problem ist, dass Sie eine alte PHP-Version verwenden. Ich habe ein Upgrade auf PHP 5.6 durchgeführt und das Problem besteht nicht mehr.
Das Problem liegt in der ()
du musst gehen []
if (isset($_POST('sms_code') == TRUE)
durch
if (isset($_POST['sms_code'] == TRUE)
Ein weiteres Szenario, in dem dieser Fehler aufgrund eines Syntaxfehlers ausgelöst wird:
ucwords($variable) = $string;
ich habe auch dieses Problem aufgrund eines Syntaxfehlers. Verwenden Sie "(" anstelle von "[" im Array-Index:
foreach($arr_parameters as $arr_key=>$arr_value) {
$arr_named_parameters(":$arr_key") = $arr_value;
}