AJAX logowanie brak rezultatów

0

AJAX nigdy mnie nie lubił, ze wzajemnością ;] Buduję stronkę, którą przez tego ajaxa na prawie 2 msc porzuciłem.

Podgląd na żywo:

Login: test
Hasło: test

Odkąd próbuję na siłę korzystać z funkcji w logowaniu to mi nie chce tej AJAX działać -.-

function __login__()
{
	if (isset($_POST['login']))
	{
	
		try
		{
				// wytnij id, hasło użytkownika z bazy i porównaj z dowolnie podaną nazwą użytkownika
				if ($stmt = $con->prepare('SELECT id, user_password FROM Users WHERE user_name = ?'))
				{
			
					$stmt->bind_param('s', $_POST['user_name']);
					$stmt->execute(); 
					$stmt->store_result(); 
			
						if ($stmt->num_rows > 0)
						{
							
							
							$stmt->bind_result($id, $user_password);
							$stmt->fetch();   

							$login_password_hash = password_hash($_POST['user_password'], PASSWORD_DEFAULT);

						
							if (password_verify($_POST['user_password'], $login_password_hash))
							{
								
								$_SESSION['user_loggen'] = TRUE;
								$_SESSION['user_name'] = $_POST['user_name'];
								$_SESSION['id'] = $id;
								
								//echo "zalogowano";
								return "success";
						
							}
							else
							{
								return "Błędna nazwa użytkownika lub/i hasło";
							}
						}
						else 
						{
								return "Błędna nazwa użytkownika lub/i hasło";
						}
			
			
						$stmt->close();
				}
				else
				{
					return "Błąd połączenia z bazą danych!";
			}
		}
		catch(Exception $error)
		{
			return $error->getMessage();
		}
	}
}

i sam AJAX:

	function __login__()
								{
								 var user_name=$("#user_name").val();
								 var user_password=$("#user_password").val();
								 if(user_name != "" && user_password != "")
								 {
								  $("#error_login").css({"display":"block"});
								  $.ajax
								  ({
								  type:'post',
								  url:'root/login/login.php',
								  data:{
								   __login__:"__login__",
								   user_name:user_name,
								   user_password:user_password
								  },
								  success:function(response) {
								  if(response=="success")
								  {
									window.location.href="index.php";
								  }
								  else
								  {
									$("#error_login").css({"display":"none"});
									alert("Wrong Details");
								  }
								  }
								  });
								 }

								 else
								 {
								  alert("Please Fill All The Details");
								 }

								 return false;
								}

Nie zwraca mi nic, ani że dobre dane, ani że złe, ani, że działa...
Ktoś widzi co źle zrobiłem?

0

Skoro nic nie działa to może funkcja wgl nie jest wywoływana. Próbowałeś jakość debugować ten kod?

0

w login pod funkcją:

 $results_login = __login__();
echo  $results_login;

i dziwne. wcześniej mi działało teraz się wywala:

Fatal error: Call to a member function prepare() on a non-object

1

Gdzie w funkcji login (co to za nazewnictwo???) masz wskazane co zawiera $con ? I wklej kod login.php.

I jeszcze jedno. Jak się wejdzie na tą Twoją stronę od razu dostajemy komunikat "błędny login lub hasło".

0

kod php w pierwszym poście jest z funkcji login

do con dobieram się tak:

$con = __getConnect__();
0
youmound napisał(a):

kod php w pierwszym poście jest z funkcji login

do con dobieram się tak:

$con = __getConnect__();

A możesz wkleić CAŁY kod pliku login.php? To raz. Dwa, gdzie to getConnect() się znajduje?

0

jedyne czego nie wkleiłem z login to :

session_start();

include_once("root.php");
	
$con = __getConnect__();

a connection jest tu:
plik root.php

define('MYSQL_USER', 'root');
define('MYSQL_PASSWORD', 'password');
define('MYSQL_HOST', 'localhost');
define('MYSQL_DATABASE', 'my db');

function __getConnect__()
{
 
	try
	{
		$sqli = mysqli_connect
		(
			MYSQL_HOST,
			MYSQL_USER,
			MYSQL_PASSWORD,
			MYSQL_DATABASE
		);
		
		
		return $sqli;
	}

	catch(Exception $error) 
	{
		return $error->getMessage();
	}
}

0

Nie przekazujesz $con do funkcji login

0

Chyba zrezygnowalem z przekazywania bo wtedy to się dopiero sypało ...

Missing argument 1 for login(), called

1

No a jak chcesz mieć niby dostęp do $con? W jaki sposób przekazujesz tą zmienną? Z błędu wynika, że nie przekazujesz go wcale :)

0

normalnie:

w login.php:

session_start();

include_once("root.php");
	
$con = __getConnect__();

//echo $con;

function __login__($con)
0

A co masz pod $con? Zamiast zakomentowanego echo dodaj var_dump($con) i zobacz co Ci zwraca funkcja.

0
object(mysqli)#1 (19) { ["affected_rows"]=> int(0) ["client_info"]=> string(6) "5.5.32" ["client_version"]=> int(50532) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(25) "Localhost via UNIX socket" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(10) "5.5.32-cll" ["server_version"]=> int(50532) ["stat"]=> string(159) "Uptime: 14186943 Threads: 9 Questions: 1962688167 Slow queries: 10208 Opens: 11742294 Flush tables: 1 Open tables: 10000 Queries per second avg: 138.344" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(169893031) ["warning_count"]=> int(0) } 

nic konkretnego z tego nie jestem wstanie wyczytać. aczkolwiek wcześniej sprawdzałem, czy $con posiada odpowiedni status ... i posiadał...

1

Możesz jednak podesłać obecny kod login.php ? Nie ma siły, żeby PHP "gubił" ot tak sobie parametry funkcji. Kod login.php powinien wyglądać mniej więcej tak:

<?php
	session_start();
 
	include_once("root.php");
 
	$con = __getConnect__();
	
	function __login__($con)
	{
		if (isset($_POST['login']))
		{
	 
			try
			{
					// wytnij id, hasło użytkownika z bazy i porównaj z dowolnie podaną nazwą użytkownika
					if ($stmt = $con->prepare('SELECT id, user_password FROM Users WHERE user_name = ?'))
					{
	 
						$stmt->bind_param('s', $_POST['user_name']);
						$stmt->execute(); 
						$stmt->store_result(); 
	 
							if ($stmt->num_rows > 0)
							{
	 
								$stmt->bind_result($id, $user_password);
								$stmt->fetch();   
	 
								$login_password_hash = password_hash($_POST['user_password'], PASSWORD_DEFAULT);
	 
								if (password_verify($_POST['user_password'], $login_password_hash))
								{
	 
									$_SESSION['user_loggen'] = TRUE;
									$_SESSION['user_name'] = $_POST['user_name'];
									$_SESSION['id'] = $id;
	 
									//echo "zalogowano";
									return "success";
	 
								}
								else
								{
									return "Błędna nazwa użytkownika lub/i hasło";
								}
							}
							else 
							{
									return "Błędna nazwa użytkownika lub/i hasło";
							}
	 
							$stmt->close();
					}
					else
					{
						return "Błąd połączenia z bazą danych!";
				}
			}
			catch(Exception $error)
			{
				return $error->getMessage();
			}
		}
	}
	
	$results_login = __login__($con);
	echo  $results_login;
0

yh.
zabrakło mi tu:

 $results_login = __login__(); 

przekazanie $con

ale to nic nie zmienia, nadal jest błąd o missing argument.

0

Nadal rzuca błędem jeżeli masz plik tak jak powyżej?

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