-1

i have 2 server codes written in php that I want to merge. the first code is to work with the mysql database and fire queries at the database and give back results

<?php

 //TODO:  show error off

  require_once("mysql.class.php");

 $dbHost = "localhost";
 $dbUsername = "root";
 $dbPassword = "";
  $dbName = "project";


  $db = new MySQL($dbHost,$dbUsername,$dbPassword,$dbName);

  // if operation is failed by unknown reason
  define("FAILED", 0);

  define("SUCCESSFUL", 1);
  // when  signing up, if username is already taken, return this error
  define("SIGN_UP_USERNAME_CRASHED", 2);  
  // when add new friend request, if friend is not found, return this error 
  define("ADD_NEW_USERNAME_NOT_FOUND", 2);

  // TIME_INTERVAL_FOR_USER_STATUS: if last authentication time of user is older 
  // than NOW - TIME_INTERVAL_FOR_USER_STATUS, then user is considered offline
   define("TIME_INTERVAL_FOR_USER_STATUS", 60);

  define("USER_APPROVED", 1);
  define("USER_UNAPPROVED", 0);


  $username = (isset($_REQUEST['username']) && count($_REQUEST['username']) > 0) 
                        ? $_REQUEST['username'] 
                        : NULL;
   $password = isset($_REQUEST['password']) ? md5($_REQUEST['password']) : NULL;
   $port = isset($_REQUEST['port']) ? $_REQUEST['port'] : NULL;

   $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : NULL;

   if ($username == NULL || $password == NULL)   
   {
    echo FAILED;
    exit;
    }

    $out = NULL;

    error_log($action."\r\n", 3, "error.log");
   switch($action) 
   {

case "authenticateUser":
    // code for generating list of shares. 

    if ($port != NULL  
            && ($userId = authenticateUser($db, $username, $password, $port)) != NULL) 
    {                   

        // providerId and requestId is Id of  a friend pair,
        // providerId is the Id of making first friend request
        // requestId is the Id of the friend approved the friend request made by providerId

        // fetching friends, 
        // left join expression is a bit different, 
        //      it is required to fetch the friend, not the users itself

        $sql = "select u.Id, u.username, (NOW()-u.authenticationTime) as authenticateTimeDifference, u.IP, 
                                    f.providerId, f.requestId, f.status, u.port 
                        from friends f
                        left join users u on 
                                    u.Id = if ( f.providerId = ".$userId.", f.requestId, f.providerId ) 
                        where (f.providerId = ".$userId." and f.status=".USER_APPROVED.")  or 
                                     f.requestId = ".$userId." ";


        if ($result = $db->query($sql))         
        {
                $out .= "<data>"; 
                $out .= "<user userKey='".$userId."' />";
                while ($row = $db->fetchObject($result))
                {
                    $status = "offline";
                    if (((int)$row->status) == USER_UNAPPROVED)
                    {
                        $status = "unApproved";
                    }
                    else if (((int)$row->authenticateTimeDifference) < TIME_INTERVAL_FOR_USER_STATUS)
                    {
                        $status = "online";

                    }
                    $out .= "<friend  username = '".$row->username."'  status='".$status."' IP='".$row->IP."' 
                                            userKey = '".$row->Id."'  port='".$row->port."'/>";

                                            // to increase security, we need to change userKey periodically and pay more attention
                                            // receiving message and sending message 

                }               
                $out .= "</data>";
        }
        else
        {
            $out = FAILED;
        }           
    }
    else
    {
            // exit application if not authenticated user
            $out = FAILED;
    }



break;

case "signUpUser":
    if (isset($_REQUEST['email']))
    {
         $email = $_REQUEST['email'];       

         $sql = "select Id from  users 
                        where username = '".$username."' limit 1";



         if ($result = $db->query($sql))
         {
                if ($db->numRows($result) == 0) 
                {
                        $sql = "insert into users(username, password, email)
                            values ('".$username."', '".$password."', '".$email."') ";                          

                            error_log("$sql", 3 , "error_log");
                        if ($db->query($sql))   
                        {
                                $out = SUCCESSFUL;
                        }               
                        else {
                                $out = FAILED;
                        }                           
                }
                else
                {
                    $out = SIGN_UP_USERNAME_CRASHED;
                }
         }                      
    }
    else
    {
        $out = FAILED;
    }   
break;

case "addNewFriend":
    $userId = authenticateUser($db, $username, $password);
    if ($userId != NULL)
    {

        if (isset($_REQUEST['friendUserName']))         
        {               
             $friendUserName = $_REQUEST['friendUserName'];

             $sql = "select Id from users 
                             where username='".$friendUserName."' 
                             limit 1";
             if ($result = $db->query($sql))
             {
                    if ($row = $db->fetchObject($result))
                    {
                         $requestId = $row->Id;

                         if ($row->Id != $userId)
                         {
                                 $sql = "insert into friends(providerId, requestId, status)
                                     values(".$userId.", ".$requestId.", ".USER_UNAPPROVED.")";

                                 if ($db->query($sql))
                                 {
                                        $out = SUCCESSFUL;
                                 }
                                 else
                                 {
                                        $out = FAILED;
                                 }
                        }
                        else
                        {
                            $out = FAILED;  // user add itself as a friend
                        }                                                
                    }
                    else
                    {
                        $out = FAILED;                      
                    }
             }                               
             else
             {
                    $out = FAILED;
             }              
        }
        else
        {
                $out = FAILED;
        }           
    }
    else
    {
        $out = FAILED;
    }   
break;

case "responseOfFriendReqs":
    $userId = authenticateUser($db, $username, $password);
    if ($userId != NULL)
    {
        $sqlApprove = NULL;
        $sqlDiscard = NULL;
        if (isset($_REQUEST['approvedFriends']))
        {
              $friendNames = split(",", $_REQUEST['approvedFriends']);
              $friendCount = count($friendNames);
              $friendNamesQueryPart = NULL;
              for ($i = 0; $i < $friendCount; $i++)
              {
                if (strlen($friendNames[$i]) > 0)
                {
                    if ($i > 0 )
                    {
                        $friendNamesQueryPart .= ",";
                    }

                    $friendNamesQueryPart .= "'".$friendNames[$i]."'";

                }               

              }
              if ($friendNamesQueryPart != NULL)
              {
                $sqlApprove = "update friends set status = ".USER_APPROVED."
                                where requestId = ".$userId." and 
                                            providerId in (select Id from users where username in (".$friendNamesQueryPart."));
                            ";      
              }

        }
        if (isset($_REQUEST['discardedFriends']))
        {
                $friendNames = split(",", $_REQUEST['discardedFriends']);
              $friendCount = count($friendNames);
              $friendNamesQueryPart = NULL;
              for ($i = 0; $i < $friendCount; $i++)
              {
                if (strlen($friendNames[$i]) > 0)
                {
                    if ($i > 0 )
                    {
                        $friendNamesQueryPart .= ",";
                    }

                    $friendNamesQueryPart .= "'".$friendNames[$i]."'";

                }                   
              }
              if ($friendNamesQueryPart != NULL)
              {
                $sqlDiscard = "delete from friends 
                                    where requestId = ".$userId." and 
                                                providerId in (select Id from users where username in (".$friendNamesQueryPart."));
                                        ";
              }                     
        }
        if (  ($sqlApprove != NULL ? $db->query($sqlApprove) : true) &&
                    ($sqlDiscard != NULL ? $db->query($sqlDiscard) : true) 
           )
        {
            $out = SUCCESSFUL;
        }
        else
        {
            $out = FAILED;
        }       
    }
    else
    {
        $out = FAILED;
    }
break;

default:
    $out = FAILED;      
    break;  
}

 echo $out;



 ///////////////////////////////////////////////////////////////
 function authenticateUser($db, $username, $password, $port)
{

$sql = "select Id from users 
                where username = '".$username."' and password = '".$password."' 
                limit 1";

$out = NULL;
if ($result = $db->query($sql))
{
    if ($row = $db->fetchObject($result))
    {
            $out = $row->Id;

            $sql = "update users set authenticationTime = NOW(), 
                                                             IP = '".$_SERVER["REMOTE_ADDR"]."' ,
                                                             port = ".$port." 
                            where Id = ".$row->Id."
                            limit 1";

            $db->query($sql);               


    }       
}

return $out;
}

?>

and the second code is working on file upload

$base=$_REQUEST['image'];
        echo $base;
        $binary=base64_decode($base);
        header('Content-Type: bitmap; charset=utf-8');
        $file = fopen('uploaded_image'.time().'.jpg', 'wb');
        fwrite($file, $binary);
        fclose($file);

both the codes are working properly.

what i have tried to do is make another case in the switch statement in which the action is "filesharing" Won't that work?

case "filesharing":$base=$_REQUEST['image'];
        //echo $base;
        $binary=base64_decode($base);
        header('Content-Type: bitmap; charset=utf-8');
        $file = fopen('uploaded_image'.time().'.jpg', 'wb');
        fwrite($file, $binary);
        fclose($file);
        $out .= "Image upload complete!!, Please check your php file     directory……";
    break;

can anyone please give some suggestions?

rockernerd
  • 31
  • 4

1 Answers1

1

So you have basically two files with two separate bits of functionality. The obvious solution would be to encapsulate each bit of code with a function i.e.

function query() {
/* your database query code here */
}

function file_upload() {
/* your file upload code here */
}

... and then encapsulate those functions in a class.

class MyCoolClass {
    function query() {
        /* your database query code here */
    }

    function file_upload() {
        /* your file upload code here */
    }
}

The advantages (and disadvantages) of Object Oriented Programming have been done to death, just have a google for it and you will undoubtedly find many wonderful, wonderful resources.

turpachull
  • 234
  • 2
  • 13
  • i like your idea. I am new to php. can you please tell me how does php handle http posts and call the methods according to the situation. – rockernerd Mar 22 '12 at 10:59
  • one could use the superglobal $_POST array to get at posted data from a form. Then depending on what the data is, call the relevant method. – turpachull Mar 22 '12 at 11:08
  • yes, but POST and GET are explicit, whereas REQUEST could come from various sources. [link](http://stackoverflow.com/questions/1924939/php-request-vs-get-and-post) – turpachull Mar 22 '12 at 11:14
  • @turpachull after reading your link i feel that REQUEST is better. – rockernerd Mar 22 '12 at 11:20
  • Hold on.. let me get this straight.. You should use $_GET when someone is requesting data from your application. And you should use $_POST when someone is pushing (inserting or updating ; or deleting) data to your application. By application this means only the server right and mysql? – rockernerd Mar 22 '12 at 11:22
  • you have the client side script displaying/interpreting data (typically HTML/CSS/JS) and then you have the server side script (typically PHP) providing data. So yes. – turpachull Mar 22 '12 at 11:34