This commit is contained in:
Andrew Trieu
2023-02-10 19:20:34 +02:00
parent c717c9e4c1
commit 5f98bab91e
23 changed files with 586 additions and 325 deletions

BIN
php/assets/default.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,11 +1,11 @@
<?php
$hostname = "localhost:3200";
$username = "root";
$password = "";
$dbname = "chatline";
$hostname = "localhost:3200";
$username = "root";
$password = "";
$dbname = "chatline";
$conn = mysqli_connect($hostname, $username, $password, $dbname);
if(!$conn){
echo "Database connection error".mysqli_connect_error();
}
$conn = mysqli_connect($hostname, $username, $password, $dbname);
if (!$conn) {
echo "Database connection error" . mysqli_connect_error();
}
?>

37
php/get_msg.php Normal file
View File

@@ -0,0 +1,37 @@
<?php
session_start();
if (isset($_SESSION['unique_id'])) {
include_once "config.php";
$current_user = $_SESSION['unique_id'];
$selected_user = mysqli_real_escape_string($conn, $_POST['selected_id']);
$output = "";
$sql = "SELECT * FROM messages LEFT JOIN users ON users.unique_id = messages.post_msg_id
WHERE (post_msg_id = {$current_user} AND get_msg_id = {$selected_user})
OR (post_msg_id = {$selected_user} AND get_msg_id = {$current_user}) ORDER BY msg_id";
$query = mysqli_query($conn, $sql);
if (mysqli_num_rows($query) > 0) {
while ($row = mysqli_fetch_assoc($query)) {
($row['img']) ? $img = $row['img'] : $img = "default.png";
if ($row['post_msg_id'] === $current_user) {
$output .= '<div class="chat post">
<div class="details">
<p>' . $row['msg'] . '</p>
</div>
</div>';
} else {
$output .= '<div class="chat get">
<img src="php/assets/' . $img . '" alt="">
<div class="details">
<p>' . $row['msg'] . '</p>
</div>
</div>';
}
}
} else {
$output .= '<div class="text">Send a message to start conversation :)</div>';
}
echo $output;
} else {
header("location: ../start.php");
}
?>

30
php/list.php Normal file
View File

@@ -0,0 +1,30 @@
<?php
while ($row = mysqli_fetch_assoc($query)) {
$sql2 = "SELECT * FROM messages WHERE (get_msg_id = {$row['unique_id']}
OR post_msg_id = {$row['unique_id']}) AND (post_msg_id = {$current_user}
OR get_msg_id = {$current_user}) ORDER BY msg_id DESC LIMIT 1";
$query2 = mysqli_query($conn, $sql2);
$row2 = mysqli_fetch_assoc($query2);
(mysqli_num_rows($query2) > 0) ? $result = $row2['msg'] : $result = "No message available";
(strlen($result) > 20) ? $msg = substr($result, 0, 20) . '...' : $msg = $result;
if (isset($row2['post_msg_id'])) {
($current_user == $row2['post_msg_id']) ? $you = "You: " : $you = "";
} else {
$you = "";
}
($row['status'] == "Offline") ? $offline = "offline" : $offline = "";
($current_user == $row['unique_id']) ? $hide_me = "hide" : $hide_me = "";
($row['img']) ? $img = $row['img'] : $img = "default.png";
$output .= '<a href="chat.php?user_id=' . $row['unique_id'] . '">
<div class="content">
<img src="php/assets/' . $img . '" alt="">
<div class="details">
<span>' . $row['first_name'] . " " . $row['last_name'] . '</span>
<p>' . $you . $msg . '</p>
</div>
</div>
<div class="status-dot ' . $offline . '"><i class="fas fa-circle"></i></div>
</a>';
}
?>

55
php/login.php Normal file
View File

@@ -0,0 +1,55 @@
<?php
session_start();
include_once "config.php";
function escape($conn, $value)
{
return mysqli_real_escape_string($conn, $value);
}
function isValidEmail($email)
{
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
function fetchUserByEmail($conn, $email)
{
$sql = mysqli_query($conn, "SELECT * FROM users WHERE email = '{$email}'");
return mysqli_fetch_assoc($sql);
}
function encryptPassword($password)
{
return md5($password);
}
function updateStatus($conn, $user)
{
return mysqli_query($conn, "UPDATE users SET status = 'Active now' WHERE unique_id = {$user["unique_id"]}");
}
function loginUser($user)
{
$_SESSION["unique_id"] = $user["unique_id"];
echo "success";
}
if (!empty($_POST["email"]) && !empty($_POST["password"])) {
$email = escape($conn, $_POST["email"]);
$password = escape($conn, $_POST["password"]);
if (isValidEmail($email)) {
$existingUser = fetchUserByEmail($conn, $email);
if ($existingUser) {
$encrypt_pass = encryptPassword($password);
if ($encrypt_pass === $existingUser["password"]) {
if (updateStatus($conn, $existingUser)) {
loginUser($existingUser);
} else {
echo "An error occurred while logging in!";
}
} else {
echo "The email or password is incorrect!";
}
} else {
echo "The email address $email does not exist!";
}
} else {
echo "The email address $email is not valid!";
}
} else {
echo "All input fields are required!";
}
?>

18
php/logout.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
session_start();
if (isset($_SESSION['unique_id'])) {
include_once "config.php";
$logout_id = mysqli_real_escape_string($conn, $_GET['logout_id']);
if (isset($logout_id)) {
$sql = mysqli_query($conn, "UPDATE users SET status = 'Offline' WHERE unique_id={$_GET['logout_id']}");
if ($sql) {
session_unset();
session_destroy();
header("location: ../start.php");
}
} else {
header("location: ../home.php");
}
} else {
header("location: ../start.php");
}

View File

@@ -1,34 +1,36 @@
<?php
session_start();
include_once "config.php";
function escape($conn, $value) {
function escape($conn, $value)
{
return mysqli_real_escape_string($conn, $value);
}
function isValidEmail($email) {
function isValidEmail($email)
{
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
function moveUploadedFile($tempFileName, $newFileName) {
return move_uploaded_file($tempFileName, "images/" . $newFileName);
function moveUploadedFile($tempFileName, $newFileName)
{
return move_uploaded_file($tempFileName, "assets/" . $newFileName);
}
function generateUniqueUserId() {
function generateUniqueUserId()
{
return rand(time(), 100000000);
}
function encryptPassword($password) {
function encryptPassword($password)
{
return md5($password);
}
function fetchUserByEmail($conn, $email) {
$email = escape($conn, $email);
function fetchUserByEmail($conn, $email)
{
$sql = mysqli_query($conn, "SELECT * FROM users WHERE email = '{$email}'");
return mysqli_fetch_assoc($sql);
}
function insertUser($conn, $unique_id, $first_name, $last_name, $email, $encrypt_pass, $new_img_name, $status) {
return mysqli_query($conn, "INSERT INTO users (unique_id, first_name, last_name, email, password, img, status) VALUES ({$unique_id}, '{$first_name}','{$last_name}', '{$email}', '{$encrypt_pass}', '{$new_img_name}', '{$status}')");
function insertUser($conn, $unique_id, $first_name, $last_name, $email, $encrypt_pass, $new_img_name)
{
return mysqli_query($conn, "INSERT INTO users (unique_id, first_name, last_name, email, password, img, status) VALUES ({$unique_id}, '{$first_name}','{$last_name}', '{$email}', '{$encrypt_pass}', '{$new_img_name}', 'Offline')");
}
function loginUser($user) {
$_SESSION["unique_id"] = $user["unique_id"];
echo "success";
}
if (!empty($_POST["first_name"]) || !empty($_POST["last_name"]) || !empty($_POST["email"]) || !empty($_POST["password"])) {
if (!empty($_POST["first_name"]) && !empty($_POST["last_name"]) && !empty($_POST["email"]) && !empty($_POST["password"])) {
$first_name = escape($conn, $_POST["first_name"]);
$last_name = escape($conn, $_POST["last_name"]);
$email = escape($conn, $_POST["email"]);
@@ -44,12 +46,11 @@ if (!empty($_POST["first_name"]) || !empty($_POST["last_name"]) || !empty($_POST
$temp_file_name = $_FILES["image"]["tmp_name"];
$img_ext = pathinfo($img_name, PATHINFO_EXTENSION);
$allowedExtensions = ["jpeg", "png", "jpg"];
if (in_array($img_ext, $allowedExtensions) && in_array($img_type, ["image/jpeg", "image/jpg", "image/png", ])) {
if (in_array($img_ext, $allowedExtensions) && in_array($img_type, ["image/jpeg", "image/jpg", "image/png",])) {
$time = time();
$new_img_name = $time . $img_name;
if (moveUploadedFile($temp_file_name, $new_img_name)) {
$unique_id = generateUniqueUserId();
$status = "Active now";
$encrypt_pass = encryptPassword($password);
} else {
echo "An error occurred while uploading the image.";
@@ -61,15 +62,14 @@ if (!empty($_POST["first_name"]) || !empty($_POST["last_name"]) || !empty($_POST
}
} else {
$unique_id = generateUniqueUserId();
$status = "Active now";
$encrypt_pass = encryptPassword($password);
}
if (insertUser($conn, $unique_id, $first_name, $last_name, $email, $encrypt_pass, $new_img_name, $status)) {
if (insertUser($conn, $unique_id, $first_name, $last_name, $email, $encrypt_pass, $new_img_name)) {
$loggedInUser = fetchUserByEmail($conn, $email);
if ($loggedInUser) {
loginUser($loggedInUser);
} else {
if (!$loggedInUser) {
echo "An error occurred. Please try again.";
} else {
echo "success";
}
} else {
echo "An error occurred. Please try again.";

17
php/search.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
session_start();
include_once "config.php";
$current_user = $_SESSION["unique_id"];
if (isset($_POST["query"])) {
$query = mysqli_real_escape_string($conn, $_POST["query"]);
$sql = "SELECT * FROM users WHERE NOT unique_id = {$current_user} AND (first_name LIKE '%{$query}%' OR last_name LIKE '%{$query}%') ";
$output = "";
$query = mysqli_query($conn, $sql);
if (mysqli_num_rows($query) > 0) {
include_once "list.php";
} else {
$output .= "User not found :(";
}
echo $output;
}
?>

15
php/send_msg.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
session_start();
if (isset($_SESSION['unique_id'])) {
include_once "config.php";
$current_user = $_SESSION['unique_id'];
$selected_user = mysqli_real_escape_string($conn, $_POST['selected_id']);
$message = mysqli_real_escape_string($conn, $_POST['message_text']);
if (!empty($message)) {
$sql = mysqli_query($conn, "INSERT INTO messages (get_msg_id, post_msg_id, msg)
VALUES ({$selected_user}, {$current_user}, '{$message}')") or die();
}
} else {
header("location: ../start.php");
}
?>

14
php/users.php Normal file
View File

@@ -0,0 +1,14 @@
<?php
session_start();
include_once "config.php";
$current_user = $_SESSION['unique_id'];
$sql = "SELECT * FROM users WHERE NOT unique_id = {$current_user} ORDER BY user_id DESC";
$query = mysqli_query($conn, $sql);
$output = "";
if (mysqli_num_rows($query) == 0) {
$output .= "No users are available to chat";
} elseif (mysqli_num_rows($query) > 0) {
include_once "list.php";
}
echo $output;
?>