Login PHP Ajax

Résolu
Bonjour,

Je n'arrive pas a faire de connexion avec php ajax. Meme en regardant des tuto sur internet.

voici le code php:
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

date_default_timezone_set('Europe/Paris');
require('config.php');
session_start();

function get_ip(){
	if ( isset ( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ){
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}elseif ( isset ( $_SERVER['HTTP_CLIENT_IP'] ) ){
		   $ip  = $_SERVER['HTTP_CLIENT_IP'];
	}else{
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	return $ip;
}
$IP=get_ip();
$message='';
$username=$_REQUEST["username"];
echo '<br> username requiest = ' + $username;

$username=mysqli_real_escape_string($conn, $username);
echo '<br> username mysqli real escape string = ' + $username;

$password=$_REQUEST["password"];
echo '<br> password request = ' + $password;

$password=mysqli_real_escape_string($conn, $password);
echo '<br> password mysqli real escape string = ' + $password;

$password=hash('sha256', $password);
echo '<br> password hash = ' + $password;

	



function login($username, $password, $conn, $IP){

	$rlt = mysqli_query($conn, "SELECT * FROM `user` WHERE username='$username' and password='$password");
	$row = mysqli_num_rows($rlt);
	var_dump($row);
	if($row==1){
			
		$last = "UPDATE `user` SET last_login = NOW() , last_ip = '$IP' WHERE username='$username'LIMIT 1";
		$query = mysqli_query($conn, $last);
		$_SESSION['username'] = $username;
	}

}

if(login($username, $password, $conn, $IP)){
	$message = "Connection reussi";
	echo json_encode(array("statusCode"=>200));
}else{
	$message = "Erreur connection ";
	echo json_encode(array("statusCode"=>201));
}
setcookie('lgn-msg', $message , time()+3600*24);

?>


et voici la requete :
page.php?username=user&password=passwd


J'utilise le même fonctionnement pour s'inscrire et cela fonctionne tres bien

1 réponse

  1. Modérateur
    Bonjour
    Tu parles d'Ajax...
    Il faudrait donc également nous montrer ton code JavaScript
    1. Oui je pense que cela sera mieux. J'utilise le meme code pour s'inscrire et cela fonctionne.

      Voici le code javascript :
      const username_lgn = document.getElementById('username-lgn');
      const password_lgn = document.getElementById('password-lgn');
      usernameLGN = username_lgn.value;
      passwordLGN = password_lgn.value;
      
      function login(usernameLGN, passwordLGN){
          var xmlhttplgn = new XMLHttpRequest();
      
          xmlhttplgn.open("GET", "user/login.php?username=" + usernameLGN + '&password=' + passwordLGN, true);
          xmlhttplgn.send();
      }
    2. Modérateur
      @firpicquestion bête ... si tu ouvres l'url directement dans ton navigateur .. tu obtiens quoi ?
      Un message d'erreur peut-être ..
    3. @jordane45J'obtient cette erreur :



      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 23

      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 23
      0
      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 26

      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 26
      0
      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 29

      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 29
      0
      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 32

      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 32
      0
      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 35

      Warning: A non-numeric value encountered in F:\XAMPP\htdocs\disc\user\login.php on line 35
      0
      Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in F:\XAMPP\htdocs\disc\user\login.php on line 44
      NULL {"statusCode":201}


      de ce que j'ai compris moi, il n'arrive a récupère password et ussername dans url
    4. Modérateur
      @firpicLa concaténation en php .. c'est avec un point .. pas un plus..
      echo '<br> username requiest = ' + $username;
      

      A corriger par
      echo '<br> username requiest = ' . $username;
      


      idem sur les autres lignes
    5. Modérateur
      @jordane45Ensuite, il manque une quote dans ta requête
      A corriger par
      
      	$rlt = mysqli_query($conn, "SELECT * FROM `user` WHERE username='$username' and password='$password' ");