很多站长朋友们都不太清楚PHP商城常见问题,今天小编就来给大家整理PHP商城常见问题,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP网站打开空白的常见解决方法有哪些 2、 php页面解决乱码问题 3、 商城类项目中遇到的一些问题 4、 thinkphp前端显示网络异常 PHP网站打开空白的常见解决方法有哪些在php编程中出现空白页面可能是由以下几个原因造成的:
1、逻辑错误
逻辑错误是最难排除的,从表面上看,也许代码是合法的,是正规的,可运行起来却不是预料之中的。为什么呢?也许是编写者想得不够全面,毕竟人是人,计算机是计算机,计算机不可能完全按照人的思路去运行脚本。在这里,我告诉大家一个比较好的调试方法,就是使用注释符“/* */”,注释掉一些代码,观察运行情况。要想完全排除逻辑错误,没有耐心是不行的,所以要静下心来,不要着急。
2、行为未定义
看下面的代码:
<?php
$action = $_GET['id'];
if($action == '')
$action = 1;
if($action == 1) {
echo("/$action's value is 1");
} else if($action == 2) {
echo("/$action's value is 2");
}
?>
这段代码大家看得很明白,就是如果$action变量为空时将它设为1,然后判断$action变量的值而做出不同的事件。当然,假如$action既不等于1,也不等于2的时候,PHP会做什么呢??——什么也不会做,所以就会产生了空白的页面。知道了原因,解决就容易了。关于这个问题的解决,很简单,在 if模块后加一个else就可以了,打印一些信息即可。
3、语法错误
大家可能会问了,如果出现语法错误,一般会有错误提示的,怎么会空白呢?当然,这只是一些个别现象,在某些主页空间中(比如中国聚网的免费空间),如果你写得PHP有语法错误,它也不会有任何提示。解决也很容易,在上传文件之前在本地测试,找出错误的代码进行改正。()
4、滥用错误屏蔽符@
错误抑制符“@”常常用于可能会发生错误的地方,但是抑制符使用过多或使用得不是时候,也可能导致空白也免得出现,来看看下面两个PHP脚本吧:
test1.php
<?php
@include("test2.php");
echo($var);
?>
test2.php
<?php
$var = "Hi" //这行代码有错误,没有分号
$var1 = "Hello" //同上
?>
运行test1看看,结果就产生了空白的页面。纠正也很简单,可以去掉include函数前面的抑制符,或者更正test2.php文件中的错误。
php页面解决乱码问题1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了(我深有体会)。
2、页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8两种编码。
3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。
知道了WEB开发中哪些地方涉及到了编码,也就知道了PHP页面乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。下面是一些常见的错误情况与解决:
1、数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是PHP页面乱码,需要在查询前先使用:
mysql_query("SET NAMES GBK"); 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:
mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
注:事实上MYSQL的数据输入输出比上面讲的更复杂一些,MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default-character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。
2、页面申明编码与文件本身编码不一致,这种情况很少发生,因为如果编码不一致美工做页面时候在浏览器看到的就是乱码了。更多时候是发布以后修改一些小BUG,以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。
3、一些租用虚拟主机的朋友,明明上述3项编码都设置正确了还是有PHP页面乱码。比方说网页是GB2312编码的,IE等浏览器打开却总是识别成UTF-8,网页HEAD里面已经申明是GB2312了,手动修改浏览器编码为GB2312后页面显示正常。产生原因是服务器Apache设定了服务器全局的默认编码,在httpd.conf里面加了AddDefaultCharset UTF-8。这时候服务器会首先发送HTTP头给浏览器,其优先级比页面里申明编码高,自然浏览器就识别错了。解决办法有2个,请管理员在配置文件自己的虚机里加上一条AddDefaultCharset GB2312来覆盖全局配置,或者在自己目录的.htaccess里配置。
商城类项目中遇到的一些问题最近负责了一个优点类似美团的商城类微信小程序项目。小程序主要功能为用户能够在小程序中购买商品(门票、餐饮、住宿等),成功购买后能够得到对应商品的消费码,然后在线下实体门店中能够通过消费码来兑换实体商品或实体权利。
此次项目的体量级本身并不大,只是一个简单的商城类的小程序。基本上所有的产品功能架构都是根据业务方实际中的需要来构建的。所以对于小程序本身就不再赘述。因为是第一次做商城类项目,还是遇到了一些意料之外的问题。本文主要针对项目中遇到的问题以及认为需要着重注意的点进行总结。希望能对首次负责类似产品的同学有所帮助~
在微信小程序中的支付流程为:用户支付->调用微信支付接口->生成支付订单->鉴权并返回支付结果->更新支付状态(如图)。
图为微信官方文档,相关的链接在文末,感兴趣的同学可以去自己研究一下。
在实际测试中,存在用户下单并成功支付后,管理后台有一定概率无法收到微信的回调。此时会造成用户侧会显示已经支付成功,然后商户侧(管理后台)则会显示订单一直处于支付中的情况。
内部沟通后我们决定针对用户侧支付成功,而商户侧未获取到微信回调的订单,在限制次数(或规定时间)内通过定时任务的形式重复申请获取回调。因为此类情况是小概率事件,若超过上述条件后仍未收到微信回调,则该笔订单进入异常订单列表并通过站内信进行提醒。通过人工进行处理。
常见的锁定库存的方式一般是2种。①生成订单后即锁定对应库存,若在对应时间内未成功支付即重新释放库存②生成订单时不进行库存锁定,只有成功支付后才会锁定库存。
由于此次小程序体量较小,业务方担心被友商恶意锁单,故采用了第②种“支付成功后才锁定库存”的方式。但是第②种方式对于销售量较好的商品容易产生支付失败的场景。
例如当某商品库存为“1”,此时多名用户同时下单进行支付,可能有多个用户都能支付成功,但只有最先收到微信支付回调的用户账号能够锁定剩余库存。而其他用户成功支付的订单将会因为库存不足而自动进入退款流程。
在这种情况下,系统需要针对此类情况造成的退款,在退款短信提醒中通过文字的形式进行解释说明。
用户侧申请退款后,订单将变为“退款中”状态。此时该笔订单对应的消费码无法正常使用(核销)。若用户在退款期间需要使用消费码,点击订单详情页的“取消退款”按钮即可正常使用。
当申请退款的订单在管理后台审核时选择拒绝退款,需要对应操作人填写(选填)拒绝原因。退款失败后订单会变为“待使用”状态,用户能够继续使用或再次退款。
在这边需要注意的是,如果用户“退款失败”后,需要在小程序端展示用户的退款记录。
在商城中商品分为2大类。①商品每一天的库存、价格都是独立存在的,互不影响(如酒店房间、旅游线路等)②一段时间内的库存都是一起的总库存(例如礼品、门票等),但是价格能够针对每日进行分别设置。对于这两种不同的商品,在库存和价格的设置上也会有一点区别。
为了能够更好的管理商品每日的价格、每日的库存(如需要),我们通过日历视图的形式对商品价格、库存、取消规则等进行管理。下述简称为“日序表”。
2.5.1 日库存商品处理方式
对于需要设置每日库存的商品,我们在创建商品时需要设置一个 标准库存 、 标准价格 、 默认取消规则 ,用于初始化日序表中的相关字段。
需要注意的是,考虑到商品创建完成后,商品的每日的库存信息、每日的价格、每日的取消规则会在日序表中进行修改。因此在商品创建完成后在商品详情页中对应字段将变为不可修改状态。管理员只能在日序表中对相关信息进行修改/批量修改。
2.5.2 总库存商品处理方式
对于不需要设置每日库存的商品,在创建商品时设置的库存即为商品的总库存,并支持在商品详情页中进行修改。标准价格、默认取消规则字段在商品创建成功不允许从商品详情页中进行修改。只能从日序表中对价格、取消规则等信息进行修改/批量修改。
2.6.1 消费码的核销
消费码是用户在小程序端购买商品后获得的相关使用凭证。用户持消费码至线下使用场所使用时需要对消费码进行核销后方能正常使用。
在核销时遇到的主要问题是核销后自动进行的一系列操作。
比如核销后给自动给推广员发放奖励金、优惠券等权益。因为考虑到实际操作中可能会存在错误核销、恶意核销、核销后用户要求退票等场景,所以在消费码核销后需要能够在当日24点前对订单进行撤销核销的操作。
出于用户体验考虑,为了避免出现订单撤销核销后系统发放的奖励金、优惠券等权益失效的情况,我们通过将发放相关权益的时间调整至核销当日的24点之后进行发放的形式来规避上述因为撤销核销操作产生的一系列问题。(24点后无法撤销当日核销的订单)
2.6.2 消费码的过期
在系统中每种商品的订单是有时效性的,当超过指定时间后对应订单的消费码即会变为“已过期”状态。为了商户的实际利益和用户体验,在商户允许的情况下,已过期状态下的订单在后台仍然能够正常核销,但是在核销时会通过状态强标识和二次确认的形式来提醒操作人员该笔订单是已过期的订单,是否要继续核销。
关于过期订单核销后相关权益(优惠券、奖励金等)是否正常发放给该笔订单的推广员,需要根据业务部门实际情况来规划。由于本次做的小程序线下门店处于推广阶段,所以过期订单核销后相关权益仍然会正常发给推广员。
在商城中会通过一些活动来给用户发放奖励金。当用户满足一定条件后能够对奖励金进行提现。在微信小程序中我们通过微信商户的转账来实现提现相关的功能。但是在实际操作中偶尔会出现提现失败的情况,主要有以下2种情况:
2.7.1 平台账户金额不足
如果商户微信商户账号中资金提现后留存资金不足,当用户提现时就会出现提现失败的情况。出于用户体验和企业形象考虑,“平台账户金额不足”造成的提现失败状态不会同步至用户端,而是在管理后台通过站内信或负责人手机短信提醒的形式进行通知。管理员在异常订单模块中能够查看到“提现失败订单”,能够针对金额不足的订单进行“再次提现”操作。
需要注意的是,管理员在后台进行的“再次提现”操作,用户端都是无感知的。
2.7.2 提现接口报错
当提现(转账)接口报错时,最直观的展示形式即为支付中心中的转账订单状态一直显示为“转账中/未确认”,从订单创建日期算起,每天都会有定时器去执行5次提现(转账)功能。当订单超过72小时(3天)仍处于“转账中/未确认”的状态,对应订单将会进入异常订单列表。并通过站内信或负责人手机短信提醒的形式进行通知。管理员在异常订单列表中能够对此订单进行手动操作。
用户登录后多久失效,需要重新登录?这个其实是很容易被忽略的小问题,需要根据每个产品自身的具体情况来具体分析。在这边只是提一下,在设计功能时如果有特殊需要的话可以单独提出来~
以上就是在商城项目中遇到的一些问题,这些问题可能比较基础,但是都是我在实际情况中遇到的没有考虑全面,或者是在进入开发过程中后仍有改动的点。希望对大家有用~
相关资料:微信小程序支付业务流程图: ;index=3
thinkphp前端显示网络异常THINKPHP作为国内比较出色的PHP框架,近年发展还是比较迅速,目前最新版本已经到TP5.1,安全性能等都有不少提升,使用的程序员也越来越多,所以THINKPHP制作的网站也越来越多,今天,方维网络就来分析THINKPHP网站打不开的原因有哪些?当你的网站打不开时,方便你排查问题!
一、服务器挂了。如果网站打不开的表现是网络连接错误,没有输出任何错误信息,那么很可能就是服务器网络出问题或者服务器死机了。
二、数据库挂了。一般会提示错误信息,如果没有屏蔽错误,会直接显示数据库连接错误。
三、网站空间满了。不管是nginx还是apache,或是THINKPHP本身,都会产生很多日志文件,当硬盘不够大的时候,THINKPHP无法生成缓存文件,导致网站打不开出错。这种问题很简单,就是从服务器删除占用比较大的日志文件或者对服务器进行扩容。
四、apache、nginx或者是IIS挂了,这个可以进服务器查看,可以重启下。
五、网站文件被篡改,一般是网站密码泄露或者网站已经被黑客攻破的情况。这种可以通过FTP软件查看网站文件的修改日期来判断。
六、程序本身有问题,如存在死循环等BUG,这个就需要程序员去调试分析,这种出现概率比较低,因为一般早期就可发现。
七、访问量太大,服务器无法应付,这种情况应该升级服务器,或者 使用负载均衡分服务器部署,当然也可以使用一些缓存来缓解。
八、服务器网络和本地网络出现故障,如在国内访问国外服务器的网站,速度非常慢导致网站打不开。
九、服务器放在国外,然后服务器IP被国内屏蔽导致打不开,这种只能换服务器了。
THINKPHP网站打不开的原因很多,但最常见的就是:硬盘已满或者服务器出故障。
深圳方维网络专注于网站定制,定制各类品牌官网、商城、平台、旅游网站和小程序等,欢迎有需求客户咨询。
关于PHP商城常见问题的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于PHP商城常见问题 php商城常见问题及答案的详细内容...