PHP错误:函数名称必须是一个string
我在我的PHP代码的顶部添加了以下几行代码,但它给出了错误:
致命错误:函数名称必须是第2行上的/home/reg.php中的string
<?php if ($_COOKIE('CaptchaResponseValue') == "false") { header('location:index.php'); return; } ?>
我甚至试过:$ _COOKIE(“CaptchaResponseValue”)。 该cookie已成功设置并可用。 为什么我在使用$ _COOKIE时发生错误?
它应该是$_COOKIE['name']
,而不是$_COOKIE('name')
$ _COOKIE是一个数组,而不是一个函数。
在编程语言或脚本语言中使用括号通常意味着它是一个函数。
不过$_COOKIE
在php中不是一个函数,它是一个Array 。 要访问数组中的数据,可以使用方括号('['和']')来表示从哪个索引获取数据。 所以通过做$_COOKIE['test']
你基本上是这么说的:“给我从索引'testing'的数据。
现在,就你的情况而言,你有两种可能性:(1)要么查看它是否是假的 – 通过查看cookie内部或者(2)查看它是否不存在。
为此,您使用isset函数,基本上检查variables是否设置。
例
if ( isset($_COOKIE['test'] ) )
如果你想检查这个值是否为false,那么你可以这样做:
if ( isset($_COOKIE['test']) && $_COOKIE['test'] == "false" )
你可以记住的一件事是,如果第一个testing失败,如果它是AND ( &&
),它甚至不会检查下一个语句。
并解释为什么你实际上得到错误“function必须是一个string”,看看这个页面 。 这是关于在PHP中函数的基本创build,您必须记住的是,PHP中的函数只能包含某些types的字符,其中$
不是其中之一。 由于PHP中$
表示一个variables。
一个函数可能看起来像这样: _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; }
有关如何使用大括号的解释(除了上面的Filip Ekberg的有用答案),可以在简短的文章括号in Programming Languages中find 。
<?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); ?>