Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过命令行将GET/POST参数传递给php_Php_.net_Command Line - Fatal编程技术网

通过命令行将GET/POST参数传递给php

通过命令行将GET/POST参数传递给php,php,.net,command-line,Php,.net,Command Line,我会原谅我自己,因为我很肯定会有一些明显的解决方案或答案已经存在,但经过相当广泛的搜索,我就是找不到它 我正在开发一个简化的web服务器,作为.net中的一个项目。我要做的是为每个HTML请求调用php.exe,以执行文件中的任何php代码,然后将结果返回到服务器,并将其提供给客户端 这在不传递GET/POST参数的情况下非常简单,但我找不到实现这一点的方法 现在,我把它作为我的函数,通过命令行编写对php的调用 Public Shared Function phpparse(ByVal req

我会原谅我自己,因为我很肯定会有一些明显的解决方案或答案已经存在,但经过相当广泛的搜索,我就是找不到它

我正在开发一个简化的web服务器,作为.net中的一个项目。我要做的是为每个HTML请求调用php.exe,以执行文件中的任何php代码,然后将结果返回到服务器,并将其提供给客户端

这在不传递GET/POST参数的情况下非常简单,但我找不到实现这一点的方法

现在,我把它作为我的函数,通过命令行编写对php的调用

Public Shared Function phpparse(ByVal requesttype As String, ByVal argnames() As String, ByVal argvals() As String)
    Dim proc As Process = New Process
    proc.StartInfo.FileName = "php\php.exe"
    Dim B As New System.Text.StringBuilder
    B.Append("-B ""$_")
    B.Append(requesttype & " = array(")
    For i As Integer = 0 To argnames.Length - 1
        B.Append("'" & argnames(i) & "' => '" & argvals(i) & "', ")
    Next
    B.Remove(B.Length - 2, 2)
    B.Append(");"" -F script.php")
    InputBox("", "", B.ToString)
    proc.StartInfo.Arguments = B.ToString
    proc.StartInfo.UseShellExecute = False
    proc.StartInfo.RedirectStandardOutput = True
    proc.StartInfo.CreateNoWindow = True
    proc.Start()
    Return proc.StandardOutput.ReadToEnd
End Function
返回如下内容:

-B "$_GET = array('name' => 'John', 'email' => 'john.doe@no.com');" -F script.php
<?php    
if (isset($argv)) {
    echo $argv[1]." ".$argv[2];
}
?>
应该调用以下测试php脚本:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html> 

欢迎
您的电子邮件地址是:

但是它在尝试用php读取答案时遇到了困难。您可以这样读取参数:

-B "$_GET = array('name' => 'John', 'email' => 'john.doe@no.com');" -F script.php
<?php    
if (isset($argv)) {
    echo $argv[1]." ".$argv[2];
}
?>

这会回来的

约翰。doe@no.com

我真的不明白如何发送命令行参数。 您应该像这样运行php

johnjohn.exe。doe@no.com


我找到了解决这个问题的办法。我仍然在寻找一个合适的解决方案,但我现在可以解决这个问题

调用PHP CLI的参数应为

-r“$arrayname=array('arraypar1'=>'arrayval1','arraypar2'=>'arrayval2',);需要一次('C:\fullroutetofile\script.php')


似乎不能同时调用-B和-f,但require_once可以让您绕过这一点

谢谢你的意见。我知道我可以像那样传递参数,但我更愿意找到一个不强迫我(或用户)重写php代码的解决方案。“-B”部分应该创建$\u GET数组,就像我刚刚将整个html请求传递给php一样,但显然不是这样