skip to Main Content

I have this ajax function for login.

Edit: I just noticed that this server runs php7 while other server where the login does work uses php5. What has changed in php that this script doesn’t work anymore?

Edit 2: Looks like the server request method isn’t post but changed to get, why?

Solution: needed to remove the .php from url: "./ajaxcall/login.php", because I use pretty url htaccess.😅

var InName = $('#InName').val();
        var InPass = $('#InPass').val();
        alert(InName);
        $.ajax({
            type: "POST",
            url: "./ajaxcall/login.php",
            dataType: "json",
            data: {InName:InName, InPass:InPass},
            error: function (request, error) {
                console.log(arguments);
                alert("Inlog Can't do because: " + error);
            },
            success : function(data){
                if (data.code == "200"){
                    $("#InErEr").html(data.msg);
                    //window.location.reload(true);
                } else {
                    $("#InErEr").html(data.msg);
                    $('.lds-dual-ring').animate({opacity: 0}, 300);
                }
            }
        });

On the alert(InName); I get the correct value of the username. But when I check in my php file $_POST['InName'] it is empty.

Part of php file

include('../config.php');

if(empty($_POST['InName'])) {
    $Ierror = 'Username is required.';
}
if($_POST['InPass'] == '') {
    $Ierror = 'Password is required.';
}
$username = $_POST['InName'];
$passwordL = $_POST['InPass'];
// count user in between //
if($Inlognumber_of_rows == 0) {
    $Ierror = 'Username not found.';
} else {
    // password check //
    if(password_verify($salty_pass, $hashed_password)) {
    } else {
        $Ierror = 'Password incorrect.';
    }
}
if ($Ierror == '') {
// do login //
} else {
    $showerror = '<span style="color:#F00;">'.$Ierror.$username.$passwordL.$_POST['InName'].$_POST['InPass'].'</span>';
    echo json_encode(['code'=>404, 'msg'=>$showerror]);
    exit;
}

In the return message, $showerror I only get, Username not found, without the posted values. So the login is not working because of empty values? User is also present in the database of course. I also don’t get the empty $_POST errors. So to cap up, in javascript I get the correct value for InName but not in php.

2

Answers


  1. Chosen as BEST ANSWER

    Solution: needed to remove the .php from url: "./ajaxcall/login.php", because I use pretty url htaccess.😅


  2. You are close but your error catch is not correct … try this (Jquery):

    var InName = 'something';
    var InPass = 'morething';
    $.post("./ajaxcall/login.php", {
        InName: InName,
        InPass: InPass
      }, function(data, status) {
        console.log(data, status);
      }).done(function() {
        alert("second success");
      })
      .fail(function() {
        alert("error");
      })
      .always(function() {
        alert("finished");
      });

    on your php file just do print_r($_POST); and you will receive this in your console…:

    Array
    (
        [InName] => something
        [InPass] => morething
    )
     success

    Basically you were trying to print the error where you should have consoled log the request.responeText…

    A good trick to know if posts arrived to the php even if the console.log won’t show is doing this in the php file:

    <?php
    print_r($_POST) ;
    
    $newfile = fopen('newfile.txt','a');
    fwrite($newfile,json_encode($_POST));
    fclose($newfile);

    This will print and also store on a local file the post data….

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search