Wątek przeniesiony 2022-10-06 09:00 z Inne języki programowania przez cerrato.

Automatyczne logowanie się danymi z formularza

0

Witam . Mam prosty kod HTML-a , który wycięty jest ze strony logowania do pewnego portalu . Składał się on z dwóch pól w które wpisuje się dane do logowania czyli nazwa użytkownika i hasło . po wpisaniu danych trzeba nacisnąć przycisk "zaloguj" i pojawia się już strona z zalogowanym użytkownikiem . Udało mi się zmodyfikować kod na tyle ze pola tekstowe są już uzupełnione danymi logowania oraz ukryte. ale i tak trzeba nacisnąć przycisk . Mówiąc w skrócie chciał bym żeby po odpaleniu tego kodu automatycznie logował się danymi które wpisane są na stałe w kodzie. Adres strony jak i dane logowania zmieniłem na potrzeby tego postu .

<form action="https://xxxl.xxxxx-xx.pl:1111/Portal/Account/LogOn?ReturnUrl=%2fportal" method="post" novalidate="novalidate"> 
  <div style="text-align: center">
      <div class="logon-panel">
          <fieldset class="form">
              <div class="editor-field logon-legend">Zaloguj się do portalu</div>
              <div class="editor-field">
                  <input  data-val="true" data-val-required="Pole &#39;Użytkownik&#39; jest wymagane!" id="UserName" name="UserName" placeholder="Użytkownik" type="hidden" value="Rabbit2" class="valid">
                  <span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span>
              </div>
              <div class="editor-field">
                  <input data-val="true" data-val-required="Pole &#39;Hasło&#39; jest wymagane!" id="Password" name="Password" placeholder="Hasło" type="hidden" value="123456" class="valid">
                  <span class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span>
              </div>
              <div>
                  <input type="submit" class="submit-button" value="Zaloguj się">
              </div>
          </fieldset>
      </div>
  </div>
2

Żeby wysłać formularz od razu po załadowaniu strony trzeba wywołać zdarzenie submit na tym formularzu

<script>
document.addEventListener("DOMContentLoaded", () => {
   const form = document.querySelector("form");

   if (form) {
      form.dispatchEvent(new Event('submit'));
   }
});
</script>

Gdyby na stronie było więcej formularzy niż tylko jeden to musisz dodać jakiś unikatowy atrybut np id i zmienić selektor

<form id="tutaj-jakas-wartosc" ...>
  ...
</form>

<script>
  // ...
    const form = document.querySelector("#tutaj-jakas-wartosc");
  // ...
</script>
0

Zapomniałem dodać ze mój poziom znajomości HTML-a jest na poziomie 0 . ;)

W którym miejscu mam wkleić twój kod ? bo kompletnie nic mi to nie mówi .

0

Spróbuj wkleić to pod formularzem tak jak w przykładzie.

0
Xarviel napisał(a):

Spróbuj wkleić to pod formularzem tak jak w przykładzie.

<form action="https://xxxl.xxxxx-xx.pl:1111/Portal/Account/LogOn?ReturnUrl=%2fportal" method="post" novalidate="novalidate"> 
        <div style="text-align: center">
            <div class="logon-panel">
                <fieldset class="form">
                    <div class="editor-field logon-legend">Zaloguj się do portalu</div>
                    <div class="editor-field">
                        <input  data-val="true" data-val-required="Pole &#39;Użytkownik&#39; jest wymagane!" id="UserName" name="UserName" placeholder="Użytkownik" type="hidden" value="Rabbit2" class="valid">
                        <span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span>
                    </div>
                    <div class="editor-field">
                        <input data-val="true" data-val-required="Pole &#39;Hasło&#39; jest wymagane!" id="Password" name="Password" placeholder="Hasło" type="hidden" value="123456" class="valid">
                        <span class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span>
                    </div>
                    <div>
                        <input type="submit" class="submit-button" value="Zaloguj się">
                    </div>
                </fieldset>
            </div>
        </div>

        <script>
document.addEventListener("DOMContentLoaded", () => {
   const form = document.querySelector("form");

   if (form) {
      form.dispatchEvent(new Event('submit'));
   }
});
</script>

tak nie działa . To co widać to cały kod .

0

Masz jakies bledy w konsoli? Kliknij prawym myszki na stronie -> inspect/zbadaj -> zakladka console

Brw nie bylo jakos tak, ze pol ukrytych nie mozna oznaczac jako required? Zawarcie takiego pola w formularzu nie pozwoli na poprawny submit ale tutaj moge sie mylic, bedzie blad(czerwone literki) w konsoli jesli tak jest u Ciebie.

1
Xarviel napisał(a):

Żeby wysłać formularz od razu po załadowaniu strony trzeba wywołać zdarzenie submit na tym formularzu

<script>
document.addEventListener("DOMContentLoaded", () => {
   const form = document.querySelector("form");

   if (form) {
      form.dispatchEvent(new Event('submit'));
   }
});
</script>

Sprawdziłem różne kombinacje i faktycznie dispatchEvent wywołuje jedynie sam event, ale formularz się nie wysyła :(

W takim razie można skorzystać bezpośrednio z metody submit

<script>
  document.addEventListener("DOMContentLoaded", () => {
    const form = document.querySelector("form");

    if (form) {
      form.submit();
    }
  });
</script>

Teraz formularz zostaje prawidłowo wysłany, ale nie jestem pewien, czy może pojawić się jakieś problem z CORS.

0
Rabbit2 napisał(a):

Witam . Mam prosty kod HTML-a , który wycięty jest ze strony logowania do pewnego portalu . Składał się on z dwóch pól w które wpisuje się dane do logowania czyli nazwa użytkownika i hasło . po wpisaniu danych trzeba nacisnąć przycisk "zaloguj" i pojawia się już strona z zalogowanym użytkownikiem . Udało mi się zmodyfikować kod na tyle ze pola tekstowe są już uzupełnione danymi logowania oraz ukryte. ale i tak trzeba nacisnąć przycisk . Mówiąc w skrócie chciał bym żeby po odpaleniu tego kodu automatycznie logował się danymi które wpisane są na stałe w kodzie. Adres strony jak i dane logowania zmieniłem na potrzeby tego postu .

Może po prostu opisz dokładnie od początku co chcesz zrobić?

0
Riddle napisał(a):

Może po prostu opisz dokładnie od początku co chcesz zrobić?

po prostu . chce zalogować sie do portalu pracowniczego w mojej firmie bez konieczności kazdorazowego logowania sie nazwą użytkownika i hasłem . Portal nie będzie otwierany w normalnej przeglądarce gdzie nie było by z tym problemu tylko w prostej przegladarce obsługującej html i jave. Ta "prosta" przegladarka bedzie częscią aplikacji mobilnej która robie , a własciwie aktualizuje właśnie o tą funkcję .

Xarviel napisał(a):

Sprawdziłem różne kombinacje i faktycznie dispatchEvent wywołuje jedynie sam event, ale formularz się nie wysyła :(

W takim razie można skorzystać bezpośrednio z metody submit

Teraz formularz zostaje prawidłowo wysłany, ale nie jestem pewien, czy może pojawić się jakieś problem z CORS.

DZIAŁA !!! :)

Dziękuje za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1