Reputation: 12163
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;
}
?>
Upvotes: 0
Views: 194
Reputation: 10211
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.
Upvotes: 4