分类
PHP编程

php商城系统源码的好处有哪些?(php免费商城系统源码)

随着现如今互联网时代的快速发展,越来越多的企业在发展电子商务同时,要重视建设电子商务的基础,需要从实际发展需求出发,注重平台的安全、稳定、有效,更好促进商城系统的技术演进,为企业的电商发展奠定更加扎实的技术基础和提升竞争力。下面小编就给大家介绍一下PHP商城系统开源哪个好。

一,PHP语言开发商城系统优势:

1,php开源商城系统更方便

PHP程序快速开发,运行速度快,技术本身可以快速学习。嵌入HTML:因为PHP可以嵌入HTML语言,所以它与其他语言相关。编辑简单,实用,然后满足企业发展需要的功能,或增加企业的新需求; ??

2,php开源商城系统适应性强 ??

选择开源商城系统,公司可以访问源代码,可以根据自己的意愿修改开源商城系统,降低此类风险,因为在开源社区中会有不断的维护和更新流。因此,受到各行各业中小企业的欢迎和广泛使用,使开源商城软件的适应性更强; ??

3,php开源商城系统强大的跨平台

由于PHP是服务器端脚本,因此它可以在UNIX,LINUX,WINDOWS,iOS和Android等平台上运行; ??

4,php开源商城系统效率更高 ??

效率是每个用户在选择商城系统时将考虑的问题。 PHP mall系统消耗相对较少的系统资源。 ??

5,php开源商城系统更安全 ??

安全是每个用户在选择电子商务系统时会考虑的第一个问题,因为开源商城系统的源代码是开放的并且没有得到很好的保护,用户将认为开源商城系统的安全性是不可靠的。然而,随着电子商务系统开发技术的成熟,对开源商城系统的研究也取得了很大进展。有特殊的人来解决电子商务系统的BUG等问题。因此,开源商城系统的安全性能不断提高。二次开发商城系统是选择PHP还是JAVA?

个人建议一般中小型商城的话可以选择PHP语言开发,其成本也相对低,系统也够用。如果大型商城项目,资金预算充足,可以考虑用JAVA开发。总之,PHP和JAVA都是目前比较主流的开发语言,并且都有大型平台案例,所以最终的选择还是看客户自己!

如果您想拥有自己的PHP商城系统,可选择CRMEB,CRMEB专注于移动互联网软件设计、研发、销售为一体的高新技术企业,我们将竭诚为您服务。

分类
PHP编程

零基础学习PHP篇php简介php标记php注释服务器端语言

一、php 简介

PHP: Hypertext Preprocessor,超文本预处理器的缩写

服务器端语言,专为web设计,可以嵌入到HTML语言

PHP代码将在Web服务器中被解释为HTML代码,返回客户端

PHP是用于动态内容和数据库交互的最优秀的语言

PHP官方网站:http://www.php.net

二、php 历史

php 1.01994年

PHP2.0 1995年

PHP/FI(Form Interpreter),PHP/FI加入了对mSQL的支持

php3.01997年

开发小组加入了 Zeev Suraski 及 Andi Gutmans

php4.02000年

php5.0现在

开放源代码

跨平台的服务器端脚本语言

容易学习,大量地借用C ,Java 和 Perl语言的语法

完全免费

三、php变量_数据类型

例:helloworld.php

<html>

<head>

<title>HelloWorld</title>

</head>

<body>

<p>第一个PHP程序</p>

<p>

<?php

echo ‘Hello World!’;

?>

</p>

<p>时间:<?php echo date(“Y-m-d H:i:s”);?> </p>

</body>

</html>

四、PHP标记

四种php标记:

1.<?php echo ‘hello’;?>

2.<? echo ‘hello’; ?>//短标记

3.<script language=”php”> echo ‘hello’;</script>

4.<% echo ‘hello’; %>//asp风格

注:2、4需要修改php.ini配置文件才可以使用,1、3可以直接使用。

五、PHP注释

1.多行注释

/*

This script is hello world

Author: david

Date: 2010.04.01

*/

2.单行注释

echo ‘hello’; //print hello

echo ‘hello’;# print hello

3.文档注释

/**

* 获取用户数据

* @param haook.cn

* @author lison

*/

下一节将讲到PHP变量等相关知识。

分类
PHP编程

PHP的SESSION和SESSION的GC机制(session作用)

PHP的SESSION和SESSION的GC机制

什么是Session?

session是一次浏览器和服务器交互的会话.当我们使用浏览器打开一个网页,用到的是HTTP协议 学过计算机的应该知道,HTTP有5个特点:

?支持客户/服务器模式?简单快速?灵活?无连接?无状态 那么无状态的一段连续的HTTP请求,我们怎么把他们关联起来呢?这里就用到了Session. 并且Session存储在服务端(默认放到/tmp临时目录下),很好地解决了安全的问题. php通过session_start()函数开启session访问,生成一个唯一的session_id同时也会 往Cookie中写入名称为PHPSESSION的值为session_id的变量.当下一次浏览器再次发起 请求的时候会自动带上Cookie中的值,通过这个PHPSESSION我们的服务端就能识别出这是 同一个浏览器发起的请求.

Session和Cookie的关系

Session存储在服务端,Cookie存储在客户端也就是我们通常使用的浏览器.通常需要Cookie 中的值我们才能识别到Session. 但是如果禁用了Cookie我们还能不能用Session呢? 其实我们也可以通过

?请求的url中的带上session_id?请求的header中带上session_id 等方式来使用session.

php.ini中的关键配置

[Session] session.save_handler = files session.save_path = "/tmp" session.use_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.serialize_handler = php session.gc_divisor = 1000 session.gc_probability = 1 session.gc_maxlifetime = 1440

Session的垃圾回收

在session_start()函数的时候触发GC,但是由于请求量的不同,在One Second可能有N个这样的session_start() 如果都触发了GC那么这个效率会不会太低了?所以这个时候加上了一个概率,这个概率= gc_probability/gc_divisor 我们通过调整数值的大小来调整这个GC概率.在触发GC后我们的垃圾回收机制就会删除过期的文件.

Session同步的问题

在我们的业务量增大之后,通常会使用集群的方式来部署我们的服务器,前端通过负载均衡来分发我们的请求.如果还是 以文件的形式保存我们的session的话,就会遇到有时候是登录,有时候又不是登录状态的问题,因为我们不能保证每次 请求都会分发到同一台服务器.这个时候就推荐使用redis来存储我们的session,通过redis来解决这个数据同步的问题.

更多

网站建设、跨端小程序开发、爬虫开发、app开发

公众号:杭州师薄零网络

分类
PHP编程

PHP 7.0.3 正式版发布(PHP7.0)

七年以来,PHP一直是第四大最流行的编程语言,驱动全球超过2亿多个网站,全球超过81.7%的公共网站在服务器端采用PHP。PHP在这个星期有了自2004年以来最大的飞跃,因为PHP 7已经发布。PHP 7最大特色是极大地改进了性能,在一些WordPress基准测试当中,性能可以达到PHP 5.6的3倍。

PHP 7还有其他一些比较小的改进,比如显著减少内存使用,添加返回类型声明等等功能。PHP 7包含了一些重大安全改进,如除去PHP安全模式,添加魔术引号,有一些新的保留关键字等等。这意味着像WordPress等Web应用程序需要局部重新设计,以便为PHP 7发布做好准备,现在WordPress看起来已经完全兼容PHP 7。

虽然PHP 7已经发布,但是广泛采用还需要数年之久,Web应用,特别是针对企业的Web应用,要花费几年时间才能升级到新版本平台。然而,很多Web开发人员都认为,PHP 7巨大的性能改进对他们很有吸引力。

官方暂未更新Changlog。

分类
PHP编程

FusionCharts XT v3.8.0发布(Fusioncharts)

FusionCharts XT是跨平台、跨浏览器的JavaScript/HTML图表组件。 FusionCharts支持 ASP、 ASP.NET、 PHP、 JSP、 ColdFusion、 Ruby on Rails、 JavaScript、甚至简单的HTML页面。它是您值得信赖的JavaScript图表解决方案,目前在全球有45万用户选择 Fusioncharts来制作专业的JavaScript图表。

点击下载最新试用版。

新增功能:

  • 以下属性被添加到自定义图例图标形状:
    • drawCustomLegendIcon
    • legendIconBorderColor
    • legendIconBgColor
    • legendIconAlpha
    • legendIconBgAlpha
    • legendIconSides
    • legendIconBorderThickness
    • legendIconStartAngle
  • 客户端导出功能已启用Google Chrome和Mozilla Firefox浏览器。
    允许用户直接从浏览器导出图表,从而消除发送图表数据给FusionCharts的出口服务器的周转时间和等待接收转换数据的时间。

改善:

下列属性已被列入到配置文本趋势线:

  • trendValueFont
  • trendValueFontSize
  • trendValueFontBold
  • trendValueFontItalic
  • trendValueBgColor
  • trendValueBorderColor
  • trendValueAlpha
  • trendValueBgAlpha
  • trendValueBorderAlpha
  • trendValueBorderPadding
  • trendValueBorderRadius
  • trendValueBorderThickness
  • trendValueBorderDashed
  • trendValueBorderDashLen
  • trendValueBorderDashGap

修复:

  • Y轴标签,当在条形图高度小于一定的域值时会自动跳过重叠。有着长y轴标签的柱状图在图表以非常小的尺寸显示,因为标签被重叠。现在可以跳过标签重叠。
  • spline图表上的多个相同值的点现在使用线相连接。
  • 当drawAnchors=0时,水平线现在在变焦线图中显示为图例图标。在多系列线图中,若线段锚被隐藏,水平线将被用作图例图标。此功能现在在变焦线图也可用。
  • 雷达图现在支持字体大于17的轴标签。为了解决此问题,添加了动态差分系数的计算。如果该行的高度超过了允许的高度,垂直差因子被重新计算。这为用户增加字体大小提供更多空间。轴渲染也得到了改进,包括大字体。然而,如果字体大小过高,重叠将被隐藏文本代替。
  • 当allowDrag=0时,在drag-node中配置的节点元素链接现在可用。
  • 在多系列的2D列图表中plotBorderAlpha属性覆盖plotFillAlpha属性。
  • 现在当Alert Manager与一系列实时值匹配时包括最大值和最小值。当实时数据值超过预定的域值时或即使是域的最大值或最小值操作仍可执行。
  • 当所有X轴的值相同且showRegressionLine=1时散点图上的数据点可以被正确呈现。当所有的数据点具有相同的X轴值且showRegressionLine=1时y轴也被配置成自动用于配置图表信息的新属性名称现在用于.configure方法。
  • Following are the new attribute names:以下是新属性名称:
    • dataLoadStartMessage
    • dataLoadErrorMessage
    • dataInvalidMessage
    • dataEmptyMessage
    • typeNotSupportedMessage
    • loadMessage
    • renderErrorMessage
    • baseChartMessageFont
    • baseChartMessageFontSize
    • baseChartMessageColor
  • 当创建超过31个FusionCharts图表实例时,IE7,8,9版本不再抛出“无效参数”的错误。IE9及以下版本对于FusionCharts的样式表限制也被修复了。
  • 甘特图中的数据表格高度现在基于进程表格的自定义高度自动更新。当forceRowHeight=1并且自定义被定义为单个进程时,数据表单元格的高度与相应进程单元格的高度相同。
  • 现在PHP服务器端可用于旧版本。由于PHP新版本包含的文件而导致的语法错误现在已被修复。
  • 饼图和环形图的placeValueInside属性已被弃用。在饼图的二维图表中,当placeValueInside设置为1,数据标签则被放置在饼图的内部。因为这不是预期的功能,因此扇形内的标签管理不具此功能。
  • 当滚动图表有滚动条后,出现在图表边缘的锚不再被剪切。以前,为了避免这种情况,数据点的数目必须减少以除去滚动条。现在无论多少数据点都能呈现且不必担心锚被裁剪了。
  • setAdaptiveYMin=1现在用于减少Y轴标签重叠。
  • 实时图表中的内存泄露现在被修复。在x轴编码的泄漏引起反复添加标签元素的事件而最终导致内存泄漏。内存泄漏在v3.7.0版本里被部分修复,在v3.8.0版本里被进一步修复。
  • 图例图标文本(基于智能标签)的突然换行被修复。通过计算文本的宽度,去掉小数部分进到下一个整数来修复了这一问题。
  • 当甘特图表出现在VML浏览器时dataplotRollOver, dataplotRollOut, 和 dataplotClick事件被触发。以前是因为侦听器没有连接所以事件不被触发。
  • 在气泡图表中的数据点现在可以有相对较小的数据值或以较小的尺寸在图标上可见。minBubbleRadius属性用来限制所有气泡的最小半径,使半径非常小的气泡也可见。
  • 当图标的可视状态发生改变时不好的视觉体验得到修复。如果图表的父容器被默认隐藏,图表基于默认内在值计算出它的尺寸。当父容器元素可见时图表根据之前计算出尺寸的值重绘,导致不好的视觉体验。这一问题现在已被修复。
  • 在灯泡图表中多个事件调用每个实时更新的问题被修复。
分类
PHP编程

后端处理:Java正确获取客户端真实IP方法整理(干货)

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。

如果使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.abc.com/的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

当我们访问http://www.abc.com/index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046/index.jsp,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

外界流传的JAVA/PHP服务器端获取客户端IP都是这么取的:

伪代码:

1)ip = request.getHeader(“X-FORWARDED-FOR “)

2)如果该值为空或数组长度为0或等于”unknown”,那么:

ip = request.getHeader(“Proxy-Client-IP”)

3)如果该值为空或数组长度为0或等于”unknown”,那么:

ip = request.getHeader(“WL-Proxy-Client-IP”)

4)如果该值为空或数组长度为0或等于”unknown”,那么:

ip = request.getHeader(“HTTPCLIENTIP”)

5)如果该值为空或数组长度为0或等于”unknown”,那么:

ip = request.getHeader(“X-Real-IP”)

6)如果该值为空或数组长度为0或等于”unknown”,那么:

ip = request.getRemoteAddr ()

先说说这些请求头的意思

  • X-Forwarded-For

这是一个 Squid 开发的字段,只有在通过了HTTP代理或者负载均衡服务器时才会添加该项。

格式为X-Forwarded-For:client1,proxy1,proxy2,一般情况下,第一个ip为客户端真实ip,后面的为经过的代理服务器ip。现在大部分的代理都会加上这个请求头。

  • Proxy-Client-IP/WL- Proxy-Client-IP

这个一般是经过apache http服务器的请求才会有,用apache http做代理时一般会加上Proxy-Client-IP请求头,而WL-Proxy-Client-IP是他的weblogic插件加上的头。

  • HTTPCLIENTIP

有些代理服务器会加上此请求头。

  • X-Real-IP nginx代理一般会加上此请求头。

下面是一个参考获取客户端IP地址的方法:

public static String getIpAddress(HttpServletRequest request) {
 String ip = request.getHeader("x-forwarded-for");
 if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 ip = request.getHeader("Proxy-Client-IP");
 }
 if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 ip = request.getHeader("WL-Proxy-Client-IP");
 }
 if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 ip = request.getRemoteAddr();
 }
 if (ip.contains(",")) {
 return ip.split(",")[0];
 } else {
 return ip;
 }
}

如果使用的是Druid连接池,可以参考使用:com.alibaba.druid.util.DruidWebUtils#getRemoteAddr方法,但这个是经过多级代理的IP地址,需要自己处理下获取第一个。

有几点要注意

  1. 这些请求头都不是http协议里的标准请求头,也就是说这个是各个代理服务器自己规定的表示客户端地址的请求头。如果哪天有一个代理服务器软件用oooo-client-ip这个请求头代表客户端请求,那上面的代码就不行了。
  2. 这些请求头不是代理服务器一定会带上的,网络上的很多匿名代理就没有这些请求头,所以获取到的客户端ip不一定是真实的客户端ip。代理服务器一般都可以自定义请求头设置。
  3. 即使请求经过的代理都会按自己的规范附上代理请求头,上面的代码也不能确保获得的一定是客户端ip。不同的网络架构,判断请求头的顺序是不一样的。
  4. 最重要的一点,请求头都是可以伪造的。如果一些对客户端校验较严格的应用(比如投票)要获取客户端ip,应该直接使用ip=request.getRemoteAddr(),虽然获取到的可能是代理的ip而不是客户端的ip,但这个获取到的ip基本上是不可能伪造的,也就杜绝了刷票的可能。(有分析说arp欺骗+syn有可能伪造此ip,如果真的可以,这是所有基于TCP协议都存在的漏洞),这个ip是tcp连接里的ip。

参考 http://blog.csdn.net/sgx425021234/article/details/19043459 http://blog.csdn.net/fengwind1/article/details/51992528

分类
PHP编程

回顾使用PHP原生发送电子邮件(一)(php 邮件发送)

I wish I could remember the very first email message I ever sent. Unfortunately, the truth is that I’ve come to take email for granted; for instance, I easily send more email messages than I make phone calls. Because the novelty has long since worn off, the memory of that first email is as lost to me as my first phone call; but I doubt my sense of wonder was any less complete at the time. To someone who has never seen email in action before, that first message can be magical.

我希望我能记得我发送的第一封电子邮件。不幸的是,事实是我已经把电子邮件视为理所当然;例如,我很容易发送比打电话更多的电子邮件。因为新奇感早已消失,我对第一封电子邮件的记忆就像第一次打电话一样消失了;但我怀疑当时我的惊奇感是否不够完整。对于一个以前从未见过电子邮件的人来说,第一条消息可能很神奇。

In this article, I’ll try to recapture some of that magic for those of you who have never created a Web site that sends email messages. We’ll see how the PHP server-side scripting language may be set up to send email, and explore how to send complex message types such as HTML email or emails with file attachments.

在这篇文章中,我将尝试为那些从未创建过发送电子邮件的网站的人重温其中的一些魔力。我们将了解如何设置PHP服务器端脚本语言来发送电子邮件,并探索如何发送复杂的消息类型,如HTML电子邮件或带有文件附件的电子邮件。

PHP Email Setup

PHP电子邮件步骤

Before we can send email with PHP, we need to set it up to do so, just as you need to set up your email program before it can send messages. Configuration for sending email in PHP is done with the php.ini file, so open up your Web server’s php.ini in whichever editor you normally use.

在我们用PHP发送电子邮件之前,我们需要对它进行设置,就像您需要在它发送消息之前设置电子邮件程序一样。用PHP发送电子邮件的配置是通过PHP.ini文件完成的,所以在您通常使用的编辑器中打开Web服务器的PHP.ini。

If you don’t run your own server, but instead have a PHP-equipped Web host, you can safely assume that everything in this section has been done for you, and skip ahead.

如果您没有运行自己的服务器,而是有一个配备了PHP的Web主机,那么您可以放心地假设本节中的所有内容都已为您完成,然后跳过。

In the section entitled [mail function] in the php.ini file, you’ll find three settings: SMTP, sendmail_from, and sendmail_path. If your server runs on a Windows machine, you’ll want to set the SMTP option to point to your SMTP server (or your ISP’s SMTP server, if you’re setting up PHP on your home machine). If instead you’re setting up PHP on a Linux (or other Unix-based OS) server, you’ll want to set the sendmail_path option to point to the sendmail program on your server, passing it the -t option. You can use the SMTP option in Linux instead if you don’t have sendmail set up.

在php.ini文件中标题为[mail function]的部分中,您将找到三个设置:SMTP、sendmail_from和sendmail_path。如果您的服务器在Windows计算机上运行,则需要将SMTP选项设置为指向您的SMTP服务器(或ISP的SMTP服务器,如果您在家庭计算机上设置PHP)。如果要在Linux(或其他基于Unix的操作系统)服务器上设置PHP,则需要将sendmail_path选项设置为指向服务器上的sendmail程序,并将-t选项传递给它。如果没有设置sendmail,则可以在Linux中使用SMTP选项。

In either case, you’ll want to set the sendmail_from option to your email address, or whichever address you’d like to appear as the default ‘from’ address for emails sent from PHP scripts.

在任何一种情况下,您都需要将sendmail_from选项设置为您的电子邮件地址,或者您希望显示为从PHP脚本发送的电子邮件的默认“from”地址的任何地址。

Here’s how the section might look on a typical Windows server, or on a Linux server without sendmail:

以下是该部分在典型Windows服务器上的外观,或在没有sendmail的Linux服务器上的展示:

[mail function]
; Setup for Windows systems
SMTP = smtp.my.isp.net
sendmail_from = [email protected]
And here’s how it might look on a Linux server with sendmail:

[mail function]
; Setup for Linux systems
sendmail_path = /usr/sbin/sendmail -t
sendmail_from = [email protected]
With those settings in place, restart your Web server and you’re ready to go!

Sending Plain Email

发送普通电子邮件

It doesn’t come much easier than the procedure to send plain text email in PHP. In fact, you can do it in just one line in a PHP script:

用PHP发送纯文本电子邮件的过程并不容易。事实上,您可以在PHP脚本的一行中完成:

<?php
mail('[email protected]', 'Subject', 'Your message here.');
?>

The above line would send an email message to [email protected] with ‘Subject‘ as the subject line and ‘Your message here.‘ as the message body. As you can see, PHP’s mail function makes sending email exceedingly simple, but there are a few advanced tricks we can use to get more out of this simple function.

上述行将向发送电子邮件[email protected]以“Subject”作为标题,以“Your message here.”作为邮件正文。正如您所看到的,PHP的邮件函数使发送电子邮件变得非常简单,但是我们可以使用一些高级技巧来从这个简单的函数中获得更多信息。

First of all, if the mail system you configured in your php.ini file rejects a message you try to send (for example, if the ‘to’ address is not a valid email address), this function will display an error message in the user’s browser. Like most PHP functions, however, error messages may be suppressed by preceding the function name with an @ symbol. Combine this with the fact that the mail function returns either true or false depending on whether the email was accepted by the mail sending system, and you have a formula to send email with appropriate error checking:

首先,如果您在php.ini文件中配置的邮件系统拒绝您尝试发送的邮件(例如,如果“to”地址不是有效的电子邮件地址),此函数将在用户浏览器中显示错误消息。但是,与大多数PHP函数一样,可以通过在函数名前面加上@符号来抑制错误消息。再加上邮件函数根据邮件发送系统是否接受邮件而返回true或false,并且您有一个发送电子邮件并进行适当错误检查的公式:

<?php
if (@mail($to, $subject, $message)) {
echo('<p>Mail sent successfully.</p>');
} else {
echo('<p>Mail could not be sent.</p>');
}
?>

Note that just because an email message could be sent doesn’t guarantee it will arrive at its destination. An email address can be valid (i.e. correctly formed) but not actually exist. For instance, you can successfully send a message to [email protected] — that is, the mail function will return true — but the message will bounce because no such user exists. PHP provides no built-in means of detecting when this happens.

请注意,仅仅因为可以发送电子邮件并不保证它会到达目的地。电子邮件地址可能有效(即格式正确),但实际上不存在。例如,您可以成功地向不存在的用户发送消息。[email protected]也就是说,邮件函数将返回true-但邮件将反弹,因为不存在这样的用户。PHP没有提供检测何时发生这种情况的内置方法。

When you want to send a message to multiple recipients, you can just list their email addresses one after another, separated by commas, in the first parameter. For example:

当您想向多个收件人发送邮件时,您可以在第一个参数中逐个列出他们的电子邮件地址,并用逗号分隔。例如:

<?php
mail('[email protected], [email protected]',
'An email to two people', 'Message goes here.');
?>

分类
PHP编程

服务端主动推送消息SSE PHP+js(消息推送实现)

1、php服务端代码

<?php
header('X-Accel-Buffering: no');
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
set_time_limit(0); //防止超时
ob_end_clean(); //清空(擦除)缓冲区并关闭输出缓冲
ob_implicit_flush(1); //这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了
while(1) {
	$time = date('Y-m-d H:i:s');
	$c = "retry:1000" . PHP_EOL; //重试毫秒数
	$c = "event:my_test_message" . PHP_EOL; //定义事件
	$c .= "data: The server time is: {$time}" . PHP_EOL; //推送内容
	echo $c . PHP_EOL;
	sleep(3);
}

2、客户端代码

<body id="result">
</body>
<script>
	var source = new EventSource("sse.php");
	
	source.addEventListener('message', function(event) {
		console.log(event)
	})
	
	source.addEventListener('my_test_message', function(event) { //自定义事件回调
		console.log(event)
	})
</script>

分类
网络相关源码

KPS做PHP服务端与易语言客户端通信开源

在用KPS之前,请确认您的空间是否支持PHP环境

请将PHP服务文件下载后解压,将KPS文件夹上传至FTP根目录。

对应地址:http://域名/KPS

此次开源主要是一些朋友希望用PHP来实现像易语言服务端和客户端组件发送接收效果,不仅可以24小时服务在线,还省去了买服务器的钱

网上大部分的PHP空间都有免费的。比较实用。