Как я могу преобразовать код входа php в java-скрипт?

вот код

<?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(), которая находится в коде страницы, на которую мы отправляем данные!

Вот пример того, как сделать запрос POST stackoverflow.com/questions/9713058/… В приведенном выше примере вы выполняете GET (а в PHP это сообщение).

man0v 10.06.2019 14:13

@ man0v я делаю GET, чтобы сначала получить значение Frm_Logintoken!

mina nageh 10.06.2019 14:16

и есть кое-что, в чем я не уверен, нужен ли мне токен для входа, как и php-код, или я могу просто вставить данные, а затем использовать функцию function dosubmit(), которая находится в коде страницы, на которую мы отправляем данные!

mina nageh 10.06.2019 14:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы сделать запрос 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()? так как это значительно упростит задачу, потому что это поможет нам избежать части извлечения токена входа в систему!

mina nageh 10.06.2019 15:04

и как мне запросить другую страницу после успешного входа в систему? в домене типа страница/тест2 и получите текст ответа! @man0v

mina nageh 10.06.2019 15:18

это отдельные вопросы, и это выходит за рамки stackoverflow. В stackoverflow также есть много примеров. Я действительно не могу ответить лучше, чем это

man0v 10.06.2019 17:20

Я просмотрел много вопросов, но не нашел ответа! .. я получаю результаты не определены при попытке получить их после возврата из функции в этой строке http.onload = function () { я думаю, что проблема в том, что = потому что я удалил его, и я смог вернуть значение, но это разрушает остальную часть код !!

mina nageh 10.06.2019 17:36

Другие вопросы по теме