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; } 

通过http://phpjs.org/functions/setcookie:509

有关如何使用大括号的解释(除了上面的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); ?>