我正在尝试编写一个简单的 PHP 脚本来自动设置新的 etherpad(请参阅http://etherpad.com/)。
他们还没有用于创建新垫的 API,所以我想知道我是否可以用另一种方式做事。
在玩了一些之后,我发现如果您将随机字符串附加到 etherpad.com 到尚未创建的 pad 上,它会返回一个表单,询问您是否要在该地址创建一个新的 etherpad。如果您提交该表单,则会在该 URL 上创建一个新的 pad。
我当时的想法是我可以使用 CURL 创建一个 PHP 脚本,该脚本将复制该表单并欺骗 etherpad 在我提供的任何 URL 上创建一个新的 pad。我编写了脚本,但到目前为止我无法让它工作。有人可以告诉我我做错了什么吗?
首先,这是 etherpad 创建页面上的 HTML 表单:
`
<p><tt id="padurl">http://etherpad.com/lsdjfsljfa-fdj-lsdf</tt></p>
<br/>
<p>There is no EtherPad document here. Would you like to create one?</p>
<input type="hidden" value="lsdjfsljfa-fdj-lsdf" name="padId"/>
<input type="submit" value="Create Pad" id="createPad"/>
`
然后这是我的代码,它尝试使用 CURL 提交表单
$ch = curl_init();
//set POST variables
$url = "http://etherpad.com/ep/pad/create?padId=ldjfal-djfa-ldkfjal";
$fields = array(
'padId'=>urlencode("ldjfal-djfa-ldkfjal"),
);
$useragent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)";
// set user agent
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value; }
print_r($fields_string);
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
print_r($result);
//close connection
curl_close($ch);
当我运行脚本时,PHP 报告一切都正确执行,但 etherpad 没有创建我的 pad。有什么线索吗?