之前博友
我发现 $_GET["p"]
是个很又简单方便的代码用它就能实现我的想法了。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" cOntent="width=device-width, initial-scale=1"> <title>叶开楗个人博客</title> </head> <body> <header> <h1>我的个人博客</h1> <aside>这是描述.</aside> </header> <hr> <?php if (!isset($_GET["p"])) { // 判断是否为空 空为首页 $hostdir= "./p"; //获取本文件目录的文件夹地址 $filesnames = scandir($hostdir); //获取也就是扫描文件夹内的文件及文件夹名存入数组 $filesnames //print_r ($filesnames); foreach ($filesnames as $name) { // 循环输出? 百度的代码 //echo $name; $post=substr(strrchr($name, '.'), 1); // 不知道干嘛的 if($post=='txt'){ // 判断是否 txt 格式 $name = str_replace(".txt","",$name); // 去掉.txt $url="http://localhost/?p=".$name; // 组合成 url $aurl= "<a href=\"".$url."\">".$name."</a>"; // 输出 a 链接 echo $aurl . "<br/>"; } } }else{ // 输出文章页面 $text = file_get_contents("./p/" . $_GET["p"] . ".txt"); echo "<p>" . $text . "</p>"; } ?> <hr> <h2>Epilogue</h2> <p>@2021 叶开楗所有。</p> </body> </html>
目前就是一个尝试,至于其他如时间之类的有思路还没尝试,就是直接获取创建 txt 的时间就好了,目前先这样吧。
![]() | 1 6IbA2bj5ip3tK49j 2021-12-04 16:47:11 +08:00 ![]() 赶紧部署了把地址给贴上来 |
![]() | 2 xiaomimei 2021-12-04 17:23:12 +08:00 via Android Path Traversal 。。。 |
3 xiamuguizhi OP @xiaomimei 对的 需要限制 ```php if (isset($_GET["p"])) { if (!is_numeric($_GET["p"])) { echo("Invalid post"); die(); } } ``` |
4 xiamuguizhi OP |
![]() | 5 eason1874 2021-12-04 19:32:12 +08:00 $filesnames = scandir($hstdir); // 扫描目录下的文件路径存到 $filesnames foreach ($filesnames as $name) // 循环文件路径,逐条处理 $post = substr(strrchr($name, '.'), 1); // 截取最后一个 . 号以及后面的字符串,然后去掉第一个字符,也就是去掉 . 号,其实就是获取文件扩展名后缀 第一个 if 里面其实可以这样写,只返回目录下的 *.txt 并且通过 basename 去掉 .txt 后缀就可以了 ``` if ( ! isset($_GET["p"]) ) { $filesnames = glob('./p/*.txt'); foreach ($filesnames as $name) { $name = basename($name, '.txt'); echo '<a href="http://localhost/?p=' . urlencode($name) . '">' . $name . '</a><br/>'; } } ``` |
![]() | 6 kaiki 2021-12-04 22:39:30 +08:00 如果提交的文件名不存在呢,如果文件名带#号呢? |
7 auh 2021-12-05 17:11:31 +08:00 硬核。我感觉,其他复杂的功能不要再尝试了。因为要从审美情趣上才能战胜对方。如果走别人的路,自己将无路可走。 |
8 xiamuguizhi OP @eason1874 感谢 大佬 我想多几天 换种办法 我谷歌到了 好的代码了 等我来 demo 后在艾特你 哈哈。 |
9 xiamuguizhi OP @auh 我目前用的这个程序 100 行代码的博客 https://github.com/petabyt/tinyblog |
10 xiamuguizhi OP @kaiki 不存在就输出 404 我估计也分离一下 到时候 用 txt 存储 一些信息和标题 后台处理 .md 存储文章 转 html 输出。 |
11 xiamuguizhi OP @auh 忘记回复了。已经成品一年多了。DEMOl:https://qq.md/ |
12 xiamuguizhi OP @eason1874 忘记回复了。已经成品一年多了。DEMOl:https://qq.md/ |
13 xiamuguizhi OP @xgfan 忘记回复了。已经成品一年多了。DEMOl:https://qq.md/ |