Ответ 1
Он должен быть $_COOKIE['name']
, а не $_COOKIE('name')
$_ COOKIE - это массив, а не функция.
Я добавил следующие строки в начало моего 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']
, вы в основном говорите: "Дайте мне данные из теста" index ".
Теперь, в вашем случае, у вас есть две возможности: (1) либо вы хотите увидеть, является ли это ложью - просмотрев куки файл, либо (2) посмотреть, нет ли там даже.
Для этого вы используете функцию isset, которая в основном проверяет, установлена ли переменная или нет.
Пример
if ( isset($_COOKIE['test'] ) )
И если вы хотите проверить, является ли значение ложным, и оно установлено, вы можете сделать следующее:
if ( isset($_COOKIE['test']) && $_COOKIE['test'] == "false" )
Одна вещь, которую вы можете иметь в виду, состоит в том, что если первый тест завершится неудачно, он даже не будет проверять следующий оператор, если он И (&&
).
И чтобы объяснить, почему вы действительно получаете ошибку "Функция должна быть строкой", посмотрите эту страницу. Что касается базового создания функций в 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;
}
Полезное объяснение того, как используются фигурные скобки (в дополнение к полезному ответу Филиппа Экберга), можно найти в короткой статье Parenthesis на языках программирования.
<?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);
?>