dongzhanlu0658 2015-07-14 09:18
浏览 60

在XAMPP中创建一个php Web服务器

I am trying to create a web server in php by the help of XAMPP but my php has some Errors; I changed my localhost port from 80 to 85 i have added a MySQL database to my phpMyAdmin. I don't know why I am getting Error

Fatal error: Class 'MySQL' not found in C:\xampp\htdocs\chitchat\index.php on line 7

<?php
//Must change below variables to your ones
$dbHost = "localhost:85";
$dbUsername = "root";
$dbPassword = "";
$dbName = "chitchat";
$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 ($action == "testWebAPI")
 {
if ($db->testconnection()){
echo SUCCESSFUL;
exit;
}else{
echo FAILED;
exit;
}
}
if ($username == NULL || $password == NULL)  
{
echo FAILED;
exit;
}
$out = NULL;
error_log($action."
", 3, "error.log");
switch($action) 
{

case "authenticateUser":


    if ($userId = authenticateUser($db, $username, $password)) 
    {                   

        // 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." ";

        //$sqlmessage = "SELECT * FROM `messages` WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 ";

        $sqlmessage = "SELECT m.id, m.fromuid, m.touid, m.sentdt, m.read, m.readdt, m.messagetext, u.username from messages m 
"
. "left join users u on u.Id = m.fromuid WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 ";


        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 

                }
                    if ($resultmessage = $db->query($sqlmessage))           
                        {
                        while ($rowmessage = $db->fetchObject($resultmessage))
                            {
                            $out .= "<message  from='".$rowmessage->username."'  sendt='".$rowmessage->sentdt."' text='".$rowmessage->messagetext."' />";
                            $sqlendmsg = "UPDATE `messages` SET `read` = 1, `readdt` = '".DATE("Y-m-d H:i")."' WHERE `messages`.`id` = ".$rowmessage->id.";";
                            $db->query($sqlendmsg);
                            }
                        }
                $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 "sendMessage":
if ($userId = authenticateUser($db, $username, $password)) 
    {   
    if (isset($_REQUEST['to']))
    {
         $tousername = $_REQUEST['to']; 
         $message = $_REQUEST['message'];   

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



                if ($resultto = $db->query($sqlto))         
                {
                    while ($rowto = $db->fetchObject($resultto))
                    {
                        $uto = $rowto->Id;
                    }
                    $sql22 = "INSERT INTO `messages` (`fromuid`, `touid`, `sentdt`, `messagetext`) VALUES ('".$userId."', '".$uto."', '".DATE("Y-m-d H:i")."', '".$message."');";                       

                            error_log("$sql22", 3 , "error_log");
                        if ($db->query($sql22)) 
                        {
                                $out = SUCCESSFUL;
                        }               
                        else {
                                $out = FAILED;
                        }                       
                    $resultto = NULL;
                }   

    $sqlto = NULL;
    }
    }
    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)
{

$sql22 = "select * from users 
                where username = '".$username."' and password = '".$password."' 
                limit 1";

$out = NULL;
if ($result22 = $db->query($sql22))
{
    if ($row22 = $db->fetchObject($result22))
    {
            $out = $row22->Id;

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

            $db->query($sql22);             


    }       
}

return $out;
}
?>

SQL code:

CREATE TABLE [IF NOT EXISTS] friends (
Id int (10) NOT NULL AUTO_INCREMENT,
providerid int(10) NOT NULL AUTO_INCREMENT,
requestid int(10) NOT NULL AUTO_INCREMENT,
status binary(1) NOT NULL DEFAULT
PRIMARY KEY (Id));

CREATE TABLE [IF NOT EXISTS] messages AS (
id int(255) NOT NULL AUTO_INCREMENT,
fromuid int(255) NOT NULL,
touid int(255) NOT NULL,
sentdt datetime NOT NULL;
read tinyint(1) NOT NULL DEFAULT '0',
readdt datetime DEFAULT NULL,
messagetext longtext CHARACTER SET utf8 | NOT NULL,
PRIMARY KEY (id)
)


CREATE TABLE [IF NOT EXISTS] users (
    Id int(10) unsigned NOT NULL AUTO_INCREMENT,
    username varchar(45) NOT NULL DEFAULT '',
    password varchar(32) NOT NULL DEFAULT '',
    email varchar(45) NOT NULL DEFAULT '',
    date datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    status tinyint(3) unsigned NOT NULL DEFAULT '0',
    authenticationTime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
   userKey varchar(32) NOT NULL DEFAULT '',
IP varchar(45) NOT NULL DEFAULT '',
 port int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (Id)
)
  • 写回答

1条回答 默认 最新

  • doushang2021 2015-07-14 09:32
    关注

    change the line

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

    to

            $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
    
    评论

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应