由于Wikimapia在更新密钥限制方面存在问题,因此我想通过cURL自动生成它们,然后将其保存到数据库中。我该如何实施?我在这样的网站上得到授权
// URL скрипта авторизации
$login_url = 'http://wikimapia.org/user/login/';
// параметры для отправки запроса - логин и пароль
$post_data = 'username=LOGIN&pw1=PASSWORD&_time=3306';
// создание объекта curl
$ch = curl_init();
// используем User Agent браузера
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );
// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );
// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
/*
Задаем параметры сохранени¤ cookie
как правило Cookie необходимы для дальнейшей работы с авторизацией
*/
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
当我发布Wikimapia请求时:
http://wikimapia.org/api/?action=create_key_process&readed_eula=true&api_use=1&site_name=&application_name=333&platform=333
我收到错误消息您应该阅读并同意EULA。 如何正确通过复选框标志?
<label for="readed_eula" class="checkbox">
<input type="checkbox" id="readed_eula" name="readed_eula" value="true"> I have read Wikimapia Terms of Service
</label>
答案 0 :(得分:0)
尝试更改此内容
$post_data = 'username=LOGIN&pw1=PASSWORD&_time=3306';
对此:
$post_data = http_build_query([
'username' => 'LOGIN',
'pw1' => 'PASSWORD',
'_time' => '3306',
'readed_eula' => 'true',
]);
答案 1 :(得分:0)
通过回答杨考拉和所有工作来发表我的帖子))THX
// выполняем запрос для авторизации
$postResult = curl_exec($ch);
$timeout = 5; // set to zero for no timeout
$url2= "http://wikimapia.org/api/?action=create_key_process";
$post_data = http_build_query([
'readed_eula' => 'true',
'api_use' => 1,
'site_name' => '',
'application_name' => '444',
'platform' => '444',
]);
// задаем URL
curl_setopt($ch, CURLOPT_URL, $url2 );
// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );
// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$test = curl_exec($ch);