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;
}
?>
Looking at your site in firebug, POST parameters are NOT being sent properly. I am seeing
Upon further inspection it appears that neither of your inputs have an ID attribute and are not found by
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.