我有这段代码:
<?php $myarray->appends(['action' => $_GET['desc']])->render() ?>
如果网址中有action
参数,那么我的代码也能正常运行。否则会抛出此错误消息:
未定义的索引:action(查看: /var/www/html/myweb/resources/views/mypage.blade.php)
所以我需要动态地执行此操作->appends(['action' => $_GET['desc']])
。像这样:
<?php
if ( isset($_GET['desc']) ) {
$append_param = "->appends(['action' => $_GET['desc']])";
} else {
$append_param = "";
}
$myarray.$append_param->render();
?>
但我非常确定我的代码无法正常工作......我戴的代码只是为了向您展示我的观点。
无论如何,任何人都可以告诉我如何以正确的方式做到这一点?
我试图做的就是:将action
参数附加到分页链接(如果它已经存在)。否则我不想追加它。
答案 0 :(得分:0)
您永远不应该从用户可控制的来源获取输入并执行它。这样做是一个主要的安全风险,它可能会在您的服务器中打开更多的安全漏洞,而不是在一生中进行补丁。
如果你真的必须这样做,你可以使用eval()
。但请,请确保您了解此安全隐患。
答案 1 :(得分:0)
我认为你只是在彻底地思考整个局势。 不必须将代码放在字符串中以有条件地执行它,您只需将其编写为代码本身。
没有关于你的班级内部如何运作的更多信息,最直接和最基本的方式是:
if ( isset($_GET['desc']) ) {
$myarray->appends(['action' => $_GET['desc']])->render()
} else {
$myarray->render();
}
答案 2 :(得分:-1)
你做不到。
首先,如果要检查数组中的有效键,请使用“array_key_exists(key,array)”,这是非常推荐的。
if(array_key_exists('dec',$ _ GET)){
然后,如果我理解,你想将数据“附加”到数组?这意味着为此数组中的键添加值。 这可以通过PHP轻松完成: $ array [$ key] = $ value;
对变量名称要非常小心: $ $ myArray的&append_param- GT;渲染(); 这没有任何意义,如果它是一个数组,你只应该使用[](或数组函数),但如果它是一个对象,你只能使用 - &gt;在它上面。