ajax php 聊天室实例代码(1/5)

 更新时间:2016年11月25日 17:33  点击:2094

<?php教程
/*
ajax php 聊天室实例代码
但是必须基于以下条款:
  * 署名。你必须明确标明作者的名字。.
  * 非商业用途。 你不可将当前作品用于商业目的。
  * 保持一致。 如果你基于当前作品更改、变换或构造新作品,你应当按照与当前协议完全相同的协议分发最终作品
  * 对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款
  * 在得到作者的明确允许下,这里的某些条款可以放弃

此约定是法律文本 (完整的协议)的简单易读概要
****************************************/
//****************参数设置****************
//显示在线用户

 代码如下 复制代码

$disonline = true;
//新登陆时显示最近内容的条数(默认为30条)
$leastnum = 30;
//默认的房间名(默认是每天换一个文件),如果去掉d,则是每月换一个文件
$room = date("y-m-d");
//房间保存路径,必须以/结尾
$roomdir = "rooms/";
//编码方式
$charset = "utf-8";
//客户端最大显示内容条数(建议不要太大)
$maxdisplay = 300;


//语言
$lang = array(
//聊天室描述
"description"=>"欢迎来到迷你ajax聊天室。最新版本 1.2。下载请到<a href='http://111cn.net' target=_blank>www.111cn.net</a>",
//聊天室标题
"title"=>"mini ajax chatroom by longbill",
//第一个到聊天室的欢迎
"firstone"=>"<span style='color:#16a5e9;'>welcome to longbill's mini ajax chatroom!</span>",
//当信息有禁止内容时显示
"ban"=>"i am a pig!",
//关键字
"keywords"=>"聊天室,迷你,小型,ajax,chat,chatroom,longbill,111cn.net,php,网页特效",
//发言提示
"hereyourwords" => "在这里发言!"
);

error_reporting(e_all ^ e_notice ^ e_warning);
header("content-type:text/html; charset=utf-8");

$get_past_sec = 3; //如果发现丢话,可以适当调大这个值
$touchs = 10; //检查在线人数的时间间隔

 

if (!function_exists("file_get_contents"))
{
 function file_get_contents($path)
 {
  if (!file_exists($path)) return false;
  $fp=@fopen($path,"r");
  $all=fread($fp,filesize($path));
  fclose($fp);
  return $all;
 }
}

if (!function_exists("file_put_contents"))
{
 function file_put_contents($path,$val)
 {
  $fp=@fopen($path,"w");
  fputs($fp,$val);
  fclose($fp);
  return true;
 }
}

 

$title = $lang["title"];
$earlier = 10;
$description = $lang["description"];
$origroom = $room;
$least = ($_get["dis"])?intval($_get["dis"]):$leastnum;
$touchme = $_post['touchme'];
if (!is_dir($roomdir)) @mkdir($roomdir) or die("error when creating folder $roomdir");
$room = $_get['room'];
if (!$room) $room = $_post["room"];
$room = checkfilename($room);
if (!$room) $room = $origroom;
$filename = $roomdir.$room.".dat.php";
$datafile = $roomdir.$room.".php";
if (!file_exists($filename)) @file_put_contents($filename,'<?php die();?>'." ".time()."|".$lang["firstone"]." ");
if (!file_exists($datafile)) @file_put_contents($datafile,'<?php die();?>'." ");
$action = $_post["action"];

function checkfilename($file)
{
 if (!$file) return "";
 $file = trim($file);
 $a = substr($file,-1);
 $file = eregi_replace("^[.\/]*","",$file);
 $file = eregi_replace("[.\/]*$","",$file);
 $arr = array("../","./","/","\","..\",".\");
 $file = str_replace($arr,"",$file);
 return $file;
}

 

本教程是一款利用了php ajax无刷新验证用户输入的新闻标题是否己经存在了数据库中,如果是返回0否则就返回1

 代码如下 复制代码
<tr>
  <td align="center" bgcolor="#f6f6f6">新闻标题:</td>
  <td height="25" colspan="2" align="left" bgcolor="#f6f6f6" style="width: 367px">
      <input  name="title" id="title" onblur="startrequestusingpost();" type="text"/>
      <label id="message" style="color: red">该标题已存在</label>
      <label id="lbltitle" style="color: red">标题不能为空</label>                  </td>
  <td bgcolor="#f6f6f6">&nbsp;不能为空</td>
</tr>
 代码如下 复制代码

<script language="网页特效">
function startrequestusingpost() {
         if(checktitle()==false)
         {
               return;
         }
           var title = document.getelementbyid("title").value;
           createxmlhttprequest();
           xmlhttp.open("post","checkntype",true);
           xmlhttp.onreadystatechange = processresponse;
           xmlhttp.setrequestheader("content-type","application/x-www-form-urlencoded");
           xmlhttp.send("title=" + title);
      }
     
      function processresponse() {
           if(xmlhttp.readystate == 4) {
                if(xmlhttp.status == 200) {
                    var result = xmlhttp.responsetext;
              if(result==1){
                document.getelementbyid("message").style.display="inline";
                document.getelementbyid("btnadd").disabled="disabled";
                }else
                {
                  document.getelementbyid("message").style.display="none";
                 document.getelementbyid("btnadd").disabled="";
                 }
                }
           }
      }
      function checktitle()
      {
       var title=document.getelementbyid("title").value;
          if(title=="")
          {
           document.getelementbyid("lbltitle").style.display="inline";
            return false;
          }else
          {
          document.getelementbyid("lbltitle").style.display="none";
           return true;
       }
      }

</script>

php代码

 代码如下 复制代码
<?
$title = $_post['title'];
if( $title ='www.111cn.net')
{
 echo 1;
}
else
{
 echo 0;
}
?>
获取当前页面的url地址php代码,第一款是一款获取无参数URL第二款是获取完整URL函数哦,如果你正找url参数的代码哦。
 代码如下 复制代码

<?php
// 说明:获取无参数url

function curpageurl()
{
    $pageurl = 'http';

    if ($_server["https教程"] == "on")
    {
        $pageurl .= "s";
    }
    $pageurl .= "://";

    if ($_server["server_port"] != "80")
    {
        $pageurl .= $_server["server_name"].":" . $_server["server_port"] . $_server['php_self'];
    }
    else
    {
        $pageurl .= $_server["server_name"] . $_server['php_self'];
    }
    return $pageurl;
}
?>

方法二

 代码如下 复制代码

<?php
// 说明:获取完整url

function curpageurl()
{
    $pageurl = 'http';

    if ($_server["https"] == "on")
    {
        $pageurl .= "s";
    }
    $pageurl .= "://";

    if ($_server["server_port"] != "80")
    {
        $pageurl .= $_server["server_name"] . ":" . $_server["server_port"] . $_server["request_uri"];
    }
    else
    {
        $pageurl .= $_server["server_name"] . $_server["request_uri"];
    }
    return $pageurl;
}
?>

另外,$_server['request_uri'] 和 $_server['request_url'] 是有稍微区别的:
$_server["request_uri"] 返回完整的路径 ( /directory/file.ext?query=string )
$_server['request_url'] 只返回文件路径,不包括参数,( /directory/file.ext ),和$_server['php_self']差不多,只不过在有些服务器上$_server['request_url']不可用

下面提供了四款php生成随机密码函数哦,方法简单实用是一款用户自定的加密函数,这样如果不知道你的加密算法是很难破解的。

方法一

 代码如下 复制代码

function generate_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符
    $chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

    $password = '';
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里提供两种字符获取方式
        // 第一种是使用 substr 截取$chars中的任意一位字符;
        // 第二种是取字符数组 $chars 的任意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }

    return $password;
}

方法二

动生成6位数字、字母 混合密码

 代码如下 复制代码
<?php
$str = "0123456789abcdefghijklmnopqrstuvwxyz";   //   输出字符集 
$n = 6;   //   输出串长度 
$len = strlen($str)-1;
for($j=0 ; $j<200 ; $j++){
for($i=0 ; $i<$n; $i++){
    $s .=  $str[rand(0,$len)]; 
}
echo $s . "<br/>";
$s = "";
}
?>
自动生成数字、字母、符号的密码
<?php
      $a = "12345678";
      $b = "abcdefghijklmnopqistuvwxyz";
      $s = substr(str_shuffle($a), 0, 2);
      $e = substr(str_shuffle($b), 0, 2);
      echo $s . substr(str_shuffle("!@#$%^&*"), 0, 2) . $e;
?>

方法三

 代码如下 复制代码

function create_password($pw_length = 8)
{
    $randpwd = '';
    for ($i = 0; $i < $pw_length; $i++)
    {
        $randpwd .= chr(mt_rand(33, 126));
    }
    return $randpwd;
}

// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);


方法三

 代码如下 复制代码

<?php
function getmicrotime()
{
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}
 
// 记录开始时间
$time_start = getmicrotime();
   
// 这里放要执行的php代码,如:
// echo create_password(6);
 
// 记录结束时间
$time_end = getmicrotime();
$time = $time_end - $time_start;

 // 输出运行总时间
echo "执行时间 $time seconds";
?>

下面提供的php上传图片代码是一款利用php copy来上传文件的,他不但可以把图片上传到服务器,同时还把图片的地址保存到了mysql数据库里面哦。
 代码如下 复制代码

// 连接数据库
$conn = mysql_connect("localhost", "phpdb", "phpdb");
mysql_select_db("test",$conn);
?>
<?
// 取得网页的参数
$id=$_post['id'];

// 判断该用户名是否已经存在
$checksql="select * from image where id='$id'";
$check_re=mysql_query($checksql,$conn);
$num=mysql_num_rows($check_re);
if($num!=0){
 echo "<table width='100%' align=center><tr><td align=center>";
 echo "该用户名已经存在,请选择另一个<br>";
    echo "<font color=red>上传失败!</font><br><a href='网页特效:history.back(-1)'>返回</a>";
    echo "</td></tr></table>";
 exit();
}

// 方法二:只保存文件名,
// 保存文件名时,文件在php.ini配置文件中设置的upload临时目录中,也就是upload_tmp_dir 参数中

if ($photo<>""){ 
 if (($photo_type== "image/pjpeg")or($photo_type == "image/gif")){
  // c:winnt emp 使php.ini配置文件中设置的upload文件的临时目录
  $photodir="c:winnt emp/";
  if(!(file_exists($photo_name))){
   // 拷贝该图片文件到设定的上传文件临时目录中
     copy($photo,$photodir.$photo_name);
  }
 }
 else{
    echo "<script language=javascript>alert('上传照片只能是jpg或者gif!');history.go(-1)</script><br>";
  echo "或者<br>";
        echo "文件名已经存在,请为图片改一个文件名";
        exit;
 }
}
else{ 
 $photo_name="";
}
$sql="insert into image (id, photo) values('$id', '$photo_name')";

mysql_query($sql,$conn) or die ("插入数据失败: ".mysql_error());

// 关闭连接
mysql_close($conn);
// 显示上传图片成功
// 重定向到注册成功页面
header("location:display_image2.php?id=$id");

?>

代码二

<?php
// 连接数据库
$conn = mysql_connect("localhost", "phpdb", "phpdb");
mysql_select_db("test",$conn);
?>
<?
// 取得网页的参数
$id=$_post['id'];

// 判断该用户名是否已经存在
$checksql="select * from image where id='$id'";
$check_re=mysql_query($checksql,$conn);
$num=mysql_num_rows($check_re);
if($num!=0){
 echo "<table width='100%' align=center><tr><td align=center>";
 echo "该用户名已经存在,请选择另一个<br>";
    echo "<font color=red>上传失败!</font><br><a href='javascript:history.back(-1)'>返回</a>";
    echo "</td></tr></table>";
 exit();
}
// 方法一:在mysql中保存图片文件,
// 如果有图片文件,打开图片文件,将图片文件中的数据用函数
// addslashes处理,然后传递给变量$data,
// addslashes函数是给字符串加入斜线,使字符串能够顺利写入数据库中
// 这样变量$data 中保存的就是图片文件的数据了
if ($photo<>""){
 $fp=fopen($photo,"r");
 $data=addslashes(fread($fp,filesize($photo)));
}
$password=md5($password);
$sql="insert into image (id,photo) values('$id','$data')";

mysql_query($sql,$conn) or die ("插入数据失败: ".mysql_error());

// 关闭连接
mysql_close($conn);
// 显示上传图片成功
// 重定向到注册成功页面
header("location:display_image1.php?id=$id");

[!--infotagslink--]

相关文章

  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 美图秀秀制作隔离区聊天背景教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作隔离区聊天背景的教程,各位想知道具体方法的,那么下面就快来跟着小编一起看一看吧。 给各位美图秀...2016-09-14
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • vue项目,代码提交至码云,iconfont的用法说明

    这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30
  • IDEA插件之快速删除Java代码中的注释

    这篇文章主要介绍了IDEA插件之快速删除Java代码中的注释,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-18