=波波日志 > JavaScript/Ajax > ajax+php+mssql无刷新聊天室=
ajax+php+mssql无刷新聊天室
此例子也可以作为mssql存储过程使用的示例,如php调用mssql的存储过程,php获取mssql数据库的输出参数。
asp.net版本请看
ajax无刷新聊天室--asp.net
asp
ajax无刷新聊天室--asp
op.php
+展开
-PHP
$db="chatdb";$uid="sa";$pwd="";$server=".";
class ajax{
function js($v){
return str_replace("'","\\'",$v);
}
function Login(){//用户登录
global $db,$uid,$pwd,$server;
$rStr="";
$Username=$_POST["nn"];
if(empty($Username))return "success:false,err:'昵称不能为空!'";
if(strlen($Username)>20)return "success:false,err:'昵称不能超过20个字符!'";
$userId="";$key="";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxLogin",$cn);
mssql_bind($stmt,"@username",$Username,SQLVARCHAR,false,false);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,true,false);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,true,false);
mssql_execute($stmt,true);
mssql_close($cn);
$userId=trim($userId);$key=trim($key);
if($userId=="-1")$rStr="success:false,err:'发生错误,请稍后再试!'";
else if($userId=="0")$rStr="success:false,err:'已经存在此用户昵称,请修改您的昵称!'";
else $rStr="success:true,UserId:'" .$userId. "',Key:'".$key."'";
return $rStr;
}
function Logout(){//注销用户
global $db,$uid,$pwd,$server;
$rStr="";$userId=$_POST["uid"];$key=$_POST["key"];
if(empty($userId)||empty($key))return "success:false,err:'用户信息丢失!'";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxLogout",$cn);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,false,false);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,false,false);
mssql_bind($stmt,"@Result",$r,SQLINT1,true,false);
mssql_execute($stmt,true);
mssql_close($cn);
$r=trim($r);
if($r=="0")$rStr="success:false,err:'用户信息不存在!'";
else $rStr="success:true";
return $rStr;
}
function Say(){//发表信息
global $db,$uid,$pwd,$server;
$rStr="";$From=$_POST["from"];$To=$_POST["to"];$key=$_POST["key"];$Msg=$_POST["ct"];
if(empty($From)||empty($key)||empty($To)||empty($Msg))return "success:false,err:'信息传递不完整!'";
$Msg=iconv("utf-8","gb2312",$Msg);//=============注意要解码,并且客户端要使用encodeURI/encodeURIComponent编码,要不发送到服务器端接收会乱码
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxSay",$cn);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,false,false);
mssql_bind($stmt,"@from",$From,SQLVARCHAR,false,false);
mssql_bind($stmt,"@to",$To,SQLVARCHAR,false,false);
mssql_bind($stmt,"@msg",$Msg,SQLVARCHAR,false,false);
mssql_bind($stmt,"@Result",$r,SQLINT4,true);
mssql_execute($stmt,true);
mssql_close($cn);
if($r=="0")$rStr="sucess:false,err:'发表失败!\\n原因:接收者已经不存在!'";
else $rStr="success:true";
return $rStr;
}
function ReadUser(){//获取用户列表
global $db,$uid,$pwd,$server;
$rStr="";$userId=$_POST["uid"];
if(empty($userId))return "success:false,err:'用户id丢失!'";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxReadUser",$cn);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,false,false);
$rs=mssql_execute($stmt);
$rNum=mssql_num_rows($rs);
for($i=0;$i<$rNum;$i++){
$row=mssql_fetch_row($rs);
$rStr.=",{id:'" . $row[0] . "',nn:'" . Ajax::Js($row[1]) . "'}";
}
mssql_free_result($rs);
mssql_close($cn);
return "success:true,data:[" . ($rStr == "" ? "" : substr($rStr,1)) . "]";
}
function Read(){//信息列表
global $db,$uid,$pwd,$server;
$rStr="";$userId=$_POST["uid"];$key=$_POST["key"];
if(empty($userId)||empty($key))return "success:false,err:'用户信息丢失!'";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxRead",$cn);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,false,false);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,false,false);
$rs=mssql_execute($stmt);
$rNum=mssql_num_rows($rs);
for($i=0;$i<$rNum;$i++){
$row=mssql_fetch_row($rs);
$rStr.=",'".Ajax::js($row[0])."'";
}
mssql_free_result($rs);
mssql_close($cn);
return "success:true,data:[" . ($rStr == "" ? "" : substr($rStr,1)) . "]";
}
}
$Json = "{";
switch ($_POST["op"]){
case "login": $Json .= Ajax::Login(); break;
case "logout": $Json .= Ajax::Logout(); break;
case "readuser": $Json .= Ajax::ReadUser(); break;
case "read":$Json.=Ajax::Read(); break;
case "say": $Json.= Ajax::Say(); break;
default: $Json.= "success:false,err:'参数错误!'"; break;
}
$Json .= "}";
header('Content-Type:text/html;charset=GB2312'); //==========注意要设置响应头的编码,要不客户端接收会乱码
echo($Json);
class ajax{
function js($v){
return str_replace("'","\\'",$v);
}
function Login(){//用户登录
global $db,$uid,$pwd,$server;
$rStr="";
$Username=$_POST["nn"];
if(empty($Username))return "success:false,err:'昵称不能为空!'";
if(strlen($Username)>20)return "success:false,err:'昵称不能超过20个字符!'";
$userId="";$key="";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxLogin",$cn);
mssql_bind($stmt,"@username",$Username,SQLVARCHAR,false,false);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,true,false);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,true,false);
mssql_execute($stmt,true);
mssql_close($cn);
$userId=trim($userId);$key=trim($key);
if($userId=="-1")$rStr="success:false,err:'发生错误,请稍后再试!'";
else if($userId=="0")$rStr="success:false,err:'已经存在此用户昵称,请修改您的昵称!'";
else $rStr="success:true,UserId:'" .$userId. "',Key:'".$key."'";
return $rStr;
}
function Logout(){//注销用户
global $db,$uid,$pwd,$server;
$rStr="";$userId=$_POST["uid"];$key=$_POST["key"];
if(empty($userId)||empty($key))return "success:false,err:'用户信息丢失!'";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxLogout",$cn);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,false,false);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,false,false);
mssql_bind($stmt,"@Result",$r,SQLINT1,true,false);
mssql_execute($stmt,true);
mssql_close($cn);
$r=trim($r);
if($r=="0")$rStr="success:false,err:'用户信息不存在!'";
else $rStr="success:true";
return $rStr;
}
function Say(){//发表信息
global $db,$uid,$pwd,$server;
$rStr="";$From=$_POST["from"];$To=$_POST["to"];$key=$_POST["key"];$Msg=$_POST["ct"];
if(empty($From)||empty($key)||empty($To)||empty($Msg))return "success:false,err:'信息传递不完整!'";
$Msg=iconv("utf-8","gb2312",$Msg);//=============注意要解码,并且客户端要使用encodeURI/encodeURIComponent编码,要不发送到服务器端接收会乱码
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxSay",$cn);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,false,false);
mssql_bind($stmt,"@from",$From,SQLVARCHAR,false,false);
mssql_bind($stmt,"@to",$To,SQLVARCHAR,false,false);
mssql_bind($stmt,"@msg",$Msg,SQLVARCHAR,false,false);
mssql_bind($stmt,"@Result",$r,SQLINT4,true);
mssql_execute($stmt,true);
mssql_close($cn);
if($r=="0")$rStr="sucess:false,err:'发表失败!\\n原因:接收者已经不存在!'";
else $rStr="success:true";
return $rStr;
}
function ReadUser(){//获取用户列表
global $db,$uid,$pwd,$server;
$rStr="";$userId=$_POST["uid"];
if(empty($userId))return "success:false,err:'用户id丢失!'";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxReadUser",$cn);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,false,false);
$rs=mssql_execute($stmt);
$rNum=mssql_num_rows($rs);
for($i=0;$i<$rNum;$i++){
$row=mssql_fetch_row($rs);
$rStr.=",{id:'" . $row[0] . "',nn:'" . Ajax::Js($row[1]) . "'}";
}
mssql_free_result($rs);
mssql_close($cn);
return "success:true,data:[" . ($rStr == "" ? "" : substr($rStr,1)) . "]";
}
function Read(){//信息列表
global $db,$uid,$pwd,$server;
$rStr="";$userId=$_POST["uid"];$key=$_POST["key"];
if(empty($userId)||empty($key))return "success:false,err:'用户信息丢失!'";
$cn=mssql_connect($server,$uid,$pwd);
mssql_select_db($db,$cn);
$stmt=mssql_init("ajaxRead",$cn);
mssql_bind($stmt,"@userid",$userId,SQLVARCHAR,false,false);
mssql_bind($stmt,"@userkey",$key,SQLVARCHAR,false,false);
$rs=mssql_execute($stmt);
$rNum=mssql_num_rows($rs);
for($i=0;$i<$rNum;$i++){
$row=mssql_fetch_row($rs);
$rStr.=",'".Ajax::js($row[0])."'";
}
mssql_free_result($rs);
mssql_close($cn);
return "success:true,data:[" . ($rStr == "" ? "" : substr($rStr,1)) . "]";
}
}
$Json = "{";
switch ($_POST["op"]){
case "login": $Json .= Ajax::Login(); break;
case "logout": $Json .= Ajax::Logout(); break;
case "readuser": $Json .= Ajax::ReadUser(); break;
case "read":$Json.=Ajax::Read(); break;
case "say": $Json.= Ajax::Say(); break;
default: $Json.= "success:false,err:'参数错误!'"; break;
}
$Json .= "}";
header('Content-Type:text/html;charset=GB2312'); //==========注意要设置响应头的编码,要不客户端接收会乱码
echo($Json);
类别:JavaScript/Ajax 作者:波波 日期:2009-09-07 【评论:1 阅读:】
日期:2010-3-21 0:04:05 IP:118.154.*.*
止管理员回复(2010-3-21 11:26:06)
hoho~
发表留言
同类热门博文
- ·AJAX跨域问题解决办..
- ·ajax+asp.net+mssql..
- ·ajax问题总结
- ·JavaScript解析XML的..
- ·JS URL编码函数
- ·ajax+asp+mssql无刷..
- ·ajax无刷新上传文件..
- ·美化alert,confirm..
博格Tag
- flash/flex/fcs/AIR(750)
- Asp.Net/C#/WCF(476)
- JavaScript/Ajax(232)
- 操作系统及应用软件(206)
- SQL及数据库(105)
- 黑客技术(96)
- Asp/VBScript(85)
- 网站排名及优化(82)
- PHP/apache/Perl(72)
- HTML/WML/CSS兼容(65)
- 其他(59)
- 个人日志(44)
- lucence.net/分词技术(33)
- C#设计模式(22)
- 计算机网络(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(10)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,G51人力资讯网,桂ICP备05005887号
Powered by showbo,G51人力资讯网,桂ICP备05005887号
