I have a script that contains functions from login in to posting status to friend request send and receive. Pretty much a social network script. Anyways i think my security is not up to date so if anyone can check my code out or review it live on the web: [`iphone.hostei.com`][1]. email is `[email protected]` and password is `demo123`. Please if anyone can review so my code is probably harder to hack and it functions well. ### `profile.php` <?php session_start(); //session_destroy(); include_once('php/classes/db_config.php'); include_once('php/classes/class.user.php'); $user1 = new User($con); $is_loggedin = (isset($_SESSION['uid']))? true:false; $is_uid = (isset($_GET['uid']) && !empty($_GET['uid']) && is_numeric($_GET['uid']))? true:false; // Set default uid $def_uid = ($is_uid == true)? $_GET['uid']: $_SESSION['uid']; // User valid check $user_valid = ($is_uid == true)? $user1->check_user($def_uid):1; $name_id = $_SESSION['user']['uid']; $name = $_SESSION['user']['uname']; $fullname = $_SESSION['user']['fullname']; $bio = $_SESSION['user']['bio']; $time = date("Y-m-d H:i:s"); if(isset($_POST['logout'])) { session_destroy(); header('Location: index.php'); } if(isset($_POST['area_sub'])){ if(empty($_POST['area'])){ echo "<script>alert('Empty area field.')</script>"; }else{ if($_GET['uid'] == ''){ $user1 -> post($_SESSION['uid'], $_SESSION['uid'], $name, $_POST['area'], $time); }else if($_GET['uid'] == 0){ }else{ $user1 -> post($_SESSION['uid'], $_GET['uid'], $name, $_POST['area'], $time); } } } if($is_loggedin){ $check = $con -> Fetch("SELECT * FROM follow_req WHERE user_two_req=".$_SESSION['uid'].""); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Only Simple Albanian Social Network, with no ads</title> <link rel="stylesheet" href="css/profile.css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> </head> <body> <?php if($is_loggedin !== true) { include_once 'php/common/head.php'; ?> <?php }?> <?php // If there is a propper UID available if(($is_loggedin == true) || ($is_uid == true)) { ?> <?php if ($is_loggedin == true){ ?> <div id="menu"> <div id="menu_wrapper"> <div id="left_menu"> </div> <div id="right_menu"> <div id='drop-zone'><?php if($check == 0){ echo "<h4 class='request'>0</h4>"; }else{ echo "<a href='#' class='request_more'>".count($check)."</a>"; } ?></div> <form action='' method='post'> <input type='hidden' name='logout' value='true' /> <input type='submit' name='submit' value='Logout' id='btn'> </form> </div> </div> </div> <?php } ?> <div id="profile_wrapper"> <div class="wrapper"> <div id="profile"> <?php // If user is valid if($user_valid == 1) { // User is logged in user if($def_uid == $_SESSION['uid']) { include_once 'php/classes/profile_func.php'; } include_once 'php/classes/user_info.php'; }else{?> <h2>No Such User Exists</h2> <h3>Please select a different user or <a href='index.php'>Login</a></h3> <?php if($is_loggedin == true){ ?> <h3>Go Back to <a href="profile.php?uid=<?php echo $name_id;?>">My Profile</a></h3> <?php } } ?> <?php }else{?> <h1>Invalid User</h1> <h3>You must be <a href="index.php">Logged IN</a> to see your profile OR you must select a profile (uid) to view.</h3> <?php } ?> </div> </div> </div> <?php if($is_loggedin != true){ ?> <div id="footer"> <h4>Per momentin vetem njerezit qe do perzgjidhen do kene akses.</h4> <a href="#"> <div id="button">Kerkese Hyerje</div> </a> </div> <?php } ?> <script> function LookUp(IdElem,URL){ $("#drop-zone").html('<div class="loader"></div>'); $.ajax({ url: URL, cache: false, success: function(result) { $("#drop-zone").html(result); } }); } $(document).ready(function() { $("a.request_more").click(function(){ LookUp(this,'requests.php'); }); }); </script> </body> </html> ### `profile_funct.php` <?php $user1->profile_photo(); ?> <div id="friends"> <?php echo " <h2 class='u_name'><a href=profile.php?uid=".$name_id.">@".$name."</a></h2> <br/> <p>".$fullname."</p> "; $MyFollows = $con->Fetch("SELECT * FROM follow WHERE (user_one='$def_uid') OR (user_two='$def_uid')"); $count_posts = $con->Fetch("SELECT * FROM post WHERE user_id=".$_SESSION['uid']." "); echo "<p>Posts ".$cnt = ($count_posts !== 0)? '<a href="posts.php" class="posts_all">'. count($count_posts) .'</a>' : 0;""; echo " - Friends: ".$following = ($MyFollows !== 0)? '<a class="frnd_a" href="friends.php">'. count($MyFollows) .'</a></p>' : 0;""; ?> </div> <div id="post_wrapper"> <p>Update Status</p> <div id='post_form'> <form action='' method='POST'> <textarea id='area' name='area'></textarea> <input type='submit' name='area_sub' id='sub_btn' value='Update'/> </form> </div> </div> <?php if($_GET['uid'] == 0){ $user1 -> getResults(); }else{ $user1 -> getResults(); }?> ### `user_info.php` <?php if($def_uid != $_SESSION['uid']) { $info = $con->Fetch("SELECT * FROM users WHERE uid='$def_uid'"); ?> <h1>User Profile: <?php echo $info[0]['fullname']; ?></h1> <?php $action = ($user1->check_req($_SESSION['uid'], $def_uid))? true : false; $friends = ($user1->check_friends($_SESSION['uid'], $def_uid))? true: false; $c = ($user1->checking($def_uid, $_SESSION['uid']))? true: false; $post = $con->Fetch("SELECT * FROM `post` WHERE rec_id=".$_GET['uid'].""); ?> <?php if($friends == true){ echo "Welcome to ", $info[0]['uname'],"'s wall"; if($is_loggedin == true){ echo "<br/>Go Back to <a href='profile.php?uid=".$_SESSION['user']['uid']."'>My Profile</a><br/>"; } ?> <br/> <form action="" method="POST"> <textarea id='area' name='area' placeholder="Say something nice <?php echo $name;?>"></textarea> <input type='submit' name='area_sub' value='Go'/> </form> <br/> <?php if($_GET['uid'] == $post[0]['rec_id']){ echo "<br/>".$user1 -> getResults(); } echo "<br/><a href='actions.php?action=unfriend&uid=".$def_uid."'/>Unfriend</a><br/>"; }else{ if($is_loggedin == true){ ?> <a href="actions.php?action= <?php if($action == true){ $un = "cancel";echo $un;}else{echo "send";}?>&uid= <?php echo $def_uid; ?>"> <?php if($c == true){ echo"<a href='actions.php?action=accept&uid=".$def_uid."'>ADD</a><br/>"; echo "<a href='actions.php?action=ignore&uid=".$def_uid."'>Ignore</a>"; }else if($action == true){ echo $un; }else{ echo "send"; }?> </a> <br/>Back to my <a href="profile.php?uid=<?php echo $_SESSION['user']['uid']; ?>">Profile</a> <?php }else{ echo "Not Logged In. Log in <a href='index.php'>Here</a>"; } } } ?> `class.user.php` <?php class User { public $db; public $error; public function __construct($con){ $this->db = $con; } /*** for login process ***/ public function check_login($username='', $password=''){ // Validate that your email is a real one if(filter_var($username,FILTER_VALIDATE_EMAIL) !== false) { $password = md5($password); $sql = "SELECT uid from users WHERE (uemail='$username' or uname='$username') and upass = '$password'"; $result = $this->db->Fetch($sql); if ($result !== 0) { // this login var will use for the session thing $_SESSION['emailusername'] = $result[0]['uemail']; $_SESSION['uid'] = $result[0]['uid']; $_SESSION['user'] = $this->get_fullname($result[0]['uid'],0); $_SESSION['login'] = true; } else $this->error['Invalid Account'] = '<h3 id="error">Invalid Username or Password</h3>'; } else $this->error['Email'] = '<h3 id="error">Invalid Email Address</h3>'; return (!isset($_SESSION['emailusername']))? false:true; } /*** for showing the username or fullname ***/ public function get_fullname($uid, $write = 1){ // --> You can prepare, bind, and execute your values here replacing what you have now....<-- $sql = "SELECT * FROM users WHERE uid = '$uid'"; $user_data = $this->db->Fetch($sql); if($user_data !== 0) { $user['uname'] = $user_data[0]['uname']; $user['fullname'] = $user_data[0]['fullname']; $user['uemail'] = $user_data[0]['uemail']; $user['uid'] = $user_data[0]['uid']; $user['bio'] = $user_data[0]['bio']; // This gives the option of returning an array (setting session array) or echoing if($write == 1) echo implode("<br />",$user); else return $user; } } public function check_user($uid) { $sql = "SELECT * from users WHERE uid= $uid "; $result = $this->db->Fetch($sql); $count_row = ($result !== 0)? count($result): 0; return $count_row; } /*** starting the session ***/ public function get_session() { return $_SESSION['login']; } public function user_logout() { $_SESSION['login'] = FALSE; session_destroy(); } public function check_req($is_uid, $def_uid){ $sql = "SELECT * from follow_req WHERE user_one_req = '$is_uid' AND user_two_req = '$def_uid'"; $result = $this->db->Fetch($sql); $count_row = ($result !== 0)? count($result): 0; return $count_row; } public function insert($is_uid, $def_uid){ $sql = "INSERT INTO follow_req (user_one_req, user_two_req) VALUES (:user_one_req, :user_two_req)"; $q = $this->db->prepare($sql); $q -> execute(array(':user_one_req'=>$is_uid, ':user_two_req'=>$def_uid)); return $q; } public function delete($is_uid, $def_uid){ $sql = "DELETE FROM follow_req WHERE user_one_req = :user_one_req AND user_two_req = :user_two_req"; $q = $this->db->prepare($sql); $q -> execute(array(':user_one_req'=>$is_uid, ':user_two_req'=>$def_uid)); return $q; } public function checkimg($img_id){ $sql = "SELECT * from users WHERE img_id = '$img_id'"; $result = $this->db->Fetch($sql); $count_row = ($result !== 0)? count($result): 0; return $count_row; } public function img($img_id, $part){ $sql = "UPDATE users SET img_id='$img_id', image='$part' WHERE uid=".$_SESSION['uid'].""; $q = $this->db->prepare($sql); $q -> execute(array(':img_id'=>$img_id, ':image'=>$part)); return $q; } public function check_friends($is_uid, $def_uid){ $sql = "SELECT * from follow WHERE (user_one = '$is_uid' AND user_two = '$def_uid') OR (user_one = '$def_uid' AND user_two = '$is_uid')"; $result = $this->db->Fetch($sql); $count_row = ($result !== 0)? count($result): 0; return $count_row; } public function del_friends($is_uid, $def_uid){ $sql = "DELETE FROM follow WHERE (user_one = :user_one AND user_two = :user_two) OR (user_one = :user_two AND user_two = :user_one)"; $q = $this->db->prepare($sql); $q -> execute(array(':user_one'=>$is_uid, ':user_two'=>$def_uid)); return $q; } public function checking($def_uid, $is_uid){ $sql = "SELECT * from follow_req WHERE user_one_req = '$def_uid' AND user_two_req = '$is_uid'"; $result = $this->db->Fetch($sql); $count_row = ($result !== 0)? count($result): 0; return $count_row; } public function accept_req($def_uid, $is_uid){ $sql = "INSERT INTO follow ( user_one, user_two) VALUES ( :user_one, :user_two)"; $q = $this->db->prepare($sql); $q -> execute(array(':user_one'=>$def_uid, ':user_two'=>$is_uid)); return $q; } public function delete_req($def_uid, $is_uid){ $sql = "DELETE FROM follow_req WHERE user_one_req = :user_one_req AND user_two_req = :user_two_req"; $q = $this->db->prepare($sql); $q -> execute(array(':user_one_req'=>$def_uid, ':user_two_req'=>$is_uid)); return $q; } public function post($a_id='', $r_id='', $name, $area='', $time){ $sql = $this->db->prepare("INSERT INTO post (user_id, rec_id, user, area, time) VALUES ( ?, ?, ?, ?, ?)"); $sql -> bindParam(1, $a_id); $sql -> bindParam(2, $r_id); $sql -> bindParam(3, $name); $sql -> bindParam(4, $area); $sql -> bindParam(5, $time); $sql -> execute(); } public function profile_photo(){ $get_name = $this->db->Fetch ("SELECT * FROM users WHERE img_id=". $_SESSION['uid'].""); if($get_name[0]['img_id'] == $_SESSION['uid']){ echo "<img id='profile_img' src='test/upload/".$_SESSION['uid']."_".$get_name[0]['image']."'/>"; }else{ echo "<img id='profile_img' src='classversiondontdelete/images/default/profile_icon.gif'/>"; //echo "<img src='test/upload/".$_SESSION['uid']."_".$get_name[0]['image']."'/>"; } } public function getResults(){ if($_GET['uid'] == ''){ $result = $this->db->Fetch("SELECT * FROM post WHERE rec_id = ".$_SESSION['uid']." "); }else if($_GET['uid'] == 0){ $result = $this->db->Fetch("SELECT * FROM post WHERE rec_id = ".$_SESSION['uid']." "); }else{ if(is_numeric($_GET['uid'])) $result = $this->db->Fetch("SELECT * FROM post WHERE rec_id = '".$_GET['uid']."'"); } if(is_array($result)){ foreach ($result as $row) { ?><div id="post"><?php $get_name = $this->db->Fetch("SELECT * FROM users WHERE img_id = ".$row['user_id'].""); if($get_name[0]['img_id'] != 0){ echo "<img id='post_img' src='test/upload/".$row['user_id']."_".$get_name[0]['image']."'/>"; }else{ echo "<img id='post_img' src='classversiondontdelete/images/default/profile_icon.gif'/>"; } echo " <h3 id='text'>".$row['area']. "</h3> "; ?></div><?php } } } } ?> [1]: http://iphone.hostei.com