Я добавил несколько строк поверх моего PHP-кода, но он дает ошибку:
Неустранимая ошибка: имя функции должно быть строкой в /home/reg.php в строке 2
<?php if ($_COOKIE('CaptchaResponseValue') == "false") { header('location:index.php'); return; } ?>
Я даже пробовал: $ _COOKIE («CaptchaResponseValue»). Файл cookie успешно установлен и доступен. Почему он дает ошибку, когда я использую $ _COOKIE?
Это должно быть $_COOKIE['name']
, а не $_COOKIE('name')
$ _COOKIE – это массив, а не функция.
Использование скобок на языке программирования или языке сценариев обычно означает, что это функция.
Однако $_COOKIE
в php не является функцией, это Array . Чтобы получить доступ к данным в массивах, вы используете квадратные скобки ('[' и ']'), которые символизируют индекс для получения данных. Поэтому, делая $_COOKIE['test']
вы в основном говорите: «Дайте мне данные из теста« test ».
Теперь, в вашем случае, у вас есть две возможности: (1) либо вы хотите увидеть, является ли оно ложным, – просматривая куки-файл, либо (2) посмотрите, нет ли там даже этого.
Для этого вы используете функцию isset, которая в основном проверяет, установлена ли переменная или нет.
пример
if ( isset($_COOKIE['test'] ) )
И если вы хотите проверить, является ли значение ложным и оно установлено, вы можете сделать следующее:
if ( isset($_COOKIE['test']) && $_COOKIE['test'] == "false" )
Единственное, что вы можете иметь в виду, это то, что если первый тест завершится неудачно, он даже не будет проверять следующий оператор, если он есть AND ( &&
).
И чтобы объяснить, почему вы действительно получаете ошибку «Функция должна быть строкой», посмотрите на эту страницу . Речь идет о базовом создании функций в PHP, вы должны помнить, что функция в PHP может содержать только определенные типы символов, где $
не является одним из них. Так как в PHP $
представляет переменную.
Функция может выглядеть так: _myFunction _myFunction123 myFunction
и во многих других шаблонах, но смешение с такими символами, как $ и%, не будет работать.
Попробуйте квадратные скобки с помощью $_COOKIE
, а не скобки. Как это:
<?php if ($_COOKIE['CaptchaResponseValue'] == "false") { header('Location: index.php'); return; } ?>
Я также исправил ваш заголовок заголовка местоположения.
Если вы хотите узнать, установлен ли cookie … использовать
if (isset($_COOKIE['cookie']))
Это будет $_COOKIE['CaptchaResponseValue']
, а не $_COOKIE('CaptchaResponseValue')
В PHP.js $ _COOKIE – это функция 😉
function $_COOKIE(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return decodeURIComponent(c.substring(nameEQ.length,c.length).replace(/\+/g, '%20')); } return null; }
Полезное объяснение того, как используются фигурные скобки (в дополнение к полезному ответу Филиппа Экберга), можно найти в короткой статье « Скобки на языках программирования» .
<?php require_once '../config/config.php'; require_once '../classes/class.College.php'; $Response = array(); $Parms = $_POST; $Parms['Id'] = Id; $Parms['function'] = 'DeleteCollege'; switch ($Parms['function']) { case 'InsertCollege': { $Response = College::InsertCollege($Parms); break; } case 'GetCollegeById': { $Response = College::GetCollegeById($Parms['Id']); break; } case 'GetAllCollege': { $Response = College::GetAllCollege(); break; } case 'UpdateCollege': { $Response = College::UpdateCollege($Parms); break; } case 'DeleteCollege': { College::DeleteCollege($Parms['Id']); $Response = array('status' => 'R'); break; } } echo json_encode($Response); ?>