*/ include('../../.htpasswd'); //Connect to to database $con = mysqli_connect($host, $username_rw, $pass_rw, $db_name); //Set encoding options mysqli_set_charset($con, 'utf-8'); header('Content-Type: text/html; charset=utf8'); mysqli_query($con, 'SET NAMES utf8;'); //Return the db connection return $con; } //Connect to the database $con = startdb('rw'); //Get data from URL $client = mysqli_real_escape_string($con, $_GET[GET_CLIENT]); $user = mysqli_real_escape_string($con, $_GET[GET_USER]); $target = strtolower(mysqli_real_escape_string($con, $_GET[GET_TARGET])); $id = strtolower(mysqli_real_escape_string($con, $_GET[GET_ID])); $permalink = strtolower(mysqli_real_escape_string($con, $_GET[GET_PERMALINK])); $ink = strtolower(mysqli_real_escape_string($con, $_GET[GET_PERMALINK])); $permalink = strtolower(mysqli_real_escape_string($con, $_GET[GET_PERMALINK])); $username = mysqli_real_escape_string($con, $_GET[GET_USERNAME]); $text = mysqli_real_escape_string($con, $_GET[GET_TEXT]); //Validate data if (strlen($client) < 1){ //Bad request http_response_code(400); exit(); } if (strlen($user) < 1){ $user = ''; } if (strlen($target) < 1){ //Bad request http_response_code(400); exit(); } if ($target != TARGET_PHOTO && $target != TARGET_POST && $target != TARGET_ACTIVITY){ //Bad request http_response_code(400); exit(); } if (strlen($username) < 1){ //Bad request http_response_code(400); exit(); } //Check id and/or permalink. Several cases: //1st case: id and permalink empty: Error. if (strlen($id) < 1 && strlen($permalink) < 1){ //Bad request http_response_code(400); exit(); } //2nd case: Comment for post, permalink and no id. elseif ($target == TARGET_POST && strlen($id) < 1 && strlen($permalink) >= 1){ //Check if post exists... $q = mysqli_query($con, "SELECT id, comments FROM post WHERE visible = 1 AND permalink = '$permalink';"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ //... and if it does, check if can be commented. $r = mysqli_fetch_array($q); $item_id = $r['id']; if ($r['comments'] != 1){ //'Forbidden' status code http_response_code(403); exit(); } } } //3rd case: Comment for post, id and no permalink. elseif ($target == TARGET_POST && strlen($id) >= 1 && strlen($permalink) < 1){ //Check if post exists... $q = mysqli_query($con, "SELECT id, comments FROM post WHERE visible = 1 AND id = $id;"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ //... and if it does, check if can be commented. $r = mysqli_fetch_array($q); $item_id = $r['id']; if ($r['comments'] != 1){ //'Forbidden' status code http_response_code(403); exit(); } } } //4th case: Comment for post, permalink and id. elseif ($target == TARGET_POST && strlen($id) >= 1 && strlen($permalink) >= 1){ //Check if post exists... $q = mysqli_query($con, "SELECT id, comments FROM post WHERE visible = 1 AND permalink = '$permalink' AND id = $id ;"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ //... and if it does, check if can be commented. $r = mysqli_fetch_array($q); $item_id = $r['id']; if ($r['comments'] != 1){ //'Forbidden' status code http_response_code(403); exit(); } } } //5th case: Comment for photo, permalink and no id. elseif ($target == TARGET_PHOTO && strlen($id) < 1 && strlen($permalink) >= 1){ //Check if photo exists. $q = mysqli_query($con, "SELECT id FROM photo WHERE approved = 1 AND permalink = '$permalink';"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ $item_id = $r['id']; } } //6th case: Comment for photo, id and no permalink. elseif ($target == TARGET_PHOTO && strlen($id) >= 1 && strlen($permalink) < 1){ //Check if photo exists. $q = mysqli_query($con, "SELECT id FROM photo WHERE approved = 1 AND id = $id;"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ $item_id = $r['id']; } } //7th case: Comment for photo, permalink and id. elseif ($target == TARGET_PHOTO && strlen($id) >= 1 && strlen($permalink) >= 1){ //Check if photo exists. $q = mysqli_query($con, "SELECT id FROM photo WHERE approved = 1 AND permalink = '$permalink' AND id = $id;"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ $item_id = $r['id']; } } //8nd case: Comment for activity, permalink and no id. elseif ($target == TARGET_ACTIVITY && strlen($id) < 1 && strlen($permalink) >= 1){ //Check if activity exists... $q = mysqli_query($con, "SELECT id, comments FROM activity WHERE visible = 1 AND permalink = '$permalink';"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ //... and if it does, check if can be commented. $r = mysqli_fetch_array($q); $item_id = $r['id']; if ($r['comments'] != 1){ //'Forbidden' status code http_response_code(403); exit(); } } } //9rd case: Comment for activity, id and no permalink. elseif ($target == TARGET_ACTIVITY && strlen($id) >= 1 && strlen($permalink) < 1){ //Check if activity exists... $q = mysqli_query($con, "SELECT id, comments FROM activity WHERE visible = 1 AND id = $id;"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ //... and if it does, check if can be commented. $r = mysqli_fetch_array($q); $item_id = $r['id']; if ($r['comments'] != 1){ //'Forbidden' status code http_response_code(403); exit(); } } } //10th case: Comment for activity, permalink and id. elseif ($target == TARGET_ACTIVITY && strlen($id) >= 1 && strlen($permalink) >= 1){ //Check if activity exists... $q = mysqli_query($con, "SELECT id, comments FROM activity WHERE visible = 1 AND permalink = '$permalink' AND id = $id ;"); if (mysqli_num_rows($q) == 0){ //Bad request http_response_code(400); exit(); } else{ //... and if it does, check if can be commented. $r = mysqli_fetch_array($q); $item_id = $r['id']; if ($r['comments'] != 1){ //'Forbidden' status code http_response_code(403); exit(); } } } //If code gets here, there were no errors. Build query. $query = "INSERT INTO "; $section = ""; switch ($target){ case TARGET_POST: $query = $query . "post_comment (post"; $section = "blog"; break; case TARGET_PHOTO: $query = $query . "photo_comment (photo"; $section = "gallery"; break; case TARGET_ACTIVITY: $query = $query . "activity_comment (activity"; $section = "activity"; break; } $query = $query . ", text, username, app) VALUES ($item_id, \"$text\", \"$username\", \"client\");"; //echo($query); mysqli_query($con, $query); mysqli_query($con, "UPDATE version SET version = version + 1 WHERE section = '$section';"); ?>