通过命令行将GET/POST参数传递给php
我会原谅我自己,因为我很肯定会有一些明显的解决方案或答案已经存在,但经过相当广泛的搜索,我就是找不到它 我正在开发一个简化的web服务器,作为.net中的一个项目。我要做的是为每个HTML请求调用php.exe,以执行文件中的任何php代码,然后将结果返回到服务器,并将其提供给客户端 这在不传递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
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一样,但显然不是这样