我在PHP中有一个表单页面,它读取一个DBF,并有条件地将其转换为MySQL - 从一个旧的,但仍然是生产会计应用程序中提取数据。转换应该能够在没有用户干预的情况下进行操作,即在cron作业上从web主机的命令行编写脚本。
如何在命令行接收变量时让PHP自动提交表单,例如特定的post变量?到目前为止,我发现的每个自动提交都依赖于javascript,这在PHP命令行中是无用的。
答案 0 :(得分:2)
如果我理解正确,您会尝试将数据自动传递给以前通过HTML表单传递的PHP脚本。在cron作业中自动执行此过程时,不会呈现任何表单,因此自动提交它是不可能的 - 您通常会立即将数据传递给脚本。
这样做的方法包括:
如果您的表单数据很小(少于1k,没有文件上传),那么您可以使用wget
或{{1}从cron作业调用脚本,但仍然可以通过Web服务器调用}:
curl
如果您的表单数据超过1-2千字节,请使用curl www.example.com/script.php?field1=value1&field2=value2&field3=value3
将字段作为POST值传递(请参阅curl
上的手册)
使用PHP二进制文件从命令行调用PHP脚本;将数据作为参数传递给脚本。详情here
如果数据太多而无法通过命令行传递,请将其放入临时文件并让PHP脚本解析该文件。
答案 1 :(得分:0)
您可以用几乎任何支持发出GET / POST请求的语言编写一个cli脚本(PHP,Python,Bash with curl,Java ...)并执行与提交表单相同的调用...
使用2个文本字段填写表单:foo和bar
有两个主要案例:
<form action="formaction.php" method="GET">...</form>
只需向http://example.com/formaction.php?foo=test&bar=test执行GET请求即可<form action="formaction.php" method="POST">...</form>
执行POST请求http://example.com/formaction.php传递请求正文foo = test&amp; bar = test