Rumah >pembangunan bahagian belakang >tutorial php >今天的笔试题
1.在一个订单系统购物中,系统可能会因为网络比较慢,造成客户多次点击提交,有什么好的解决方案。
1.点击后先使按钮不可点,提示:"正在提交...",直到返回结果后再恢复.
2.略
3.没用过..
4. ....这个真没用过
汗 面试不上的节奏
都是比较基础的题,没什么太多可说的。
1. 点击一次提交后 提交按钮置灰(不可点),几秒后恢复(或者相应的回调函数),不仅可以防止重复提交,而且防止由于大量重复提交对服务器的冲击。
4. 递归处理之。需要注意的是如果是linux系统,要避免对. 和.. 目录的重复循环搜索。
没人写第二个,那我就写第二个吧
function maopao($arr){ $len = count($arr); for($i=1; $i<$len; $i++)//最多做n-1趟排序 { $flag = false; //本趟排序开始前,交换标志应为假 for($j=$len-1;$j>=$i;$j--) { if($arr[$j]<$arr[$j-1])//交换记录 {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了 $x=$arr[$j]; $arr[$j]=$arr[$j-1]; $arr[$j-1]=$x; $flag = true;//发生了交换,故将交换标志置为真 } } if(! $flag)//本趟排序未发生交换,提前终止算法 return $arr; }}$shuz = array('2','4','1','8','5');$bb = maopao($shuz);print_r($bb);
适合我的水平,我喜欢。
3.事物处理几个点
首先数据引擎要是innoDB
事物处理就是把一堆sql命令放到一起来执行,所有sql语句都执行成功,那么这次事物就是成功的,就可以提交了
如果有sql命令没有成功,那么这次事物就是失败的,所以可以调用rollback方法把前面的操作全部撤销;
事物处理的过程
首先开启事物
set autocommit=0;
.....
sql
....
if(true)
commit();
else
rollback();
function travelPath(&$fileItem,$path) {
if(file_exists($path)) {
if(is_dir($path)) {
if($handle = opendir($path)) {
foreach ($item as $handle) {
if($item == '.' || $item == '..')
return ;
if(!is_dir($item)) {
$fileItem[] = $item;
return;
}
travelPath($fileItem, $item);
}
}
}
}
}
适合我的水平,我喜欢。
1.点击后先使按钮不可点,提示:"正在提交...",直到返回结果后再恢复.
2.略
3.没用过..
4. ....这个真没用过
汗 面试不上的节奏
人家都说网络慢了,还正在提交。正在提交都不显示。
我觉得用表单令牌。可以阻止重复提交。
我觉得用表单令牌。可以阻止重复提交。
那在漫长的等待过程中给用户传达什么信息呢? 再点没反应? 还真不如我说这个,点了先改成"正在提交中..."然后去提交,收到结果再改回来
php面试都要这样吗?那我还是再学学吧!
我觉得用表单令牌。可以阻止重复提交。
那在漫长的等待过程中给用户传达什么信息呢? 再点没反应? 还真不如我说这个,点了先改成"正在提交中..."然后去提交,收到结果再改回来
我说的是能真在的阻止重复提交,而你的不一定,如果网络不通的话,表单的页面是不会变的,自然也不会改在自在提交。再说,如果你说你用的是JS变的,那我告诉你如果没人把JS去了怎么样,人家可以一直提交对不对?你不要说用户不会这么做,那我告诉你如果是黑客这么做你怎么办?
我觉得用表单令牌。可以阻止重复提交。
那在漫长的等待过程中给用户传达什么信息呢? 再点没反应? 还真不如我说这个,点了先改成"正在提交中..."然后去提交,收到结果再改回来
我说的是能真在的阻止重复提交,而你的不一定,如果网络不通的话,表单的页面是不会变的,自然也不会改在自在提交。再说,如果你说你用的是JS变的,那我告诉你如果没人把JS去了怎么样,人家可以一直提交对不对?你不要说用户不会这么做,那我告诉你如果是黑客这么做你怎么办?
表单令牌是有用的.但是请注意楼主的条件" 网络比较慢造成多次提交",这种情况下,可能表单令牌还没有进行匹配和失效,用户就已经多次点击提交按钮了,所以用JS来控制比较合适.
而且,这两者并不冲突 可以都用.