无法让 curl 在 drupal-7 中提交简单的内容类型



我必须制作一个脚本来登录drupal 7用户并上传内容(没有管理员或数据库访问权限(。我已经使用了cURL并成功登录并保存了会话ID烹饪。之后,我可以成功访问内容类型表单页面(表示存储了 cooky(,但表单从未成功提交。这是我的代码

$crl = curl_init();
$url = "http://example.com/drupal/content/node/add/simple";
curl_setopt($crl, CURLOPT_URL, $url);
curl_setopt($crl, CURLOPT_HEADER, true);
curl_setopt($crl, CURLOPT_HTTPHEADER, $http_headers);
curl_setopt($crl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($crl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($crl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt");
curl_setopt ($crl, CURLOPT_COOKIEJAR, "/tmp/cookie.txt"); 
curl_setopt($crl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($crl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36");
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crl, CURLOPT_POST, 1);
$postdata = array(
"title"=>"dokimastiki anartisi",
"form_id"=>"simple_node_form",
"name"=>"dimitris",
"body[und][0][format]"=>"filtered_html",
"name"=>"dimitris",
"form_id"=>"simple_node_form",
"op"=>"Send message",);
curl_setopt ($crl, CURLOPT_POSTFIELDS, $postdata);
$result=curl_exec($crl);
$headers = curl_getinfo($crl);
echo curl_exec($crl);
session_write_close();
curl_close($crl);

我一直在努力完成这项工作 2 天。我尝试添加每个表单元素的名称和默认值。谁能看到我犯的任何明显错误?谢谢

我认为Drupal会自动创建CSRF保护令牌,您必须将其附加到每个POST请求中? 您在发布之前没有提供代码来获取 CSRF 令牌,我敢打赌这是您的问题。 请求在浏览器中是什么样子的?

最新更新