вот код
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://page/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "frashnum=&action=login&Frm_Logintoken=4&Username=admin&Password=admin");
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
?>
я получил это, используя Curl-to-PHP
путем преобразования этой команды в php
curl "http://page/" --data "frashnum=&action=login&Frm_Logintoken=24&Username=admin&Password=admin"
и мне нужно сначала получить значение токена входа, используя этот запрос XMLHttpRequest и код js
<!DOCTYPE html>
<html>
<body>
<script>
httpRequest = new XMLHttpRequest()
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == XMLHttpRequest.DONE) {
let str =(httpRequest.responseText);
alert(str)
let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
console.info(str.match(pattern)[1]);
}
}
httpRequest.open('GET', 'http://page/', true);
httpRequest.send(null);
</script>
</body>
</html>
поэтому мне нужно заменить значение Frm_Logintoken на console.info(str.match(pattern)1); результат
что я пробовал и не получилось
<!DOCTYPE html>
<html>
<body>
<script>
var xhr = new XMLHttpRequest();
xhr.open('post','http://page/', true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onload = function () {
// do something to response
console.info(this.responseText);
};
xhr.send('document.getElementById("Frm_Username").value = "test"');
xhr.send('document.getElementById("Frm_Password").value = "test"');
xhr.send('function dosubmit()');
</script>
</body>
</html>
это дает мне эту ошибку
Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.
И я не знаю, как определить совпадение console.info(str.match(pattern)[1]);
результат функции в первом коде js
и есть кое-что, в чем я не уверен, нужен ли мне токен для входа, как и php-код, или я могу просто вставить данные, а затем использовать функцию function dosubmit(), которая находится в коде страницы, на которую мы отправляем данные!
@ man0v я делаю GET, чтобы сначала получить значение Frm_Logintoken!
и есть кое-что, в чем я не уверен, нужен ли мне токен для входа, как и php-код, или я могу просто вставить данные, а затем использовать функцию function dosubmit(), которая находится в коде страницы, на которую мы отправляем данные!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы сделать запрос HTTP POST в JavaScript, вы можете использовать что-то вроде этого (как показано здесь Отправить данные POST с помощью XMLHttpRequest)
var http = new XMLHttpRequest();
var url = 'http://page/';
var params = 'frashnum=&action=login&Frm_Logintoken=4&Username=admin&Password=admin';
http.open('POST', url, true);
//Send the proper header information along with the request
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
http.send(params);
спасибо, приятель, это сработало... но насчет "я не знаю, как определить соответствие console.info(str.match(pattern)[1]); результаты из функции в первом коде js" вот код, который показывает текст ответа и логины и соответствует токену из ответа .. pastiebin.com/5cfe549855d1a .... и мне интересно, почему мы не использовали функцию dosubmit()? так как это значительно упростит задачу, потому что это поможет нам избежать части извлечения токена входа в систему!
и как мне запросить другую страницу после успешного входа в систему? в домене типа страница/тест2 и получите текст ответа! @man0v
это отдельные вопросы, и это выходит за рамки stackoverflow. В stackoverflow также есть много примеров. Я действительно не могу ответить лучше, чем это
Я просмотрел много вопросов, но не нашел ответа! .. я получаю результаты не определены при попытке получить их после возврата из функции в этой строке http.onload = function () { я думаю, что проблема в том, что = потому что я удалил его, и я смог вернуть значение, но это разрушает остальную часть код !!
Вот пример того, как сделать запрос POST stackoverflow.com/questions/9713058/… В приведенном выше примере вы выполняете GET (а в PHP это сообщение).