Witajcie
Borykam się z problemem, jak zrobić by zależności od tego co powie php podmieniany był DIV a nie przeładowywana cała strona
strona projektu
http://cctv-online.pl
Zerknijcie o co mi chodzi,
w tym momencie kiedy podane jest błędne hasło albo login strona się przeładowuje, a docelowo ma być tak, że podmieniany będzie tylko ten div co ma bg czerwone, tak jak to zrobiłem w przypadku włączenia CapsLock i chęci wpisania hasła.
Nie wiem jak to ugryźć, bo informacji jest kilka?
Czy ma to być zrobiona w Javie czy po stronie serwera, jak do tej pory.
Wszelkie sugestie i podpowiedzi mile widziane
Pozdrawiam Tomek
Czy dobrze myślę, że powinienem zrobić tak aby po kliknięciu nie przekierowywał na początek strony tylko, do jakiegoś CASE, który będzie w zależności od wyników PHP otrzymywał daną zawartość w div o takim samym ID, a potem w css zrobić taki szablon dla tego jednego DIVa. I zrobić to JS
Poczytaj o ajax. I na ma pewno nie ma to być zrobione w javie tylko javascript.
Wiem, że JS a nie Java - napisałem skrót myślowy
Nie da się tego zrobić bez AJAXa, jakoś mi nie po drodze w tej chwili opanowywać AJAXa
Jeśli nie chcesz przeładować całej strony to inaczej się nie da.
https://prophp.pl/advice/show/20/pierwsze_kroki_z_ajax._jak_dziala_i_czym_jest%3F
Witam
Przeprosiłem się do AJAXa, udało się, ale mam pewien problem.
Od rana szukam rozwiązania ale jakoś bez skutecznie
Otóż jeden ze skryptów JS siedzi w pliku ładowanym przez AJAX, i tu jest problem nie wiem jak zrobić by się on wykonał po wczytaniu.
Proszę o pomoc.
eval(element_w_ktorym_jest_odpowiedz_z_ajaxa.querySelector('script').innerHTML);
próbowałem, ale albo jestem zbyt tępy na to albo coś źle robię
wpisuję to w plik zewnętrzny scripts.js, który jest ładowany w head - czy tak ma być
od razu po nawiasie wpisuję id diva
w konsoli dostaję:
scripts.js:92 Uncaught TypeError: Cannot read property 'querySelector' of null
at scripts.js:92
scripts.js:92 Uncaught TypeError: Cannot read property 'innerHTML' of null
at scripts.js:92
Wywołujesz po tym jak wstawisz odpowiedź do danego elementu.
Zobacz na czym operuje metoda querySelector: https://developer.mozilla.org/pl/docs/Web/API/Element/querySelector
sorki, ale nie potrafię tego zrozumieć. Czy mogę prosić o łopatologiczne wytłumaczenie tego zagadnienia.
Poczytaj o jsonp.
Kod ma być wywołany na done (jqury). Zależy co tam użyłeś.
zrobiłem trochę na około ale efekt, którego oczekiwałem
function LoginTest() { request = ""; request = new XMLHttpRequest(); var InputLogin = document.getElementById("input_login").value; var InputPass = document.getElementById("input_pass").value; var post = "user_login=" + InputLogin + "&user_pass=" + InputPass; var url = "../php_function/user_check.php"; request.onreadystatechange = LoginTestRequest; request.open("POST", url, true); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(post); } id=document.getElementById('user_blocked_time') function odliczaj(id,sek){ seconds = Math.floor(sek)%60; minutes = Math.floor(sek/60)%60; id.innerHTML=((minutes < 10) ? '0' + minutes : minutes)+ ':' +((seconds < 10) ? '0' + seconds : seconds); if(sek>0)setTimeout(function(){ odliczaj(id,--sek) },1e3) } function LoginTestRequest() { if(request.readyState == 4 && request.status == 200) { if(request.responseText == "User Logged IN") { window.location = "index.php"; } if (!isNaN(request.responseText)){ $("#login_message_one").empty(); var time_to_unlock = request.responseText; var newdiv = document.createElement('div'); newdiv.setAttribute("class", "div_testowy"); var script = document.createElement('script'); script.setAttribute("language", "javascript"); script.innerHTML = "odliczaj(user_blocked_time, " + time_to_unlock + ");"; newdiv.appendChild(script); var newspan = document.createElement('span'); newspan.setAttribute("id", "user_blocked_time"); newdiv.appendChild(newspan); document.getElementById('login_message_one').appendChild(newdiv); } else { document.getElementById("login_message_one").innerHTML = request.responseText; } } else { document.getElementById("login_message_one").innerHTML = request.status+" "+request.statusText; } }
Mieszasz jquery z czystym js. Zdecyduj się co chcesz używać. Albo sobie ułatwiasz życie, albo rezygnujesz z jquery.
to tylko jedna rzecz w jquery, ale masz rację poprawię na zwykłe js.
Ach i pytanko, może wiecie czemu to nie działa w IE, w pozostałych jest OK. Chrome, ff, opera.
Więc jaki sens osadzania dodatkowego kodu na stronie skoro jedna rzecz? Chociaż myślę że akurat tobie na początek w drugą stronę by bardziej pasowało. Nie ma co ukrywać że pisze się łatwiej i nie pewnie nie było by nullem.
mówisz, że w jquery pisze się łatwiej?
Tylko najpierw muszę bardziej opanować czystego js, bo za chwilę zrobi mi się w głowie sieczka. Wcześniej się tym nie zajmowałem, robiłem tylko w php, trochę w VB. Teraz musiałem zacząć poszerzać wiedzę o css, js, pewnie jeszcze coś się znajdzie.
No to pojawił mi się jeszcze jeden problem.
Mianowicie. Wszystko ładnie działa gdy js jest włączone w przeglądarce ale gdy wyłączę to już nie jest tak pięknie.
case 'log_in': $users->cookie_form(); http://www.php.net/echo "<div id=\"wrapper\">"; http://www.php.net/echo "<header>"; http://www.php.net/echo "<div class=\"login\">"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "SYSTEM ZARZĄDZANIA MONITORINGIEM"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "<form id=\"form_login\" method=\"post\">"; http://www.php.net/echo "<script type=\"text/javascript\"><!--document.write('<input type=\"hidden\" name=\"js\" value=\"1\">');//--></script>"; http://www.php.net/echo "<noscript><input type=\"hidden\" name=\"js\" value=\"0\"></noscript>"; http://www.php.net/echo "<span id=\"span_login\">LOGOWANIE</span>"; http://www.php.net/echo "<div class=\"text_login\">"; http://www.php.net/echo "<span class=\"login\">Login: </span>"; http://www.php.net/echo "<input class=\"login\" id=\"input_login\" type=\"text\" placeholder=\"Login\" name=\"user_login\" value=\"" . ((http://www.php.net/isset($_COOKIE['user_login'])) ? $_COOKIE['user_login'] : '' . ((http://www.php.net/isset($_POST['user_login'])) ? ($_POST['user_login']) : '' ) . '' ) . "\">"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"text_login\">"; http://www.php.net/echo "<span class=\"login\">Hasło: </span>"; http://www.php.net/echo "<input class=\"login\" id=\"input_pass\" type=\"password\" placeholder=\"Hasło\" onkeypress=\"capLock(event)\" name=\"user_pass\" value=\"\">"; http://www.php.net/echo "</div>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "<span id=\"info\" style=\"visibility:hidden\">INFORMACJA</span>"; http://www.php.net/echo "<span id=\"login_message_one\"></span>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "<button id=\"submit\" class=\"submit_button\" type=\"button\" form=\"form_login\"><span class=\"submit\">LOGIN</span></button>"; http://www.php.net/echo "</form>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\" id=\"CapLock\">"; http://www.php.net/echo "CAPS LOCK IS ON"; http://www.php.net/echo "</div>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "</header>"; http://www.php.net/echo "</div>"; break;
Ty poważnie tak piszesz? 40 linijek oddzielnie echowanych z czego jedna potrzebuje php?
button nie jest type=submit więc co sie ma wysłać.
Tak, poważnie tak piszę, a jest w tym jakiś błąd? Po za tym, że mam więcej do napisania. Z tym, że to jest tylko wycinek pliku, jeden mały formularz, reszta pliku jest w php pisana.
Ale rzeczywiście wolę napisać echo niż zamykać phpa, potem go otwierać, albo pisać kod w kilku liniach bez echa.
A wracając do problemu, masz rację nie jest submit, ale gdy go zrobię submit to przy entarze odświerza mi całą stronę
Skoro robisz to na wyłączonym JS (przynajmniej tak zakładam z wcześniejszego posta) to czego się spodziewasz? event.preventDefault nie zadziała.
Problem taki że dajesz parserowi mase niepotrzebnej pracy. No i wygląda tragicznie.
Poza tym w PHP7
$_COOKIE['user_login'] ?? $_POST['user_login'] ?? ''
Myśle, że to kwestia przyzwyczajenie. Dla mnie jest to czytelne. I tak mi się lepiej pisze.
Sprawdzam na włączonym i wyłączonym JS.
Poważnie taka sieczka jest dla ciebie czytelna? Nieźle. Już nawet można to było wyrzucić do zewnętrznego pliku i zaincludować a tam tylko zostawić jedną linię.
Domyślną akcją formularza jest wysyłka. Jak nie ma kodu JS który ją blokuje to jest prawidłowe działanie przeglądarki.
zrobiłem na około, jak zwykle i wiem zrobiłem to w jguery
dopisałem funkcję entera dla js
$("#form_login").keypress(function(e) { var keycode = (e.keyCode ? e.keyCode : e.which); if (keycode == '13') { LoginTest(); } });
A po co programować enter zamiast zwykłej wysyłki?
bo inaczej nie chce działać jak powinno.
Jest ten button, jak zrobię mu typ submit to wynik otwiera w nowym oknie, ale wówczas działa on jako submit na klawisz enter.
Jeśli usunę mu action, to wynik dostaję zgodnie z zapytaniem ajax (w wyznaczonym div), ale przeładowuje mi cały dokument i wynik znika.
Nie wiem już co robię źle.
Pokaż gdzieś cały działający kod bo tak można sobie strzelać.
index.php
<?php http://www.php.net/session_start(); // Wczytuje potrzebne pliki require_once 'class/db_login.php'; require_once 'class/Sql.class.php'; require_once 'class/Users.class.php'; // Zmienna sesyjna adresu strony $_SESSION[ 'home_page' ] = "http://topcio.pl"; // Tworzę połączenie z Bazą Danych $sql = new Sql( $db_host, $db_user, $db_passwd, $db_name ); // Zapisujemy zmienną sesyjną ses_id $ses_id = http://www.php.net/session_id(); // Jeśli nie ma utworzonej zmiennej sesyjnej user_id to ustawiamy ją na NULL if ( !http://www.php.net/isset( $_SESSION[ 'user_id' ] ) ) { $_SESSION[ 'user_id' ] = null; } // Jeśli zmienna sesyjna wygasła przekierowujemy do strony logowania if ( $_SESSION[ 'user_id' ] == "null" ) { http://www.php.net/header( "Location: index.php?action=log_in" ); http://www.php.net/exit; } // Filtrujemy wszystkie zmienne $_POST if ( !http://www.php.net/empty( $_POST ) ) { foreach ( $_POST as $post_value ) { $post_value = $sql->clear( $post_value ); } } # RAPORTOWANIE BŁĘDÓW http://www.php.net/error_reporting( E_ALL ); http://www.php.net/ini_set( 'display_errors', 1 ); $users = new Users( $sql, $_SESSION[ 'user_id' ] ); # WYŚWIETLAMY NAGŁÓWEK STRONY include 'head.html'; http://www.php.net/echo "</head>"; http://www.php.net/echo "<body>"; http://www.php.net/echo "<div id=\"wall\"></div>"; # PRZEŁĄCZNIK STRON switch ( http://www.php.net/isset( $_GET[ 'action' ] ) ? $_GET[ 'action' ] : 'user_logged_in' ) { case 'user_logged_in': $users = new Users( $sql, $_SESSION[ 'user_id' ] ); if ( $users->is_logged() ) { $data = $users->get_user_data(); $first_login = $users->if_first_login( $data ); if ( $first_login === true ) { http://www.php.net/header( "Location: ../index.php?action=first_login" ); http://www.php.net/exit; } else { if ( $users->is_there_temp_pass( $data[ 'user_id' ] ) === true ) { http://www.php.net/header( "Location: ../index.php?action=login_with_temp_pass" ); http://www.php.net/exit; } else { if ( $data[ 'user_range' ] == 1 ) { http://www.php.net/header( "Location: ../index.php?action=user_login" ); http://www.php.net/exit; } if ( $data[ 'user_range' ] == 2 ) { http://www.php.net/header( "Location: ../index.php?action=admin_login" ); http://www.php.net/exit; } if ( $data[ 'user_range' ] == 3 ) { http://www.php.net/header( "Location: ../index.php?action=devel_login" ); http://www.php.net/exit; } } } } else { http://www.php.net/header( "Location: ../index.php?action=log_in" ); } break; case 'log_in': $users->cookie_form(); http://www.php.net/echo "<div id=\"wrapper\">"; http://www.php.net/echo "<header>"; http://www.php.net/echo "<div class=\"login\">"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "SYSTEM ZARZĄDZANIA MONITORINGIEM"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "<form id=\"form_login\" action=\"../php_function/user_check.php\" enctype=\"multipart/form-data\" method=\"post\">"; http://www.php.net/echo "<script type=\"text/javascript\"><!--document.write('<input type=\"hidden\" name=\"js\" value=\"1\">');//--></script>"; http://www.php.net/echo "<noscript><input type=\"hidden\" name=\"js\" value=\"0\"></noscript>"; http://www.php.net/echo "<span id=\"span_login\">LOGOWANIE</span>"; http://www.php.net/echo "<div class=\"text_login\">"; http://www.php.net/echo "<span class=\"login\">Login: </span>"; http://www.php.net/echo "<input class=\"login\" id=\"input_login\" type=\"text\" placeholder=\"Login\" name=\"user_login\" value=\"" . ( ( http://www.php.net/isset( $_COOKIE[ 'user_login' ] ) ) ? $_COOKIE[ 'user_login' ] : '' . ( ( http://www.php.net/isset( $_POST[ 'user_login' ] ) ) ? ( $_POST[ 'user_login' ] ) : '' ) . '' ) . "\">"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"text_login\">"; http://www.php.net/echo "<span class=\"login\">Hasło: </span>"; http://www.php.net/echo "<input class=\"login\" id=\"input_pass\" type=\"password\" placeholder=\"Hasło\" onkeypress=\"capLock(event)\" name=\"user_pass\" value=\"\">"; http://www.php.net/echo "</div>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\" id=\"test_001\">"; http://www.php.net/echo "<span id=\"info\" style=\"visibility:hidden\">INFORMACJA</span>"; http://www.php.net/echo "<span id=\"login_message_one\"></span>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\">"; http://www.php.net/echo "<button id=\"submit\" class=\"submit_button\" type=\"button\" ><span class=\"submit\">LOGIN</span></button>"; http://www.php.net/echo "</form>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class=\"test\" id=\"CapLock\">"; http://www.php.net/echo "CAPS LOCK IS ON"; http://www.php.net/echo "</div>"; http://www.php.net/echo "</div>"; http://www.php.net/echo "</header>"; http://www.php.net/echo "</div>"; break; case 'login_with_temp_pass': if ( http://www.php.net/empty( $_POST ) ) { $users->change_temp_pass_form(); } else { $users->change_temp_pass_form(); http://www.php.net/printf( http://www.php.net/implode( '<br />', $users->change_temp_pass() ) ); http://www.php.net/printf( "<br />" ); http://www.php.net/printf( "<a href=\"index.php?action=log_out\">Zaloguj się ponownie.</a>" ); } break; case 'forgetten_confirm': $forgetten_message = $users->sendForgettenPassword(); http://www.php.net/echo http://www.php.net/implode( '<br>', $forgetten_message ) . '</p>'; http://www.php.net/echo "<a href=\"index.php?action=log_in\">Powrót do strony logowania</a><br />"; break; case 'forgetten': $users->cookie_form(); if ( !http://www.php.net/empty( $_POST ) ) { if ( ( $forgetten_message = $users->forgetten( $_POST ) ) === true ) { $_SESSION[ 'tablica_post' ] = http://www.php.net/array(); foreach ( $_POST as $key => $value ) { $_SESSION[ 'tablica_post' ][ $key ] = $value; } $users->forgetten_form_confirm(); } else { $users->forgetten_form( $forgetten_message ); } } else { if ( http://www.php.net/empty( $_POST ) ) { $forgetten_message = null; $users->forgetten_form( $forgetten_message ); } } break; case 'user_login': if ( $users->is_logged() ) { $data = $users->get_user_data(); if ( $users->is_there_temp_pass( $data[ 'user_id' ] ) === true ) { http://www.php.net/header( "Location: index.php?action=login_with_temp_pass" ); http://www.php.net/exit; } if ( $data[ 'user_range' ] != 1 ) { http://www.php.net/header( "Location: index.php?action=user_logged_in" ); http://www.php.net/exit; } else { $data = $users->get_user_data(); http://www.php.net/echo "USER LOGIN"; foreach ( $data as $sesja => $wartosc ) { http://www.php.net/echo "<p>" . $sesja . " = " . $wartosc . "</p>"; } http://www.php.net/echo "<a href=\"index.php?action=log_out\">Wyloguj . . .</a>"; } } else { http://www.php.net/header( "Location: index.php?action=user_logged_in" ); } break; case 'admin_login': if ( $users->is_logged() ) { $data = $users->get_user_data(); if ( $users->is_there_temp_pass( $data[ 'user_id' ] ) === true ) { http://www.php.net/header( "Location: index.php?action=login_with_temp_pass" ); http://www.php.net/exit; } if ( $data[ 'user_range' ] != 2 ) { http://www.php.net/header( "Location: index.php?action=user_logged_in" ); http://www.php.net/exit; } else { http://www.php.net/echo "<div id=\"wrapper\"><header>"; $data = $users->get_user_data(); http://www.php.net/echo "ADMIN LOGIN"; foreach ( $data as $sesja => $wartosc ) { http://www.php.net/echo "<p>" . $sesja . " = " . $wartosc . "</p>"; } http://www.php.net/echo "<a href=\"index.php?action=log_out\">Wyloguj . . .</a>"; http://www.php.net/echo "</header></div>"; } } else { http://www.php.net/header( "Location: index.php?action=user_logged_in" ); } break; case 'devel_login': if ( $users->is_logged() ) { $data = $users->get_user_data(); if ( $users->is_there_temp_pass( $data[ 'user_id' ] ) === true ) { http://www.php.net/header( "Location: index.php?action=login_with_temp_pass" ); http://www.php.net/exit; } if ( $data[ 'user_range' ] != 3 ) { http://www.php.net/header( "Location: index.php?action=user_logged_in" ); http://www.php.net/exit; } else { $data = $users->get_user_data(); http://www.php.net/echo "SUPER USER LOGIN"; foreach ( $data as $sesja => $wartosc ) { http://www.php.net/echo "<p>" . $sesja . " = " . $wartosc . "</p>"; } http://www.php.net/echo "<a href=\"index.php?action=log_out\">Wyloguj . . .</a>"; } } else { http://www.php.net/header( "Location: index.php?action=user_logged_in" ); } break; case 'test': http://www.php.net/echo $_SESSION[ 'user_id' ]; break; case 'log_out': if ( $users->is_logged() ) { $_SESSION[ 'user_id' ] = null; http://www.php.net/session_destroy(); http://www.php.net/header( "Location: " . $_SESSION[ 'home_page' ] ); http://www.php.net/exit; } else { http://www.php.net/header( "Location: " . $_SESSION[ 'home_page' ] ); } break; case 'first_login': $users->cookie_form(); if ( $users->is_logged() ) { if ( http://www.php.net/empty( $_POST ) ) { $result = null; $users->first_login_form( $result ); http://www.php.net/echo "<a href=\"index.php?action=log_out\">Wyloguj . . .</a>"; } else { $user_id = $users->user_id; $result = $users->first_login_update( $user_id, $_POST ); $users->first_login_form( $result ); if ( http://www.php.net/isset( $_SESSION[ 'Update_OK' ] ) ) { http://www.php.net/unset( $_SESSION[ 'Update_OK' ] ); http://www.php.net/header( "Location: index.php?action=log_in" ); http://www.php.net/exit; } else { http://www.php.net/echo "<a href=\"index.php?action=log_out\">Wyloguj . . .</a>"; } } } else { http://www.php.net/header( "Location: " . $_SESSION[ 'home_page' ] ); http://www.php.net/exit; } break; } include 'footer.php'; # ZAMYKAMY POŁĄCZENIE SQL $sql->close(); ?>
// Funkcja Caps Lock function capLock(data) { KeyCode = data.keyCode ? data.keyCode : data.which; ShiftKey = data.shiftKey ? data.shiftKey : ((KeyCode == 16) ? true : false); if (((KeyCode >= 65 && KeyCode <= 90) && !ShiftKey) || ((KeyCode >= 97 && KeyCode <= 122) && ShiftKey)) { var elem = ((document.getElementById('CapLock')) ? true : false); if (elem) document.getElementById('CapLock').setAttribute('id', "CapLock_ON"); else var elem1 = ((document.getElementById('CapLock_OFF')) ? true : false); if (elem1) document.getElementById('CapLock_OFF').setAttribute('id', "CapLock_ON"); } else var elem2 = ((document.getElementById('CapLock_ON')) ? true : false); if (elem2) document.getElementById('CapLock_ON').setAttribute('id', "CapLock_OFF"); } /*/ Test Logowania $("#form_login").keypress(function(e) { var keycode = (e.keyCode ? e.keyCode : e.which); if (keycode == '13') { LoginTest(); } }); */ window.onload = function () { document.getElementById("submit").onclick = function () { LoginTest(); } } function LoginTest() { request = ""; request = new XMLHttpRequest(); var InputLogin = document.getElementById("input_login").value; var InputPass = document.getElementById("input_pass").value; var post = "user_login=" + InputLogin + "&user_pass=" + InputPass; var url = "../php_function/user_check.php"; request.onreadystatechange = LoginTestRequest; request.open("POST", url, true); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(post); } // Odliczanie czasu do odblokowania loginu id = document.getElementById('user_blocked_time') function odliczaj(id, time_to_unlock) { seconds = Math.floor(time_to_unlock) % 60; minutes = Math.floor(time_to_unlock / 60) % 60; if (time_to_unlock == 0) { id.innerHTML = "Konto zostało odblokowane"; } else { var text = "Zbyt wiele nieudanych prób, login został zablokowany <http://december.com/html/4/element/br.html>" + "Czas do odblokowania:"; id.innerHTML = text + ((minutes < 10) ? '0' + minutes : minutes) + ':' + ((seconds < 10) ? '0' + seconds : seconds); if (time_to_unlock >= 0) setTimeout(function () { odliczaj(id, --time_to_unlock) }, 1000); } } function LoginTestRequest() { if (request.readyState == 4 && request.status == 200) { var elem = document.getElementById('login_message_one'); if (request.responseText == "User Logged IN") { window.location = "http://topcio.pl"; } if (!isNaN(request.responseText)) { $("#login_message_one").empty(); $("#info").show("slide", { direction: "left" }, 1000); var time_to_unlock = request.responseText; var newdiv = document.createElement('div'); newdiv.setAttribute("class", "div_testowy"); var script = document.createElement('script'); script.setAttribute("language", "javascript"); script.innerHTML = "odliczaj(user_blocked_time, " + time_to_unlock + ");"; newdiv.appendChild(script); var newspan = document.createElement('span'); newspan.setAttribute("id", "user_blocked_time"); newdiv.appendChild(newspan); elem.appendChild(newdiv); } else { elem.innerHTML = request.responseText; } } else { elem.innerHTML = request.status + " " + request.statusText; } }
<?php http://www.php.net/session_start(); require_once '../class/db_login.php'; require_once '../class/Sql.class.php'; require_once '../class/Users.class.php'; // Tworzę połączenie z Bazą Danych $sql = new Sql( $db_host, $db_user, $db_passwd, $db_name ); // Zapisujemy zmienną sesyjną ses_id $ses_id = http://www.php.net/session_id(); // Jeśli nie ma utworzonej zmiennej sesyjnej user_id to ustawiamy ją na NULL if ( !http://www.php.net/isset( $_SESSION[ 'user_id' ] ) ) { $_SESSION[ 'user_id' ] = null; } // Filtrujemy wszystkie zmienne $_POST if ( !http://www.php.net/empty( $_POST ) ) { foreach ( $_POST as $post_value ) { $post_value = $sql->clear( $post_value ); } } # RAPORTOWANIE BŁĘDÓW http://www.php.net/error_reporting( E_ALL ); http://www.php.net/ini_set( 'display_errors', 1 ); $users = new Users( $sql, $_SESSION[ 'user_id' ] ); if ( !http://www.php.net/empty( $_POST ) ) { loop_0001: $check_user_login = $users->check_user_login( $_POST ); #JEŻELI ISTNIEJE LOGIN W BAZIE if ( $check_user_login === true ) { $get_user_id = $users->get_user_id( $_POST ); $info = $users->get_blocked_info( $get_user_id ); # JEŻELI LOGIN ZABLOKOWANY if ( $info == 1 ) { if ( $users->login_unlock( $get_user_id ) === true ) { goto loop_0001; } else { if ( http://www.php.net/is_numeric( $users->get_blocked_time( $get_user_id ) ) ) { http://www.php.net/echo $users->get_blocked_time( $get_user_id ); } } } # JEŻELI LOGIN ODBLOKOWANY if ( $info == 0 ) { # JEŻELI ISTNIEJE HASŁO TYMCZASOWE if ( $users->is_there_temp_pass( $get_user_id ) === true ) { $users->login_form(); # JEŻELI LOGIN/HASŁO NIE SĄ ZGODNE if ( $users->check_compatibility( $_POST ) === NULL ) { $users->login_lock( $_POST ); $login_message[] = 'Upewnij się, że wprowadzone dane są poprawne<br />' . '<a href="../index.php?action=forgetten">Wygeneruj ponownie hasło.</a>'; http://www.php.net/echo http://www.php.net/implode( '<br>', $login_message ); } # JEŻELI LOGIN/HASŁO SĄ ZGODNE if ( http://www.php.net/is_numeric( $users->check_compatibility( $_POST ) ) ) { $_SESSION[ 'user_id' ] = $users->check_compatibility( $_POST ); $users->loged_in( $_SESSION[ 'user_id' ] ); http://www.php.net/header( "Location: ../index.php?action=login_with_temp_pass" ); http://www.php.net/exit; } } # JEŻELI NIE ISTNIEJE HASŁO TYMCZASOWE if ( $users->is_there_temp_pass( $get_user_id ) === false ) { # JEŻELI LOGIN/HASŁO NIE SĄ ZGODNE if ( $users->check_compatibility( $_POST ) === NULL ) { $users->login_lock( $_POST ); $login_message[] = "Podany login i/lub hasło są niepoprawne. Spróbuj Ponownie."; $login_message[] = "<a href=\"../index.php?action=forgetten\">Zapomniałem Hasła.</a>"; http://www.php.net/echo http://www.php.net/implode( '<br>', $login_message ); } # JEŻELI LOGIN/HASŁO SĄ ZGODNE if ( http://www.php.net/is_numeric( $users->check_compatibility( $_POST ) ) ) { $_SESSION[ 'user_id' ] = $users->check_compatibility( $_POST ); $users->loged_in( $_SESSION[ 'user_id' ] ); http://www.php.net/echo "User Logged IN"; } } } } #JEŻELI NIE ISTNIEJE LOGIN W BAZIE if ( $check_user_login === false ) { $get_user_id = null; $login_message[] = "Podany login i/lub hasło są niepoprawne. Spróbuj Ponownie."; $login_message[] = "<a href=\"../index.php?action=forgetten\">Zapomniałem Hasła.</a>"; http://www.php.net/echo http://www.php.net/implode( '<br>', $login_message ); } } else if ( http://www.php.net/empty( $_POST ) ) { $get_user_id = null; } ?>
Chodziło o działający kod na jakimś serwerze. Ale widać że może być problem z zasięgiem zmiennych albo samym wywołaniem js. Co w konsoli przeglądarki jest? Dlaczego raz sesja ma null a niżej sprawdzasz string "null"?
działający kod jest na
http://topcio.pl
działanie możesz sprawdzić dla usera topcio_02
Konsola, TypeError: elem is undefined line 107
Po wyłaczeniu JS form ma być wysłany na ten sam adres http://topcio.pl/index.php?action=log_in a nie AJAXowy
poprawione
No i zwraca poprawnie odpowiedź. Jak zamienisz w końcu na submit i poprawisz url to będzie dobrze.
zmieniłem na submit, i jak włączony jest javascript to dokument jest przeładowywany po enterze
To już ci dawałem kod jaki masz wstawić. I ma być na DOMContentLoaded/$.ready załadowany.
Dzięki wielkie, wreszcie to działa i mogę iść dalej
viking, a powiedz mi jeszcze jedno.
Zauważyłem, że przy włączonym js. zapytanie jest tak jakby wykonywane 2 razy.
W bazie danych licznik błędnych haseł wskakuje o 2, bez js zalicza o 1. Czy to normalne ?
Jeśli dobrze rozumiem dzieje się tak dlatego, że dodałem tę funkcję preventDefault.
Blokuje ona tylko wyświetlenie dokumentu w nowym oknie, ale i tak się wykonuje w tle?
zmieniłem
e.preventDefault();
na
return false;
i teraz wydaje się być ok
Wykonuje się dlatego że dwa razy przypinasz w kodzie to samo zdarzenie.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)