Ответ 1
Вы имеете в виду
if (isset($_POST['sms_code']) == TRUE ) {
хотя, кстати, вы действительно имеете в виду
if(isset($_POST['sms_code'])) {
Я получаю эту ошибку, и я не могу сделать ее или хвост.
Точное сообщение об ошибке:
Неустранимая ошибка: нельзя использовать функцию return значение в контексте записи в /home/curricle/public _html/descarga/index.php on line 48
Строка 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 ) {
Вы используете parentheseis() для $_POST
, но вам нужны квадратные скобки []
:)
ИЛИ
if (isset($_POST['sms_code']) && $_POST['sms_code']) {
//this lets in this block only if $_POST['sms_code'] has some value
Правильный синтаксис (в конце у вас отсутствовали скобки):
if (isset($_POST['sms_code']) == TRUE ) {
^
p.s. вам не нужна часть == TRUE
, потому что BOOLEAN (true/false) уже возвращается.
вместо:
if (empty(get_option('smth')))
должен быть:
if (!get_option('smth'))
Это может произойти в более чем одном сценарии, ниже приведен список известных сценариев:
// 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.
Проблема в ()
вам нужно пойти []
if (isset($_POST('sms_code') == TRUE)
по
if (isset($_POST['sms_code'] == TRUE)
У меня также была аналогичная проблема, подобная вашей. Проблема в том, что вы используете старую версию php. Я обновился до PHP 5.6, и проблема больше не существует.
Другой сценарий, в котором эта ошибка возникает из-за синтаксической ошибки:
ucwords($variable) = $string;
i также столкнулся с этой проблемой из-за ошибки синтаксиса. Использование "(" вместо "[" в индексе массива:
foreach($arr_parameters as $arr_key=>$arr_value) {
$arr_named_parameters(":$arr_key") = $arr_value;
}
Функция tracker_printcomments ($ issueid) { глобальные $CFG, $DB;
$comments = $DB->get_records('tracker_issuecomment', array('issueid' => $issueid), 'datecreated');
//print_object($issueid);
//print_object ($ comments); $ Cmnt = ''; if ($ comments) {
foreach ($comments as $comment)
{
$user = $DB->get_record('user', array('id' => $comment->userid));
$cmnt .= '<tr>';
$cmnt .= '<td valign="top" class="commenter" width="30%">';
$cmnt .= tracker_print_user($user); //2
$cmnt .= '<br/>';
$cmnt .= '<span class="timelabel">'.userdate($comment->datecreated).'</span>';
$cmnt .= '</td>';
$cmnt .= '<td colspan="3" valign="top" align="left" class="comment">';
//echo '<td colspan="3" valign="bottom" align="left" class="alinks">' ;
if($comment->attachmentid)
$attachment= $DB->get_records_sql("SELECT * FROM {files} WHERE filename != '.' AND itemid =$comment->attachmentid");
$cmnt .= $comment->comment;
//print_object($attachment);
//echo '<span colspan="3" valign="bottom" align="left" class="alinks">';
if(!empty($attachment))
{
$out = array();
$fs = get_file_storage();
foreach($attachment as $attachments)
{
$files = $fs->get_area_files($attachments->contextid, 'user', 'draft',$comment->attachmentid, 'id', false);
}
foreach($files as $file)
{
$filename = $file->get_filename();
$ctxid = $file->get_contextid();
$component = $file->get_component();
$itemid = $file->get_itemid();
$url = $CFG->wwwroot."/draftfile.php/$ctxid/user/draft/$itemid/$filename";
$out[] = html_writer::link($url, $filename);
}
$br = html_writer::empty_tag('br');
$cmnt .= implode($br, $out);
}
//$cmnt= $comment->comment;
// $cmnt= '</span>';
$cmnt .= '</td>';
$cmnt .= '</tr>';
}
}
return $cmnt;
}
Am также получает ту же ошибку для этой функции
Невозможно использовать возвращаемое значение функции в контексте записи