phprefer
A. php 写评论列表
我觉得可以这样做,先备份一下这个数组,然后循环判断这个数组中的每一个子元素,如果该子元素的next字段有值,就把这个子元素作为子节点附加到其next的节点,这样就会形成一个树状结构,其对应的子评论就好找了。可能有些麻烦了,不知道还有没有其它更好的方法。
下面是给你写的生成树的方法:
function list_to_tree($list) {
// 创建Tree
$tree = array();
if(is_array($list)) {
$refer = array();
foreach ($list as $key => $data) {
$refer[$data['id']] =& $list[$key];
}
foreach ($list as $key => $data) {
$parentId = $data['next'];
if (0 == $parentId) {
$tree[$data['id']] =& $list[$key];
}else{
if (isset($refer[$parentId])) {
$parent =& $refer[$parentId];
$parent['_child'][$data['id']] =& $list[$key];
}
}
}
}
return $tree;
}
剩下的取每一个父节点的子节点就比较好取了,希望对你有帮助。
B. php如何实现登陆后返回原页面
访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面
项目需求
访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。
解决思路1:
在跳转到登录页面之前要将当前访问页面的url保存到cookie里面,登录验证授权通过后,从cookie中取出这个url值,跳转到该 url指定的页面。
具体实现
我现在的程序是基于ThinkPHP框架的,我们会有一个父类控制器,下面我就把这个设置cookie的代码加到这个BaseAction里面的_initialize()函数中,这样程序就大大简化工作量了。
代码如下:
Cookie::set('refer', $refer);
登录检测的函数里面我们加入:
代码如下:
$refer = Cookie::get('refer');
现在这个$refer就是我们之前访问的页面,我们可以通过AJAX返回这个参数,然后进行跳转,或者直接使用程序进行跳转,具体要根据你程序的需求了。
解决思路2:
除了存成cookie的形式,相信大家也看到了很多大型网站直接采用GET的形式获得,Drupal的登陆机制就是这样。
这种思路具体是这样的:
在跳转到登录页面前要将访客访问的页面的url作为参数传递过去,登录验证后,授予访问权限之后跳转到该url指定的页面。
比如登录前的url为:openphp.html 当访客访问时,点击无权限,跳转到登录页面的地址就为login.php?url=openphp.html,这样在登录时就可以用GET方式获取该参数 openphp.html,登录验证成功后跳转到openphp.html 这个页面就可以了。
大致上我也就这两种思路了,如果你有更好的思路,真心希望你可以告诉我。
C. php怎么通过refer来禁止外部盗链
应该是reffer,判断reffer是否为本站,如果是,则说明来源本站,可以提供图片,反之,就拒绝
当然,reffer可以伪造,有的时候reffer丢失等会导致判断出错~,所以,并不是一个完美的解决方案
D. PHP中如何发送HTTP请求
看起来你的代码正确,不知道你有什么问题。
这个方法不错,但是最好用一个封装好的类。
比如http_client之类的,网上这样的类挺多了,你可以搜索一下。
当然直接用socket也可以。
E. php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。
这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身id,另一个是它的父级parent_id。
既然要找到它的祖父级,sql语句这样写:
$id = empty($_POST['id'])?'':$_POST['id'];
$parent_id = get_parent_id($id);
$p_p_id = get_parent_id($parent_id);
function get_parent_id($id){
$sql = "select parent_id from ecs_table1 where id=" . $id;
return($GLOBALS['db']->getone($sql ));
}
递归,就是根据现有的id,重复取。
上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数。
不过,现在大部分php网站,都只会有获取父类的函数,想discuz,ecshop等。获取祖父id,就是不断的获取该id的父id。
F. php伪造referer获取header,请大神指教
$out那部分不能这么写
$out="GET$targetHTTP/1.1 Host:$host Referer:$referer Connection:Close ";
开头不能有空行,且每一行必须有换行符分隔
或者用
$out="GET$targetHTTP/1.1 ";
$out.="Host:$host ";
$out.="Referer:$referer ";
$out.="Connection:Close ";
G. php获取url参数程序代码总结
parse_url函数
我们先来了解一下parse_url函数,官方解决
说明
mixed
parse_url
(
string
$url
[,
int
$component
=
-1
]
)
本函数解析一个
URL
并返回一个关联数组,包含在
URL
中出现的各种组成部分。
本函数不是用来验证给定
URL
的合法性的,只是将其分解为下面列出的部分。不完整的
URL
也被接受,
parse_url()
会尝试尽量正确地将其解析。
要解析的
URL。无效字符将使用
_
来替换。
实例
代码如下
$url
=
"http://www.45it.net/welcome/";
$parts
=
parse_url($url);
print_r($parts);
array
(
[scheme]
=>
http
[host]
=>
www.45it.net
[path]
=>
/welcome/
)
也可以自己去写一个算法!如下
代码如下
function
getParams()
{
$url
=
'/index.php?_p=index&_a=show&x=12&y=23';
$refer_url
=
parse_url($url);
$params
=
$refer_url['query'];
$arr
=
array();
if(!empty($params))
{
$paramsArr
=
explode('&',$params);
foreach($paramsArr
as
$k=>$v)
{
$a
=
explode('=',$v);
$arr[$a[0]]
=
$a[1];
}
}
return
$arr;
}
调用方法
代码如下
$arr
=
getParams();
print_r($arr);
结果
结果:
Array
(
[_p]
=>
index
[_a]
=>
show
[x]
=>
12
[y]
=>
23
)
H. php伪造referer,那个大神会高分悬赏!
要伪装必须自己发送request,如果你想用浏览器发送request并且伪装refer,那么你就得破解了浏览器并且找出漏洞(显然这个是不容易的)。
如果自己发送request的话,用curl就可以了
$url="";//要访问的地址
$refer="";//伪造的来源
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_REFERER,$refer);
$r=curl_exec($ch);
curl_close($ch);
I. php一个下载地址防盗的判断 大牛进来看下!
$_SERVER['HTTP_REFERER']可以判断,如果是用户直接访问,那$_SERVER['HTTP_REFERER']的值应该为空。
J. php:如何实现根据不同的refer访问到不同的页面
$_SERVER[HTTP_REFERER]取得来源页地址,然后比较下