之前博友
就我让我写一个属于自己的博客程序,我是一直没有忘记掉这件事情,但我小白一个能力有限不会啊就一直耽搁,最近我躺在床上看小说经常有些想法冒出来于是今天终于试了一下搞定了,就百度代码十分钟搞定。
我发现 $_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 1
赶紧部署了把地址给贴上来🐶
|
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($hostdir); // 扫描目录下的文件路径存到 $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/
|