このエラーが発生しているので、頭や尾を確認できません。
正確なエラーメッセージは次のとおりです。
致命的エラー:48行目の/home/curricle/public_html/descarga/index.phpの書き込みコンテキストで関数の戻り値を使用できません
48行目は次のとおりです。
if (isset($_POST('sms_code') == TRUE ) {
誰もが何が起こっているか知っていますか???
PSこれが役立つ場合の完全な機能は次のとおりです。
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);
}
もしかして
if (isset($_POST['sms_code']) == TRUE ) {
ちなみにあなたは本当に意味する
if(isset($_POST['sms_code'])) {
これは、関数の戻り値で空を使用する場合にも発生します
!empty(trim($someText)) and doSomething()
emptyは関数ではなく言語構成体で(不明)、変数のみを受け取るためです。
右:
empty($someVar)
違う:
empty(someFunc())
PHP 5.5以降、変数以上のものをサポートしています。ただし、5.5より前に必要な場合は、trim($name) == false
を使用してください。 空のドキュメント から。
if (isset($_POST('sms_code') == TRUE ) {
この行を
if (isset($_POST['sms_code']) == TRUE ) {
$_POST
に括弧()を使用していますが、角括弧[]が必要でした
:)
OR
if (isset($_POST['sms_code']) && $_POST['sms_code']) {
//this lets in this block only if $_POST['sms_code'] has some value
の代わりに:
if (empty(get_option('smth')))
する必要があります:
if (!get_option('smth'))
正しい構文(最後に括弧がありません):
if (isset($_POST['sms_code']) == TRUE ) {
^
追伸BOOLEAN(true/false)がすでに返されているため、== TRUE
部分は必要ありません。
これは、複数のシナリオで発生する可能性があります。以下は、よく知られているシナリオのリストです。
// 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
//括弧を使用して配列の要素にアクセスし、括弧を使用して関数を呼び出します
if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)
これは、次のような関数の結果をインクリメントしようとしたときにもトリガーされる可能性があります。
$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.
私もあなたと同じような問題を抱えていました。問題は、古いphpバージョンを使用していることです。 PHP 5.6にアップグレードしましたが、問題はもうありません。
問題は()
にあり、[]
に行かなければなりません
if (isset($_POST('sms_code') == TRUE)
によって
if (isset($_POST['sms_code'] == TRUE)
このエラーが構文エラーのためにトリガーされる別のシナリオ:
ucwords($variable) = $string;
また、構文エラーが原因でこの問題に遭遇しました。配列インデックスで「[」の代わりに「(」を使用:
foreach($arr_parameters as $arr_key=>$arr_value) {
$arr_named_parameters(":$arr_key") = $arr_value;
}