0

For some reason I can't get my JSON script to process the if... else statement properly. It'll process the else statement 100% of the time, and skip over the if section even if the values match. The PHP script processes perfectly when called upon by a static Html form though. Any ideas? The jQuery script follows:

$("#action_button").click(function() {
    var username = $("#username").val();
    var password = $("#password").val();
    var dataString = '&username=' + username + '&password=' + password;
    if(username=='' || password=='') {
        $('#success').fadeOut(400).hide();
        $('#error').fadeOut(400).show();
    } else {
        $.ajax({
        type: "POST",
        dataType: "JSON",
        url: "processing/logsig.php",
        data: dataString,
        json: {session_state: true},
        success: function(data){
        if(data.session_state == true) { // true means user is logged in.
            $("#main1").fadeOut(400);
        } else if(data.session_state == false) { // false means user is being registered.
            $("#main1").hide();
            $('#main1').load('views/dashboard.php').fadeIn(400);
        }
      }
   });
  }
});

Php Script:

<?php
header('Content-type:application/json');
session_start();
include("enc.php");
mysqlcon();

$email = mysql_real_escape_string(strip_tags($_POST["username"]));
$password = sha1($_POST["password"]);
$sql = "SELECT * FROM users WHERE username = '{$email}' AND password = '{$password}'";
$result = mysql_query($sql); // or exit("ERROR: " . mysql_error() . "<br>IN QUERY: " . $sql);

if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_array($result);
    $_SESSION["userid"] = $row['user_pid'];
    $json1 = json_encode(array('session_state' => true));
    echo $json1;
} else {
    $userid_generator = uniqid(rand(), false);
    mysql_query("INSERT INTO users (user_pid, email, password, datetime_registered, is_leader) VALUES ('$userid_generator', '{$email}', '{$password}', NOW(), 'no')");
    $id = mysql_insert_id();
        $leaders = mysql_query("SELECT * FROM users WHERE is_leader LIKE '%yes%'");
        while($rows = mysql_fetch_array($leaders)) {
            if ($rows['is_leader'] == 'yes') {
                $leader_id = $rows['user_pid'];
                mysql_query("INSERT IGNORE INTO friends (node1id, node2id, friends_since, friend_type)
                VALUES('$leader_id', '$userid_generator', NOW(), 'full')");
                }
    $_SESSION["userid"] = $userid_generator;
        }
    $json2 = json_encode(array('session_state' => false));
    echo $json2;
    }
?>
7
  • Have you checked the JSON data you are getting from the PHP file in Firebug ? Commented Oct 22, 2011 at 16:47
  • Yeah, it returns false every time. Commented Oct 22, 2011 at 16:49
  • which "if" is having the problem? in the jQ or PHP and which is it? if(username=='' || password=='') or the if(data.session_state) one? Commented Oct 22, 2011 at 16:59
  • I'm still pretty new to jQuery and Javascript, All I've picked up on is it has to do with the Javascript side because the PHP works perfectly when called upon by a static Html form. But I'm pretty sure it has to do with the if(username=='' || password==''), because the form isn't processing the returned JSON right... it keeps returning false no matter what's entered. Commented Oct 22, 2011 at 17:03
  • And the POST parameter you are sending to the PHP file is good ? Checked with Firebug ? Commented Oct 22, 2011 at 18:03

1 Answer 1

4

Looking at your site in firebug, POST parameters are NOT being sent properly. I am seeing

password    undefined
username    undefined

Upon further inspection it appears that neither of your inputs have an ID attribute and are not found by

var username = $("#username").val();
var password = $("#password").val();

This has nothing to do with JSON or PHP. Please bother to perform basic debugging steps. Stick alert()s on every line if you have to.

1
  • I've recently started using firebug and the chrome debugging tools, im still getting use to them. And I figured it has to do with the username and password fields. Thanks man. And sorry about the mixup. There's just allot of code I have to keep in consideration when im debugging. Commented Oct 22, 2011 at 20:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.