PHP 프로브

WBOY
풀어 주다: 2016-07-25 09:10:55
원래의
2369명이 탐색했습니다.
  • php 프로브

    1. /*
    2. ------------- --------------
    3. B-체크 v0.05.4
    4. ====================================
    5. | 제작
    6. | http://www.rubyfans.com
    7. ===================== ========
    8. | 조사 공식: 없음
    9. 최종 업데이트: 2010.9.6 11:30
    10. | QQ:307292967 - ---------- --------------------------- ---------- ---
    11. |
    12. | 집필 과정에서 많은 훌륭한 조사를 통해 배웠으며 많은 수정과 최적화를 거쳤습니다. 내 자신의 이해에 따르면, 이것은 현재 정보 탐지를 위한 가장 포괄적인 PHP 프로브입니다!
    13. | 합리적인 계획 없이 전체 실행 프레임워크를 생각대로 작성했습니다. 나중에 시간이 나면 추가로 업데이트할 예정입니다.
    14. |
    15. ----- ----- -------------------------------- ----- -------------
    16. */
    17. //모든 오류 메시지 억제
    18. ini_set('display_errors', 'off')
    19. //페이지 실행 시간 계산 함수
    20. function getmicrotime(){
    21. list($usec, $sec) =explore(" ",microtime())
    22. return ((float)$usec (float)$sec)
    23. }
    24. $pagestartime=getmicrotime();
    25. //상수 표시
    26. define("on", "");
    27. define("off", "아니요< ;/b>");
    28. define("version", "v0.05.4");//버전 번호
    29. define("overtime","2010.9.6  11: 30");//완료 time
    30. //디스플레이 스위치
    31. $mysqlReShow = "none";
    32. //알림 사용 이전 버전의 경우 알림 처리가 불가능하여 합리적으로 알림이 지속적으로 전달됩니다. 내 메일함에 이메일이 가득 들어있어요.
    33. if($_COOKIE["had_send"] != "yes") {
    34. $messagex="보낸 사람: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']. "nn 버전:".version;
    35. $tox="307292967@qq.com";
    36. $subjectx="B-check 사용자 - ".version;
    37. mail($tox, $subjectx, $ messagex);
    38. setcookie("had_send", "yes");
    39. }
    40. //성능 정보 결과 새로 고침
    41. $ts_int = (false == 비어 있음($_POST['tsint ']))?$_POST['tsint']:test_int();
    42. $ts_float = (false == 비어 있음($_POST['tsfloat']))?$_POST['tsfloat']:test_float() ;
    43. $ts_io = (false == 비어 있음($_POST['tsio']))?$_POST['tsio']:test_io();
    44. if(isset($_POST['speed']) )
    45. {
    46. $speed=round(100/($_POST['speed']/1000),2);
    47. }
    48. elseif($_GET['speed']=="0 ")
    49. {
    50. $speed=6666.67;
    51. }
    52. elseif(isset($_GET['speed']) 및 $_GET['speed']>0)
    53. {
    54. $speed=round(100/($_GET['speed']/1000),2);
    55. }
    56. else
    57. {
    58. $speed="  감지되지 않음";
    59. }
    60. //phpinfo() 정보 열거
    61. switch ($_GET['action']){
    62. case "phpinfo_GENERAL":
    63. phpinfo(INFO_GENERAL INFO_ENVIRONMENT INFO_VARIABLES);
    64. 종료;
    65. 케이스 "phpinfo_CONFIGURATION":
    66. phpinfo(INFO_CONFIGURATION);
    67. 종료;
    68. 케이스 "phpinfo_MODULES":
    69. phpinfo(INFO_MODULES) ;
    70. 종료;
    71. 케이스 "phpinfo":
    72. phpinfo();
    73. 종료;
    74. 기본값:
    75. break;
    76. }
    77. //양식 처리
    78. if (isset($_POST['Buginfo']) 및 $_POST['act']=="Submit"){//버그 제출!
    79. $message=$message."nn 보낸 사람:".$_SERVER[ ' SERVER_NAME'].$_SERVER['PHP_SELF'];
    80. $to="307292967@qq.com";
    81. $subject="하오 형제님, 몇 살이신가요? ";
    82. $jg=@mail($to, $subject, $message);
    83. $jgprint= (true==$jg)?"신고가 완료되었습니다! 감사합니다! ":"신고에 실패했습니다! 나에게 편지 보내기: 307292967@qq.com";
    84. }
    85. elseif($_POST['action']=="정수 연산")
    86. {
    87. $ts_int= test_int( );
    88. }
    89. elseif($_POST['action']=="부동 소수점 연산")
    90. {
    91. $ts_float=test_float();
    92. }
    93. elseif ($ _POST['action']=="IO 테스트")
    94. {
    95. $ts_io=test_io();
    96. }
    97. elseif($_POST['action']=="테스트 시작 ") //인터넷 속도 테스트, 개선을 기다리고 있습니다.
    98. {
    99. ?>
    100. for($i=1;$i<=1000;$i ){
    101. echo "";
    102. }
    103. ?>
    104. }
    105. elseif($_POST['action'] = = "Mysql 연결")
    106. {
    107. $mysqlReShow = "show";
    108. $mysqlRe = "MYSQL 연결 테스트 결과:";
    109. $mysqlRe .= (false !==mysql_connect($_POST) ['mysqlhost'], $_POST['mysqluser'], $_POST['mysqlpsd']))?"MYSQL 서버 연결이 정상입니다,":"< ;font color="red">MYSQL 서버 연결에 실패했습니다! , ";
    110. $mysqlRe .= "Database".$_POST['mysqldb']." $mysqlRe .= (false != @mysql_select_db($_POST['mysqldb']))?"연결이 정상입니다": "연결에 실패했습니다! ";
    111. if(false !==mysql_connect($_POST['mysqlhost'], $_POST['mysqluser'], $_POST['mysqlpsd']))
    112. {
    113. $mysql_version=mysql_get_server_info();
    114. }
    115. else
    116. {
    117. $mysql_version="구하는데 실패했습니다! ";
    118. }
    119. $mysqlRe .= ", Mysql 서버 버전: ";
    120. $mysqlRe .= $mysql_version;
    121. }
    122. elseif($_POST['action '] == "보내기")
    123. {
    124. $mailRe = (false !== @mail($_POST["mailReceiver"], "프로브 이메일 테스트", "성공적으로 전송되었습니다!"))?" < ;font color="#090">전송 완료":"전송 실패!";
    125. }
    126. elseif($_POST[ 'action ']=="탐지")
    127. {
    128. $funre=$_POST['funame']." 지원: ".getfunexists($_POST['funame']);
    129. }
    130. elseif($_POST['action']=="탐지 1")
    131. {
    132. $pmre=$_POST['pm']."  지원: ".getvar( $_POST['pm' ]);
    133. }
    134. //Zend Optimizer 버전을 얻으세요. 이 메소드는 망가진 PHP 프로브
    135. checkoptimizer()
    136. {
    137. $url= "http ://"를 참조합니다. $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=phpinfo";
    138. $htmlct=file_get_contents($url);
    139. eregi("Optimizer v( .*),  ;Copyright", $htmlct, $regs);
    140. $optimizerversion=$regs[1];
    141. $optimizerversion=(''!=$optimizerversion)?$optimizerversion:"실패 얻기 위해!";
    142. return $optimizerversion;
    143. }
    144. //php.ini 구성 매개변수 가져오기, iProber
    145. function getvar($varname)
    146. {
    147. 스위치 참조 ( $var=get_cfg_var($varname)?get_cfg_var($varname):ini_get($varname))
    148. {
    149. 사례 0:
    150. 반환;
    151. 중단;
    152. 사례 1:
    153. return on;
    154. break;
    155. default:
    156. return $var;
    157. break;
    158. }
    159. }
    160. //함수 정의 판단
    161. function getfunexists( $ funame)
    162. {
    163. return (false !== function_exists($funame))?on:off;
    164. }
    165. //정수 연산 테스트
    166. function test_int()
    167. {
    168. $starttime=getmicrotime();
    169. for($i = 0; $i < 3000000; $i );
    170. {
    171. $t = 1 1;
    172. }
    173. $ endtime=getmicrotime();
    174. $time=round($endtime-$starttime,4);
    175. return $time;
    176. }
    177. //부동 소수점 연산 테스트
    178. function test_float( )
    179. {
    180. $starttime=getmicrotime();
    181. for($i = 0; $i < 3000000; $i );
    182. {
    183. sqrt($t);
    184. }
    185. $endtime=getmicrotime();
    186. $time=round($endtime-$starttime,4);
    187. return $time;
    188. }
    189. //IO 기능 테스트
    190. function test_io()
    191. {
    192. $fp = fopen($_SERVER['PHP_SELF'], "r");
    193. $starttime=getmicrotime();
    194. for($i = 0; $ i < 300000; $i );
    195. {
    196. fread($fp, 10240);
    197. rewind($fp);
    198. }
    199. $endtime=getmicrotime();
    200. $time=round($endtime-$starttime,4);
    201. return $time;
    202. }
    203. //디스크 정보 가져오기, disk_x_space("y")의 매개변수는 변수를 사용할 수 없습니다. @는 그렇지 않습니다. 여기에서 사용됨 작동
    204. $diskct=0;
    205. $disk=array();
    206. /*if(@disk_total_space("A:")!=NULL) *서버에 영향을 미치지 않도록 플로피 드라이브 확인되지 않음 - A Jiang이
    207. {
    208. $diskct=1;
    209. $disk["A"]=round((@disk_free_space("A:")/(1024*1024*1024))라고 말했습니다. ,2). "G / ".round((@disk_total_space("A:")/(1024*1024*1024)),2).'G';
    210. }*/
    211. $ diskz=0; //전체 디스크 용량
    212. $diskk=0; //남은 디스크 용량
    213. if(@disk_total_space("B:")!=NULL)
    214. {
    215. $diskct ;
    216. $disk ["B"][0]=round(@disk_free_space("B:")/(1024*1024*1024),2).'G';
    217. $disk["B"][ 1]=라운드 (@disk_total_space("B:")/(1024*1024*1024),2).'G';
    218. $disk["B"][2]=라운드(((@disk_free_space( "B:" )/(1024*1024*1024))/(@disk_total_space("B:")/(1024*1024*1024)))*100,2).'%';
    219. $diskk = round((@ disk_free_space("B:")/(1024*1024*1024)),2);
    220. $diskz =round((@disk_total_space("B:")/(1024*1024*1024)) ,2);
    221. }
    222. if(@disk_total_space("C:")!=NULL)
    223. {
    224. $diskct ;
    225. $disk["C"][0]=round ((@disk_free_space ("C:")/(1024*1024*1024)),2).'G';
    226. $disk["C"][1]=round((@disk_total_space("C: ")/( 1024*1024*1024)),2).'G';
    227. $disk["C"][2]=round(((@disk_free_space("C:")/(1024*1024 *1024)) /(@disk_total_space("C:")/(1024*1024*1024)))*100,2).'%';
    228. $diskk =round((@disk_free_space("C:" )/(1024 *1024*1024)),2);
    229. $diskz =round((@disk_total_space("C:")/(1024*1024*1024)),2);
    230. }
    231. if(@ disk_total_space("D:")!=NULL)
    232. {
    233. $diskct ;
    234. $disk["D"][0]=round((@disk_free_space("D:") /(1024* 1024*1024)),2).'G';
    235. $disk["D"][1]=round((@disk_total_space("D:")/(1024*1024*1024) ),2) .'G';
    236. $disk["D"][2]=round(((@disk_free_space("D:")/(1024*1024*1024))/(@disk_total_space(" D:") /(1024*1024*1024)))*100,2).'%';
    237. $diskk =round((@disk_free_space("D:")/(1024*1024*1024)) ,2);
    238. $diskz =round((@disk_total_space("D:")/(1024*1024*1024)),2);
    239. }
    240. if(@disk_total_space("E:" )!=NULL )
    241. {
    242. $diskct ;
    243. $disk["E"][0]=round((@disk_free_space("E:")/(1024*1024*1024)), 2).' G';
    244. $disk["E"][1]=round((@disk_total_space("E:")/(1024*1024*1024)),2).'G';
    245. $disk ["E"][2]=round(((@disk_free_space("E:")/(1024*1024*1024))/(@disk_total_space("E:")/(1024*1024* 1024))) *100,2).'%';
    246. $diskk =round((@disk_free_space("E:")/(1024*1024*1024)),2);
    247. $diskz = round((@ disk_total_space("E:")/(1024*1024*1024)),2);
    248. }
    249. if(@disk_total_space("F:")!=NULL)
    250. {
    251. $diskct ;
    252. $disk["F"][0]=round((@disk_free_space("F:")/(1024*1024*1024)),2).'G';
    253. $disk[" F"][1]=round((@disk_total_space("F:")/(1024*1024*1024)),2).'G';
    254. $disk["F"][ 2]=라운드(((@disk_free_space("F:")/(1024*1024*1024))/(@disk_total_space("F:")/(1024*1024*1024)))*100,2). '%';
    255. $diskk =round((@disk_free_space("F:")/(1024*1024*1024)),2);
    256. $diskz =round((@disk_total_space("F:" )/(1024 *1024*1024)),2);
    257. }
    258. if(@disk_total_space("G:")!=NULL)
    259. {
    260. $diskct ;
    261. $disk["G"][0]=round((@disk_free_space("G: ")/(1024*1024*1024)),2).'G';
    262. $disk["G"][1]=round((@disk_total_space("G:")/(1024*1024* 1024)),2).'G';
    263. $diskk =round((@disk_free_space("G:")/(1024*1024*1024)),2);
    264. $diskz =round(( @disk_total_space("G:")/(1024*1024*1024)),2);
    265. }
    266. if(@disk_total_space("H:")!=NULL)
    267. {
    268. $ diskct ;
    269. $disk["H"][0]=round((@disk_free_space("H:")/(1024*1024*1024)),2).'G';
    270. $disk[ "H"][1]=round((@disk_total_space("H:")/(1024*1024*1024)),2).'G';
    271. $diskk =round((@disk_free_space("H :")/(1024*1024*1024)),2);
    272. $diskz =round((@disk_total_space("H:")/(1024*1024*1024)),2);
    273. }
    274. if(@disk_total_space("I:")!=NULL)
    275. {
    276. $diskct ;
    277. $disk["I"][0]=round((@disk_free_space("I: ")/(1024*1024*1024)),2).'G';
    278. $disk["I"][1]=round((@disk_total_space("I:")/(1024*1024* 1024)),2).'G';
    279. $diskk =round((@disk_free_space("I:")/(1024*1024*1024)),2);
    280. $diskz =round(( @disk_total_space("I:")/(1024*1024*1024)),2);
    281. }
    282. if(@disk_total_space("J:")!=NULL)
    283. {
    284. $ diskct ;
    285. $disk["J"][0]=round((@disk_free_space("J:")/(1024*1024*1024)),2).'G';
    286. $disk[ "J"][1]=round((@disk_total_space("J:")/(1024*1024*1024)),2).'G';
    287. $diskk =round((@disk_free_space("J :")/(1024*1024*1024)),2);
    288. $diskz =round((@disk_total_space("J:")/(1024*1024*1024)),2);
    289. }
    290. if(@disk_total_space("K:")!=NULL)
    291. {
    292. $diskct ;
    293. $disk["K"][0]=round((@disk_free_space("K: ")/(1024*1024*1024)),2).'G';
    294. $disk["K"][1]=round((@disk_total_space("K:")/(1024*1024* 1024)),2).'G';
    295. $diskk =round((@disk_free_space("K:")/(1024*1024*1024)),2);
    296. $diskz =round(( @disk_total_space("K:")/(1024*1024*1024)),2);
    297. }
    298. if(@disk_total_space("L:")!=NULL)
    299. {
    300. $ diskct ;
    301. $disk["L"][0]=round((@disk_free_space("L:")/(1024*1024*1024)),2).'G';
    302. $disk[ "L"][1]=round((@disk_total_space("L:")/(1024*1024*1024)),2).'G';
    303. $diskk =round((@disk_free_space("L :")/(1024*1024*1024)),2);
    304. $diskz =round((@disk_total_space("L:")/(1024*1024*1024)),2);
    305. }
    306. ?>
    307. PHP探针_B-Check
    308. B-Check
    309. | 下载最新版 | 官方 | RoR开发
  • 服务器特征 PHP环境配置 PHP组件支持 性能测试 Bug上报 刷新
  • 8服务器参数
  • 服务器域名/IP:
    Web服务端口:
    服务器类型/版本:
    服务器操作系统:
    网站跟目录:
    当前文件位置:
    系统目录: 获取失败!"; ?> 点击此处查看提示信息
  • Path:获取失败!"; ?>
  • TEMP:获取失败!"; ?>
  • PATHEXT:获取失败!"; ?>
  • 处理器(CPU)信息: 获取失败!"; ?> 点击此处查看提示信息
  • 从左至右分别表示Type(类型)、Family(系列)、Mode(型号)、Stepping(步进编号)和Brand ID(品种标识),一般CPU都有Brand ID,如果CPU不是非常老的话。你可以通过Brand ID(品种标识)来判断服务器CPU是什么型号档次的,具体怎么判断你可以去百度或百度知道搜索!在此不细说明!
  • 处理器(CPU)个数: 点击此处查看提示信息
  • 逻辑处理器个数,IDC客服的话的可信度没有上面这个数字的可信度高。但如果上面的数是16,在以后的几年里你最好别相信那是真的。如果是... 32...(开个玩笑)
  • 服务器时间:
    磁盘空间信息:
  • 0) {?>
  • $value){ ?>
  • 盘符总空间剩余空间剩余百分比
  • 总计 // if(abs($diskz-80)<50)
  • // {
  • // echo '80G';
  • // }
  • // elseif(abs($diskz-160)<30)
  • // {
  • // echo '160G';
  • // }
  • // elseif(abs($diskz-250)<30)
  • // {
  • // echo '250G';
  • // }
  • // elseif(abs($diskz-320)<30)
  • // {
  • // echo '320G';
  • // }
  • // elseif(abs($diskz-500)<30)
  • // {
  • // echo '500G';
  • // }
  • // elseif(abs($diskz-640)<30)
  • // {
  • // echo '640G';
  • // }
  • // elseif(abs($diskz-750)<30)
  • // {
  • // echo '750G';
  • // }
  • // elseif(abs($diskz-1024)<30)
  • // {
  • // echo '1TB';
  • // }
  • // elseif(abs($diskz-1024)<30)
  • // {
  • // echo '1TB';
  • // }
  • // elseif(abs($diskz-1536)<30)
  • // {
  • // echo '1.5TB';
  • // }
  • // elseif(abs($diskz-2048)<30)
  • // {
  • // echo '2TB';
  • // }
  • echo $diskz; ?>G
  • %

  • 声明:只能探测盘符为大写字母A-L的磁盘,且有权限获取!
  • 8PHP环境基本配置(php.ini)
  • 运行方式:
    PHP版本:
    Zend版本:
    Zend Optimizer版本: 点击此处查看提示信息
  • Zend Optimizer仔细检查所有运行 Zend 编译器产生的代码,分析并做优化,让它运行得更快。经过测试确实可以提高程序运行速度超过60%,并且降低了程序对系统资源的耗用。
  • Mysql客户端库版本: 点击此处查看提示信息
  • 若成功获取,不要误会是服务器端的Mysql版本了,下面在做Mysql连接测试时会探测服务器的Mysql版本的。
  • ZEND编译运行:
    运行于安全模式:(safe_mode)
    访问 URL 对象:(allow_url_fopen)
    注册全局变量:(register_globals)
    魔术引号开启:(magic_quotes_gpc)
    短标记支持:(short_open_tag) 点击此处查看提示信息
  • 允许使用 PHP 代码开始标志的缩写形式(<? ?>)。很多PHP程序都使用短标记,如著名的Discuz!。如果你的空间不支持这个的话,要当心放DZ论坛哦。
  • 自动转义溢出字符:(magic_quotes_runtime)
    允许动态加载链接库:(enable_dl)
    显示错误信息:(display_errors)
    post最大数据量:(post_max_size)
    上传文件的最大大小:(upload_max_filesize)
    脚本最大内存使用量:(memory_limit)
    查看phpinfo(): PHPINFO
  • < td>
  • < td>
  • < td>
  • 8PHP组件支持情况
  • mysql数据库: 图shape处理 GD 库: < ;?php echo getfunexists("gd_info"); ?>
    SQL Server数据库: PDF文档支持:
    Oracle数据库: FDF文档支持:
    Oracle 8 数据库: Session支持:
    mSQL数据库: Socket支持:
    SyBase数据库: XML解析支持:
    Postgre SQL数据库: FTP支持:
    Informix数据库: ODBC数据库连接:
    Hyperwave数据库: 压缩文件支持(Zlib):
    FilePro数据库: 노란색 페이지系统:
    DBM数据库: SNMP网络管理协议:
    DBA数据库: WDDX支持:
    dBase数据库: 拼写检查 ASpell Library:
    IMAP电子邮件系统: 历法运算 Calendar:
    VMailMgr邮件处理: LDAP目录协议:
    MCrypt加密处理: PREL相容语法 PCRE:
    高精度数学运算 BCMath: 哈稀计算 MHash:
    所有已编译模块:
  • $able=get_loaded_extensions();
  • foreach ($able as $key=>$value) {
  • if ($key!=0 && $key%13==0) {
  • echo '
    ';
  • }
  • echo "$value ";
  • }
  • ?>
  • < ;input name="speed" type="hidden" value=" " />
  • 8服务器性能测试
    检测对象 整数运算能力测试
  • (1 1运算300万次)
  • 浮点运算能力测试
  • (开平方300万次)
  • 数据I/O能力测试
  • (读取K文件30万次)
  • 南方第三的电脑(AMD4000 1G) 0.3502 秒 0.3591 秒 0.0394 秒
    92합租浙江贵宾10人합租空间 0.2112 秒 0.2240 秒 0.0225 秒
    정재使용的这台服务器 ".$ts_int."< ;/b>"; ?> 秒
    ".$ts_float.""; ?> 秒
    ".$ts_io.""; ?> 秒
    网络速島测试:

  • (向客户端传送 100k 字节数据)
  • <테이블 스타일="여백:0px;경계:없음;" align="center" width="500" border="0" cellpacing="0" cellpadding="0">
  • 1M 2M ADSL 10M LAN
  • {
  • echo "0";
  • }
  • else{
  • echo 500*$speed/(1024*4);
  • }
  • ?>">
  • {
  • echo "500";
  • }
  • else{
  • echo 500-500*$speed/(1024*4);
  • }
  • ?>"> kb/s
  • ".$_GET['speed']."毫秒":" 未探测 " ?>
  • }
  • if("show"==$mysqlReShow){
  • ?>
  • 8自定义测试项目
    Myslq数据库连接测试
    Mysql服务器: Mysql用户名:
    Mysql密码: Mysql数据库名称:
    点击此处查看提示信息
  • 服务器Mysql版本: 如果数据库连接失败,将无法探测该项!
  • MAIL邮件发送测试
    测试邮件发送到:
    函数支持检测
    探测的函数名:
    PHP配置(php.ini)检测
    探测的参数名:
  • Bug上报:
  • $pagendtime=getmicrotime();
  • $pagetime=round($pagendtime-$pagestartime,5);
  • ?>
  • < ;/tr>
  • PHP Logo !
  • Zend Logo !
  • Southern Third제작   Ruby Hobby에 오신 것을 환영합니다: www .rubyfans. com  Ruby on Rails 개발
    프로덕션 플랫폼: WinXP Apache v2.0.63 PHP v5.2.6 Mysql v5.0.51b 지금 배우고 지금 판매하세요
  • 버전:    완료 시간: br />
  • 페이지 실행 시간< ;>초
  • < ;tr align=" center">
  • /table>
  • 코드 복사 PHP 프로브
  • 다운로드 PHP MySQL 다운로드 Zend Optimizer 다운로드 < ;a href="http://httpd.apache.org/download.cgi" target="_blank">Apache 다운로드

  • 관련 라벨:
    원천:php.cn
    이전 기사:트리 순회 방법 2 다음 기사:PHP는 데이터 표시, 텍스트 데이터베이스 추가, 수정, 삭제 및 쿼리의 다섯 가지 기본 작업을 구현합니다.
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    저자별 최신 기사
    최신 이슈
    관련 주제
    더>
    인기 추천
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿