可以在php中同时使用GET和argv么

吃鱼不吃鱼尾巴
  • 34

看到一个web应用的php文件上写:

$act=$_GET['act'];
if ($act)
{
$act = $argv[1];
}

满脸问号啊???
哪位懂这种用法的给我讲讲,到处都搜不到啊。。。
谢谢啦!!!

回复
阅读 2.4k
5 个回答
无敌小笼包
  • 3.2k

有时您不能或不想安装php-cgi,您没有编辑php文件的选项可以将$_GET设置为传入的参数.

$act=$_GET['act'];
if ($act){
    $act = $argv[1];
}

您可以从您的php应用程序中的$argv数组访问您启动脚本的变量。第一个条目将是他们来自的脚本的名称

php -r '$_GET["key"]="value"; require_once("script.php"); 

这样可以避免更改您的php文件,并允许您使用plain php命令。如果你安装了php-cgi,一定要用这个

-r表示在以下字符串中运行php代码。您手动设置$_GET值,然后引用要运行的文件。

值得注意的是,您应该在正确的文件夹中运行此文件,通常但并不总是php文件所在的文件夹。Requires语句将使用您的命令的位置来解析相对的URL,而不是文件的位置

$_GET, 一般是存放query stringkey=>value数组, 原则上来说是只读的, 但是进行赋值也是可以的, 但是不提倡这么做.

正常来说$_GET和$argv不应该出现在一起,一个是web执行,一个是命令行执行,但刚才搜了下貌似通过php-cgi可以传递get,点击这里查看

$act=$_GET['act'];是获取url上的act=xxxx后面的字符串xxxx。$act = $argv[1]是获取了命令行中的第二个参数值。

这里代码的逻辑就是先从url获取参数,如果参数有值那么就重新赋值。所以这段代码最后$act就是$argv[1]的值,这个php文件只能用在命令行中调用!

建议楼主最好是改掉,不要混用,argv建议是在命令行用,get post request等等还是区分开用比较好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏