Jump to content
Trixx-

Ajax login

Recommended Posts

Sveiki, es taisot lapu sapratu, ka man neiet ajax apstrādātājs. Parastas komandas, piem. alert, html, text, utt. iet, bet kad taisa function(data){alert(data)} nekas neiet.

html kods - 

<div class="container">
<div class="message"></div>
<form method="post" action="/login">
	<input type="text" name="login" class="login" placeholder="Lietotājvārds"><br>
	<input type="password" name="password" class="pass" placeholder="Parole"><br>
	<input type="submit" name="enter" value="Autorizēties">
</form>
</div>

Ajax - 

$(document).ready(function(){
	$('form').submit(function(event) {
		event.preventDefault();
		var login = $('.login').val();
		var password = $('.pass').val();
		$.ajax({
			type : 'POST',
			url  : '/controllers/profile.php',
			data : ({login: login, password: password}),
			contentType: false,
			cache: false,
			processData: false,
			success : function(result){
				$('.message').html(result);
			},
		});
	});
})

Un php kods - 

if($url[0] == 'login' && isset($_POST['enter'])) { //Logins skripts
		$login = mysqli_real_escape_string($db, $_POST['login']);
		$pass = mysqli_real_escape_string($db, $_POST['password']);
		$query = mysqli_query($db, "SELECT `username`, `password`, `active` FROM `users` WHERE `username` = '".$login."' AND `password` = '".$pass."' AND `active` = 1");
		$fetch = mysqli_fetch_array($query);
		$count = mysqli_num_rows($query);
		if($count > 0) {
			if($_POST['password'] == $fetch['password']) {
				$row = mysqli_fetch_array(mysqli_query($db, "SELECT `id`, `username`, `name`, `regdate`, `email`, `password`, `group` FROM `users` WHERE `username` = '".$login."'"));
				$_SESSION['USER_LOGIN_IN'] = 1;
				foreach ($row as $Key => $Value) {
					$_SESSION['USER_'.strtoupper($Key)] = $Value;
				}
			} else {
				echo 'Nepareiza parole!';
			}
		} else {
			echo 'Tāda profila neeksistē!';
		}
	}

Kāds var pateikt kur ir kļūda, ka beigās rāda tukšu alert?

Edited by Trixx-

Share this post


Link to post
Share on other sites
7 minutes ago, Trixx- said:

Kāds var pateikt kur ir kļūda, ka beigās rāda tukšu alert?

Jo veiksmes gadījumā tu neizvadi tekstu?

P.S Es ceru, ka tu tikai mācies... Paroles derētu hashot, datus ajax requestiem derētu atgriezt parsējamā formā, like Json utt...

EDIT: Tukšs varētu būt arī 500 kļūdas dēļ... "white screen of death"...

Edited by Chill it BanG

Share this post


Link to post
Share on other sites

Par parolēm, tas viss skaidrs, man pašlaik slinkums hashot, testiem nevajag hashus, par json (Neesmu mācijies, nezinu kā strādāt ar json, varbūt kāds varētu uzrakstīt mazu piemēru?) Un jā, gribētos, lai izvadās teksts, ja ir viss chill tad, lai parāda, ka viss labi, ja nav viss labi tad, lai rāda, ka errors.

Share this post


Link to post
Share on other sites

Nuu, ja gribi parādīt ko tādu... te ir primitīvs piemērs, lai no JS saprastu veiksme / neveiksme + teksts. For sake of example

Ja neiet un met kļūdu, ka unexpected "[", uzliec jaunāku PHP, vai izlabo uz array()

<?php
if($url[0] == 'login' && isset($_POST['enter'])) { //Logins skripts
	$login = mysqli_real_escape_string($db, $_POST['login']);
	$pass = mysqli_real_escape_string($db, $_POST['password']);
	$query = mysqli_query($db, "SELECT `username`, `password`, `active` FROM `users` WHERE `username` = '".$login."' AND `password` = '".$pass."' AND `active` = 1");
	$fetch = mysqli_fetch_array($query);
	$count = mysqli_num_rows($query);
	if($count > 0) {
		if($_POST['password'] == $fetch['password']) {
			$row = mysqli_fetch_array(mysqli_query($db, "SELECT `id`, `username`, `name`, `regdate`, `email`, `password`, `group` FROM `users` WHERE `username` = '".$login."'"));
			$_SESSION['USER_LOGIN_IN'] = 1;
			foreach ($row as $Key => $Value) {
				$_SESSION['USER_'.strtoupper($Key)] = $Value;
			}
			echo json_encode(["status" => "OK", "msg" => "Viss čotka!"]);
		} else {
			echo json_encode(["status" => "FAIL", "msg" => "Nepareiza parole!"]);
		}
	} else {
		echo json_encode(["status" => "FAIL", "msg" => "Tāds profils neeksistē!"]);
	}
}

un

$(document).ready(function(){
	$('form').submit(function(event) {
		event.preventDefault();
		var login = $('.login').val();
		var password = $('.pass').val();
		$.ajax({
			type : 'POST',
			url  : '/controllers/profile.php',
			data : ({login: login, password: password}),
			contentType: false,
			cache: false,
			processData: false,
			success : function(result){
				result = JSON.parse(result);
				if(result.status == "FAIL"){
					// nez, uzliec, ka krāsa sarkana vai whatever
				}elseif(result.status == "OK"){
					// green.. vai vienlaga ko tev vajag, ja ir ok
				}else{
					// acīmredzot notika, kas negaidīts.. 
				}
				// izvadi teksta ziņu
				$('.message').html(result.msg);
			},
		});
	});
})

 

Share this post


Link to post
Share on other sites
1 minute ago, Chill it BanG said:

Nuu, ja gribi parādīt ko tādu... te ir primitīvs piemērs, lai no JS saprastu veiksme / neveiksme + teksts. For sake of example

Ja neiet un met kļūdu, ka unexpected "[", uzliec jaunāku PHP, vai izlabo uz array()


<?php
if($url[0] == 'login' && isset($_POST['enter'])) { //Logins skripts
	$login = mysqli_real_escape_string($db, $_POST['login']);
	$pass = mysqli_real_escape_string($db, $_POST['password']);
	$query = mysqli_query($db, "SELECT `username`, `password`, `active` FROM `users` WHERE `username` = '".$login."' AND `password` = '".$pass."' AND `active` = 1");
	$fetch = mysqli_fetch_array($query);
	$count = mysqli_num_rows($query);
	if($count > 0) {
		if($_POST['password'] == $fetch['password']) {
			$row = mysqli_fetch_array(mysqli_query($db, "SELECT `id`, `username`, `name`, `regdate`, `email`, `password`, `group` FROM `users` WHERE `username` = '".$login."'"));
			$_SESSION['USER_LOGIN_IN'] = 1;
			foreach ($row as $Key => $Value) {
				$_SESSION['USER_'.strtoupper($Key)] = $Value;
			}
			echo json_encode(["status" => "OK", "msg" => "Viss čotka!"]);
		} else {
			echo json_encode(["status" => "FAIL", "msg" => "Nepareiza parole!"]);
		}
	} else {
		echo json_encode(["status" => "FAIL", "msg" => "Tāds profils neeksistē!"]);
	}
}

un


$(document).ready(function(){
	$('form').submit(function(event) {
		event.preventDefault();
		var login = $('.login').val();
		var password = $('.pass').val();
		$.ajax({
			type : 'POST',
			url  : '/controllers/profile.php',
			data : ({login: login, password: password}),
			contentType: false,
			cache: false,
			processData: false,
			success : function(result){
				result = JSON.parse(result);
				if(result.status == "FAIL"){
					// nez, uzliec, ka krāsa sarkana vai whatever
				}elseif(result.status == "OK"){
					// green.. vai vienlaga ko tev vajag, ja ir ok
				}else{
					// acīmredzot notika, kas negaidīts.. 
				}
				// izvadi teksta ziņu
				$('.message').html(result.msg);
			},
		});
	});
})

 

w8 mate, tur kur tu saki, lai krāsu ieliktu, kā man rakstīt, lai krāsu ieliktu, jo javascript nezinu tik labi. Vai tad tur nevajadzēja ķipa krāsas vietā rakstīt to $('.message').html(result.msg);?

Share this post


Link to post
Share on other sites
Just now, Trixx- said:

w8 mate, tur kur tu saki, lai krāsu ieliktu, kā man rakstīt, lai krāsu ieliktu, jo javascript nezinu tik labi. Vai tad tur nevajadzēja ķipa krāsas vietā rakstīt to $('.message').html(result.msg);?

$(document).ready(function(){
	$('form').submit(function(event) {
		event.preventDefault();
		var login = $('.login').val();
		var password = $('.pass').val();
		$.ajax({
			type : 'POST',
			url  : '/controllers/profile.php',
			data : ({login: login, password: password}),
			contentType: false,
			cache: false,
			processData: false,
			success : function(result){
				result = JSON.parse(result);
				if(result.status == "FAIL"){
					// nez, uzliec, ka krāsa sarkana vai whatever
					$('.message').css("color", "red");
				}elseif(result.status == "OK"){
					// green.. vai vienlaga ko tev vajag, ja ir ok
					$('.message').css("color", "green");
				}else{
					// acīmredzot notika, kas negaidīts.. 
				}
				// izvadi teksta ziņu
				$('.message').html(result.msg);
			},
		});
	});
})

jQuery CSS... http://api.jquery.com/css/
Piemēram derēs... 

 

Share this post


Link to post
Share on other sites

Sanāk tā, ka lapa reloadojas un tad izlec tāda lieta :D

{"status":"OK","msg":"Viss \u010dotka!"} < Tas ir, ja parole pareiza, ja nepareiza izlec arī tavs tas teksts, bet btw kāpēc viņš reload taisa, ja ir event.preventDefault()?

Share this post


Link to post
Share on other sites
3 minutes ago, Chill it BanG said:

Pārlūka Developer tooļos paskaties (Parasti F12... vai inspect element)
Vai nu jQuery neesi pievienojis, vai kāda sintakses kļūda

Juu, tikko izleca -  Uncaught SyntaxError: Unexpected token { - login.js:18

E: Ok, tur bija maza kļūda, vajadzēja nejau elseif, bet else if, un kārtējais errors:

VM1576:1 Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at Object.success (login.js:14)
    at i (jquery.js:2)
    at Object.fireWith [as resolveWith] (jquery.js:2)
    at A (jquery.js:4)
    at XMLHttpRequest.<anonymous> (jquery.js:4)

Edited by Trixx-

Share this post


Link to post
Share on other sites

Sorry par dp, bet lieta tāda, ka nekas neiet, bet arī erroru nav consolē.

$(document).ready(function() {
    $('form').submit(function(event) {
        event.preventDefault();
        var login = $('.login').val();
        var password = $('.pass').val();
        $.ajax({
            url: '/controllers/profile.php',
            type: 'POST',
            dataType: 'json',
            data: ({
                login: login,
                password: password
            }),
            contentType: false,
            cache: false,
            processData: false,
            success: function(result) {
                result = JSON.parse(result);
                if (result.status == "FAIL") {
                    $('.message').css("color", "red");
                } else if (result.status == "OK") {
                    $('.message').css("color", "green");
                } else {
                }
                $('.message').html(result.msg);
            },
        });
    });
})

 

Share this post


Link to post
Share on other sites

Ir tāda laba komanda console.log(text); izvadīs tekstu browsera consolē.
Ej pa soļiem cauri savam kodam, saliec visur console.log un skaties līdz kurienei tiek un kas izvadās. Ja nezini json vai kaut ko citu, tad ieraksti googlē how to json javascript. 

Share this post


Link to post
Share on other sites
57 minutes ago, LoyC said:

Ir tāda laba komanda console.log(text); izvadīs tekstu browsera consolē.
Ej pa soļiem cauri savam kodam, saliec visur console.log un skaties līdz kurienei tiek un kas izvadās. Ja nezini json vai kaut ko citu, tad ieraksti googlē how to json javascript. 

Tajā log funkcijā jāraksta text vai to ko gribu izvadīt?

Share this post


Link to post
Share on other sites
20 minutes ago, Trixx- said:

Tajā log funkcijā jāraksta text vai to ko gribu izvadīt?

console.log("Ir 1");.... console.log("Ir 4"); da jebbkādu text, pievieno sava koda vairakas vietas, iekš expect element consoles redzeesi cik tālu parādīs, tur kur neparādīs kādu text, zināsi, ka tur ir kļūda.

Share this post


Link to post
Share on other sites
28 minutes ago, Trixx- said:

Tajā log funkcijā jāraksta text vai to ko gribu izvadīt?

google -> javascript console.log
Iemācies meklēt info un atkritīs visi šie jautājumi.

Share this post


Link to post
Share on other sites

Sanāk, ka ja es noņemu nost dataType: 'json' tad izlec errors ko es iepriekš minēju, ja es uzlieku dataType tad erroru nav un arī nekas neiet.

Nevar būt kļūda php kodā ar json?

$login = mysqli_real_escape_string($db, $_POST['login']);
$pass = mysqli_real_escape_string($db, $_POST['password']);
$query = mysqli_query($db, "SELECT `username`, `password`, `active` FROM `users` WHERE `username` = '".$login."' AND `password` = '".$pass."' AND `active` = 1");
$fetch = mysqli_fetch_array($query);
$count = mysqli_num_rows($query);
if($count > 0) {
	if($_POST['password'] == $fetch['password']) {
		$row = mysqli_fetch_array(mysqli_query($db, "SELECT `id`, `username`, `name`, `regdate`, `email`, `password`, `group` FROM `users` WHERE `username` = '".$login."'"));
		$_SESSION['USER_LOGIN_IN'] = 1;
		foreach ($row as $Key => $Value) {
			$_SESSION['USER_'.strtoupper($Key)] = $Value;
		}
		echo json_encode(["status" => "OK", "msg" => "Veiksmīgi autorizējies"]);
	} else {
		echo json_encode(["status" => "FAIL", "msg" => "Nepareiza parole!"]);
	}
} else {
	echo json_encode(["status" => "FAIL", "msg" => "Tāds profils neeksistē!"]);
}

Un sakarā ar to console.log sanāca tā, ka ieliekot console.log iekš $.ajax piem. success formā viņš neko neizvada, kā es ierakstu ārpus ajax to console.log tā viss uzrakstās.

Edited by Trixx-

Share this post


Link to post
Share on other sites

php failā atstāj tikai 1 rindu ar echo json_encode(["status" => "FAIL", "msg" => "Tāds profils neeksistē!"]);
un izmēģini vai tas darbojās, lai skaidrāk varētu saprastu, kur tieši ir problēma.

Share this post


Link to post
Share on other sites

Skatos... neredzu, ka iekš ajax būtu norādīts `enter` kā tas ir iekš PHP.

if($url[0] == 'login' && isset($_POST['enter'])) { //Logins skripts

 

Share this post


Link to post
Share on other sites
19 minutes ago, LoyC said:

php failā atstāj tikai 1 rindu ar echo json_encode(["status" => "FAIL", "msg" => "Tāds profils neeksistē!"]);
un izmēģini vai tas darbojās, lai skaidrāk varētu saprastu, kur tieši ir problēma.

Atstāju to rindu kuru tu pateici un pat to nerādija.

9 minutes ago, Arthur. said:

Skatos... neredzu, ka iekš ajax būtu norādīts `enter` kā tas ir iekš PHP.


if($url[0] == 'login' && isset($_POST['enter'])) { //Logins skripts

 

.submit ir tas pats kas enter?

Share this post


Link to post
Share on other sites

Man šķiet, tev vajadzētu sākt ar pamatiem. Izskatās, ka pilnīgi 0 saprašanas ir. I give up

  • Upvote 1

Share this post


Link to post
Share on other sites
24 minutes ago, Trixx- said:

Atstāju to rindu kuru tu pateici un pat to nerādija.

.submit ir tas pats kas enter?

Tu zini, kas ir forma, POST requests, GET request un kā viņiem padot datus? Tev izskatās būtu jāsāk ar to, pirms ķeries klāt šo lietu sūtīšanai/apstrādei ar JavaScript.

Share this post


Link to post
Share on other sites
53 minutes ago, sLIDe said:

Tu zini, kas ir forma, POST requests, GET request un kā viņiem padot datus? Tev izskatās būtu jāsāk ar to, pirms ķeries klāt šo lietu sūtīšanai/apstrādei ar JavaScript.

Man iet login skripts bez ajax, bet gribu, lai strādā arī ar ajax. Es agrāk izmantoju failus ar tiem .php extensions, bet tagad izlēmu kaut ko jaunu pamēģināt, lai viss būtu vienā failā. Gan logins, gan logout, gan register, utt.

Share this post


Link to post
Share on other sites

Izlasi lūdzu vēlreiz manu postu, un tad izlasi savu atbildi.

Jo šobrīd tai atbildei ar manu postu ir tieši 0 saistība.

Share this post


Link to post
Share on other sites
1 hour ago, Trixx- said:

Man iet login skripts bez ajax, bet gribu, lai strādā arī ar ajax. Es agrāk izmantoju failus ar tiem .php extensions, bet tagad izlēmu kaut ko jaunu pamēģināt, lai viss būtu vienā failā. Gan logins, gan logout, gan register, utt.

Lieta tāda, ka ja izmantosi ajax, tur visi parametri pa jaunu jāsniedz, tie html form parametri nesuutieies tev uz php, tikliidz nebusi noradijis vinus ieksh js, pashlaik tev uz PHP tiek padoti tikai šie parametri - $_POST["login"] un $_POST["password"], ko esi norādījis:

"data: ({ login: login, password: password }),"

Share this post


Link to post
Share on other sites
58 minutes ago, Arthur. said:

Lieta tāda, ka ja izmantosi ajax, tur visi parametri pa jaunu jāsniedz, tie html form parametri nesuutieies tev uz php, tikliidz nebusi noradijis vinus ieksh js, pashlaik tev uz PHP tiek padoti tikai šie parametri - $_POST["login"] un $_POST["password"], ko esi norādījis:

"data: ({ login: login, password: password }),"

Emm, agrāk taisīju kā tagad un viss gāja, bet tagad neiet.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.