AJAX + PHP login

tes.php

 <form name="flogin">
	<input type="email" name="email" autocomplete="off" required>
	<input type="password" name="password" autocomplete="off" required>
	<button type="submit" onclick="return ceklogin()">Sign In</button>
</form>
<script type="text/javascript">
	function ceklogin(){
	  	var email=document.forms['flogin'].email.value;
		var password=document.forms['flogin'].password.value;

			$.ajax({
				url: 'proses.php',
				method: 'POST',
				data: {mail: mail, pass: pass},
				cache: false,
				dataType: 'html',
				success: function(response) {
				if(response =="success")
				{
					alert("login sukses");
				}
                                else
				{
					alert("login gagal");
				}
			}
		});
	}
</script>

proses.php

 <?php
	include 'libraries/config.php';
	include 'function.php';

	$email    = $_POST['email'];
	$password = $_POST['password'];

	$cek=mysqli_query($conn, "SELECT * FROM user_csr WHERE email='$email' AND csr_pwd='$password'");
	$result = mysqli_fetch_assoc($cek);
	if(mysqli_num_rows($cek)>0){

		echo "success";
	}
	else
	{
		echo "failed";
	}
?>

saya dapat respon failed alias login gagal.. padahal di database sudah sesuai email dan passswordnya sudah benar.. apa ada yg salah atau yg kurang tentang ajaxnya ? mohon master sekalian dibantu :)

avatar inginbelajar
@inginbelajar

95 Kontribusi 21 Poin

Diperbarui 6 tahun yang lalu

6 Jawaban:

Dibagian form inputny ditambahin id biar lebih spesifik.. misal


tes.php
<form name="flogin">
	<input type="email" name="email" id="email" autocomplete="off" required>
	<input type="password" name="password" id="password" autocomplete="off" required>
	<button type="submit" onclick="return ceklogin()">Sign In</button>
</form>

Terus di jsnya


Var mail = document.getElementById('email').value;
Var pass = document.getElementById('password').value;

// bagian backendnya disesuaikan

Semoga membantu

avatar BroGoeh
@BroGoeh

121 Kontribusi 47 Poin

Dipost 6 tahun yang lalu

di

 data: {mail: mail, pass: pass}

valuenya ente buat mail dan yg tertulis adalah email bukan mail, solusinya mungkin diganti jadi kayak gini:

 data: {email: email, password: password}

data pertama adalah namenya dan kedua adalah valuenya, jika namenya adalah mail maka di proses.php-> $email = $_POST['mail'];

contoh:


var email=document.forms['flogin'].email.value;
var password=document.forms['flogin'].password.value;
data: {mail: email, pass: password}

<?php

$email    = $_POST['mail'];
$password = $_POST['pass'];

mungkin bisa membantu

avatar mhdadil
@mhdadil

105 Kontribusi 61 Poin

Dipost 6 tahun yang lalu

tetep tidak bisa.. mengapa ya ? bisa dicek akang @mhdadil & @BroGoeh :

tes.php


<form>
	<input type="email" name="email" id="mail" autocomplete="off" required>
	<input type="password" name="password" id="pass" autocomplete="off" required>
	<button type="submit" onclick="return ceklogin()">Sign In</button>
</form>

<script type="text/javascript">
  	function ceklogin(){
		var email    = document.getElementById('mail').value;
		var password = document.getElementById('pass').value;

		$.ajax({
			url: 'proses.php',
			method: 'POST',
			data: {email: email, password: password},
			dataType: 'html',
			success: function(html) {
				if(html =='true')
				{
					alert("login success");
				}
		                else
				{
					alert("login failed");
				}
			}
		});
	}
  </script>

proses.php

 <?php
	include 'libraries/config.php';
	include 'function.php';

	$email    = trim($_POST['email']);
	$password = trim($_POST['password']);

	$cek=mysqli_query($conn, "SELECT * FROM user_csr WHERE `email`='{$email}' AND `csr_pwd`='{$password}'");
	$result = mysqli_fetch_assoc($cek);
	if(mysqli_num_rows($cek)>0)
        {
		echo true;
	}
	else
	{
		echo false;
	}

?>

outputnya tetep login failed..

avatar inginbelajar
@inginbelajar

95 Kontribusi 21 Poin

Dipost 6 tahun yang lalu

coba kayak gini

 <script type="text/javascript">
  	function ceklogin(){
		var email    = document.getElementById('mail').value;
		var password = document.getElementById('pass').value;

		$.ajax({
			url: 'proses.php',
			method: 'POST',
			data: {email: email, password: password},
			success: function(data) {
				if(data =='true')
				{
					alert("login success");
				}
		                else
				{
					alert("login failed");
				}
			}
		});
	}
  </script>

terus diprosesnya

 <?php
	include 'libraries/config.php';
	include 'function.php';

	$email    = trim($_POST['email']);
	$password = trim($_POST['password']);

// query ga usah pake kurung kurawal buat nilainya terus keynya gak pake back quote
	$cek=mysqli_query($conn, "SELECT * FROM user_csr WHERE email='$email' AND csr_pwd='$password'");
	$result = mysqli_fetch_assoc($cek);
	if(mysqli_num_rows($cek)>0)
        {
		echo true;
	}
	else
	{
		echo false;
	}

?>

semoga membantu

avatar BroGoeh
@BroGoeh

121 Kontribusi 47 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

$.ajax itu fungsi jquery gan.. ya pasti ndk bisa..coba gini

// kalau agan gk online ya download dulu..
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script type="text/javascript">

  $(document).ready(function(){

      $('#submit').click(function(){
          var email    = $('#email').val();
          var password = $('#password').val();

          $.ajax({
              url: 'proses.php',
              method: 'POST',
              data: {email: email, password: password},
              dataType: 'html',
              success: function(html) {

                  if(html == true)
                  {
                      alert("login success");
                      //tujuan
                      self.location.href = "tujuan.php";
                  }
                          else
                  {
                      alert("login failed");
                      location.reload();
                  }
              }
          });
      });
  });

</script>

<form method="post" action="">
  <input type="email" name="email" id="email" autocomplete="off" required autofocus>
  <input type="password" name="password" id="password" autocomplete="off" required>
  <input type="submit" name="submit" id="submit">
</form>

proses.php

<?php
  $email    = trim($_POST['email']);
  $password = trim($_POST['password']);

  $cek    = mysqli_query($conn, "SELECT * FROM user_csr WHERE email='$email' AND csr_pwd='$password'");
  // jgn lupa kalau memang pake enkripsi .. ini contoh pake md5 / password_verify / yg lain.. kalau gk yg gk masalah..
  // $password  = md5($password);
  $result   = mysqli_fetch_assoc($cek);

  if(mysqli_num_rows($cek)>0)
    {
    echo true;
  }
  else
  {
    echo false;
  }

?>

Good Luck (^_^)/..

avatar ciloxz
@ciloxz

284 Kontribusi 139 Poin

Dipost 6 tahun yang lalu

kenapa valuenya jadi true?

success: function(html) {
				if(html =='true')
				{
					alert("login success");
				}
		                else
				{
					alert("login failed");
				}
			}

yg ente tulis kan success bukan true jika querynya berhasil. coba ganti jadi gini

success: function(html) {
				if(html =='success')
				{
					alert("login success");
				}
		                else
				{
					alert("login failed");
				}
			}

btw ente udah linked source jquerynya kan?

avatar mhdadil
@mhdadil

105 Kontribusi 61 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban