概述
今天刚好周六,昨天有人在群里问如何实习php的即时通讯。我也搜了搜资料,打算自己实现一遍php消息推送中的-ajax长轮询的。我觉得对php即时通讯的介绍写得比较好的是:
可以参考一下,其他我就不多说了,参考链接,优于用于演示,就没有操作数据库中的东西了。
我的代码
入口代码 index.html
<!DOCTYPE HTML><html><head> <title>反ajax推送</title> <style> .send{color:#555;text-align: left;} .require{color:blue;text-align: right;} .content_box{text-align: center;margin: 20px; border: 1px solid #ddd;padding: 20px;} </style> <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script></head><body> <div class="content_box" id="content_box_title" style="border: none;">消息框</div> <div class="content_box" id="content_box"> </div> <div style="width: 450px;margin: 0 auto;"> <select id="username" style="font-size: 20px;"> <option value="1" selected="selected">1</option> <option value="2">2</option> </select> <input type="text" style="font-size: 20px;" value="" id="send_text"> <button id="btn_send" style="font-size: 20px;">发送</button> <button id="btn_link" style="font-size: 20px">连接</button> </div> <div class="error_tip" id="error_tip" style="color: red;"> </div> <script> $(function(){ //发送消息 $('#btn_send').click(function(){ var send_text = $('#send_text').val(); if(send_text.length <= 0){ $('#error_tip').html('不能输入空值'); }else{ send(send_text); } }); //按回车键发送消息 $('#send_text').on('keyup',function(e){ if(e.keyCode == 13){ $('#btn_send').trigger('click'); } }); //建立通讯链接 $('#btn_link').click(function(){ connect(); var _this = $(this); _this.attr('disabled',true); _this.html('已连接'); }); }); //建立通讯连接函数 function connect(){ $('#content_box_title').html($('#username').val()+'的消息窗口'); $.ajax({ data:{'user':$('#username').val()}, url:'ajaxPush.php', type:'get', timeout:0, dataType:'json', success:function(data){ $('#content_box').append('<div class="require">'+data.msg+'</div>'); connect(); } }); } //发送消息函数 function send(massege){ var user =$('#username').val(); $.getJSON('write.php',{'msg':massege,'user':user},function(data){ if(data.sf){ $('#content_box').append('<div class="send">'+massege+'</div>'); $('#send_text').val(''); }else{ $('#error_tip').html('输入保存错误!'); } }); } </script></body></html>
ajax处理输入 write.php
<?php/** * Created by TXM. * Time: 2015/4/18 13:13 * function: */$filename = dirname(__FILE__).'/data.txt';$isread_file = dirname(__FILE__).'/isread.txt';$user = dirname(__FILE__).'/user.txt';//写入消息,消息未读,谁发送的消息file_put_contents($filename,$_GET['msg']);file_put_contents($isread_file,'0');file_put_contents($user,$_GET['user']);echo json_encode(array('sf'=>true));
长轮询推送 ajaxPush.php
<?php/** * Created by TXM. * Time: 2015/4/18 13:12 * function: */$filename = dirname(__FILE__).'/data.txt';$isread_file = dirname(__FILE__).'/isread.txt';$userfile = dirname(__FILE__).'/user.txt';$get_user = $_GET['user'] == '1'?'2':'1';$msg='';while(1){ $msg = file_get_contents($filename); $isread = file_get_contents($isread_file); $user = file_get_contents($userfile); //是对方发送的消息,设置消息已读,退出循环。 if($isread == '0' && $get_user == $user){ file_put_contents($isread_file,'1'); break; } sleep(1);}echo json_encode(array('msg'=>$msg));
效果
源码下载地址
http://pan.baidu.com/s/1pJ5elpp

phpientifiesauser'ssessionusessessionSessionCookiesAndSessionIds.1)whiwSession_start()被称为,phpgeneratesainiquesesesessionIdStoredInacookInAcookInamedInAcienamedphpsessidontheuser'sbrowser'sbrowser.2)thisIdAllowSphptptpptpptpptpptortoreTessessionDataAfromtheserverMtheserver。

PHP会话的安全可以通过以下措施实现:1.使用session_regenerate_id()在用户登录或重要操作时重新生成会话ID。2.通过HTTPS协议加密传输会话ID。3.使用session_save_path()指定安全目录存储会话数据,并正确设置权限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用会话构建高效购物车系统的步骤包括:1)理解会话的定义与作用,会话是服务器端的存储机制,用于跨请求维护用户状态;2)实现基本的会话管理,如添加商品到购物车;3)扩展到高级用法,支持商品数量管理和删除;4)优化性能和安全性,通过持久化会话数据和使用安全的会话标识符。

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

WebStorm Mac版
好用的JavaScript开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器