Webboard

Pełna wersja: Logowanie na forum nie działa poprawnie
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Adres forum:
http://andromaniak.5v.pl


Wersja silnika:
1.8.15

Konto testowe:
Login: Test
Hasło: test123

Opis problemu:
Witam, mam problem z logowaniem na forum poprzez wyskakujący modal box (quick login). Zmieniłem wygląd modal boxa, aby dopasować do reszty forum i teraz nie działa poprawnie. Po wpisaniu loginu i hasła i zatwierdzeniem klawiszem ENTER na klawiaturze to strona się odświeża, ale nie loguje na konto, natomiast po wpisaniu i kliknięciu przycisku Zaloguj się wyświetla komunikat, że podano nieprawidłową nazwę użytkownika lub hasło. Co może stanowić problem?

Kod szablonu header_welcomeblock_guest:
Kod:
<!-- Continuation of div(class="upper") as opened in the header template -->
<span class="float_left" style="margin-top: 4px; list-type: none;"><font size="5px"><a href="http://andromaniak.5v.pl"><i class="fab fa-android"></i> AndroManiak</a></font> <a href="{$mybb->settings['bburl']}/member.php?action=login" onclick="$('#quick_login').modal({ fadeDuration: 250, keepelement: true, zIndex: (typeof modal_zindex !== 'undefined' ? modal_zindex : 9999) }); return false;" class="login"><i class="fas fa-sign-in-alt"></i> Zaloguj się</a><font size="5px"> | </font><a href="{$mybb->settings['bburl']}/member.php?action=register" class="register"><i class="fas fa-user-plus"></i> Zarejestruj się</a></span>
</div>
</div>
<div class="modal" id="quick_login" style="display: none;">
<form method="post" action="{$mybb->settings['bburl']}/member.php">
<input name="action" type="hidden" value="do_login" />
<input name="url" type="hidden" value="" />
<input name="quick_login" type="hidden" value="1" />
<table width="100%" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" border="0" class="tborder">
<tr>
<div class="quickhead">Logowanie</div>
</tr>
<tr>
<center>
<form action="#">
 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
   <input class="mdl-textfield__input" type="text" id="sample3" name="quick_username">
   <label class="mdl-textfield__label" for="sample3">Nazwa użytkownika</label>
 </div>
</form>
</center>
</tr>
<tr>
<center>
<form action="#">
 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
   <input class="mdl-textfield__input" type="password" id="quick_login_password" name="quick_password">
   <label class="mdl-textfield__label" for="quick_login_password">Hasło</label>
 </div>
</form><br/>
<a href="{$mybb->settings['bburl']}/member.php?action=lostpw" class="lost_password"><font color="#333">{$lang->lost_password}</font></a>
</center>
</tr>
<tr>
<br/>
<center>
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-1">
 <input type="checkbox" id="switch-1" name="quick_remember" class="mdl-switch__input" checked>
 <span class="mdl-switch__label">{$lang->remember_me}</span>
</label>
</center>
</tr>
<tr>
<td class="trow2" colspan="2">
<div align="center"><input name="submit" type="submit" class="button" value="{$lang->login}" /></div>
</td>
</tr>
</table>
</form>
</div>
<script type="text/javascript">
$("#quick_login input[name='url']").val($(location).attr('href'));
</script>
Według poradnika to cookies mam prawidłowo ustawione.
Musisz porównać wszystkie elementy ze stylem domyślnym. Zwróć uwagę głównie na atrybuty name i czy zgadzają się elementy formularza. Skoro po zmianie wyglądu przestało działać, to musisz szukać gdzie zrobiłeś błąd w html w szablonie header_welcomeblock_guest. Masz miejsce, więc odpal sobie obok domyślny szablon i zacznij porównywać.
  właśnie... Co do atrybutów - pod name dałem quick_username, ale id zostawiłem tak jak było. 

Pod login mam tak kod: 
Kod:
<form action="#">
 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
   <input class="mdl-textfield__input" type="text" id="sample3" name="quick_username">
   <label class="mdl-textfield__label" for="sample3">Nazwa użytkownika</label>
 </div>
</form>

Pod hasło mam tak:
Kod:
<form action="#">
 <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
   <input class="mdl-textfield__input" type="password" id="sample3" name="quick_password">
   <label class="mdl-textfield__label" for="sample3">Hasło</label>
 </div>
</form>

Z czego w domyślnym szablonie jest tak:
Login
Kod:
<tr>
<td class="thead" colspan="2"><strong>{$lang->login}</strong></td>
</tr>
<tr>
<td class="trow1" width="25%"><strong>{$login_username}</strong></td>
<td class="trow1"><input name="quick_username" id="quick_login_username" type="text" value="" class="textbox initial_focus" /></td>
</tr>

Hasło
Kod:
<tr>
<td class="trow2"><strong>{$lang->password}</strong></td>
<td class="trow2">
<input name="quick_password" id="quick_login_password" type="password" value="" class="textbox" /> <a href="{$mybb->settings['bburl']}/member.php?action=lostpw" class="lost_password">{$lang->lost_password}</a>
</td>
</tr>

Czy powinienem zamienić w id na quick_login_username oraz quick_login_password?
Tak, id zachowuj bo nigdy nie wiesz kiedy mybb zacznie lub przestanie ich używać do wykonywania jakichś funkcji.
Jeśli masz tak jak podałeś to osadzasz formularze w formularzach, dlatego nie działa.
Zmieniłem id i nadal jest coś nie tak :(
ID miałeś zmienić żeby nie było w przyszłości jakichś ewentualnych konflitków, gdyby zaczęli używać ich do jakiegoś skryptu w js (o ile teraz nie są używane, nie sprawdzałem).
Logowanie nie działa zapewne przez to, że masz formularze w formularzach.
Dałbyś radę to jakoś przerobić, żeby działało ładnie?

Dobra udało mi się to zrobić. Usunąłem tagi <form> i </form> z tych pól.