首页
社区
课程
招聘
[原创]从php源码中提取纯C编写的url编解码两函数
发表于: 2012-5-24 23:57 10037

[原创]从php源码中提取纯C编写的url编解码两函数

2012-5-24 23:57
10037
忙里偷闲,实验报告没写,老师一直催。
今晚吃完饭看了一下绿盟杯信息安全与对抗竞赛的最后两真实关题,
搜索php服务器漏洞的时候突然想看一下php源代码,
于是到php官网下载了最新版的源代码,
看着看着晚上6点钟就到了11点了,
时间过得真T M D快呀!桑不起~~~~

   平时使用php时觉得php的urlencode和urldecode这两个函数挺好用,
自己大二的时候用C++设计搜索网页爬虫,根据项目需要解析url的时还要处理url编解码,
因为没用浏览器控件实现爬虫,C++没有这个函数,看了相关ansi规范封装了一个
urlencode和urldecode函数,但在使用的过程中经常发现问题,原因是非所有字符都正常编解
码,网上的方法大体都差不多,没一个标准。

  今晚顺便从php源代码中提取出这两个标准的url编解码(也不能说标准,因为提取的时候还是有
相应地方需要改动的), 算法是纯C写的哦!

函数声明:
char *php_url_encode(char const *in_str, int in_str_len, int *out_str_len);
int php_url_decode(char *in_str, int in_str_len); /* return value: length of decoded string */


使用例子:

/* by:小覃
 */
 
#include <IOSTREAM>
using namespace std;

#include "url.c"
int main()
{
	const char * s = "http://www.qinrihong.com?aaa=111&bbb=222&ccc=333";
	int new_len=0;
	
	/* encode url */
	char *s_en = php_url_encode(s, strlen(s), &new_len);
	cout<< s_en << endl;
	
	/* decode url */
	int len_s = php_url_decode(s_en, new_len);
	cout<< s_en << endl;

	return 0;
}


附件包含了url.c文件,是php中提取的url编解码两函数。
还有一个test.cpp是用于测试函数的例子。



欢迎使用!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
顺便宣传一下,明天下午绿盟实习生招聘全国统一笔试时间,欢迎牛人霸笔。。。
各地区都有相应的考点.......
2012-5-24 23:59
0
雪    币: 351
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
lz 如何霸笔?暴力撒?
2012-5-25 10:20
0
雪    币: 251
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
cout<< s_en << endl;

C++ 吧
2012-5-25 10:33
0
雪    币: 4580
活跃值: (992)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
楼主例子确实是C++
2012-5-25 11:22
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
6
嗯,调用的例子是C++写的, url编解码在文件url.c里面。
2012-5-25 18:48
0
雪    币: 1753
活跃值: (840)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
7
不知重庆有木考点哇·!?
2012-5-25 22:25
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
8
有!
2012-5-26 08:14
0
游客
登录 | 注册 方可回帖
返回
//