pub / rememori

Simple file-based bookmarking and notes application
git clone https://src.jayvii.de/pub/rememori.git
Home | Log | Files | Exports | Refs | README | RSS

commit b68930018dc494edfc2a9d9f383c5a9ecb608106
parent 4c206df6d168ea30cc7db9c9d5517263e35ebbf6
Author: JayVii <jayvii[AT]posteo[DOT]de>
Date:   Sun, 27 Oct 2024 00:22:41 +0200

fix: cleanup filenames properly

Diffstat:
Mlib/helpers.php | 36+++++++++++++++++++++++++++---------
Mlib/list.php | 6+++---
Mlib/search.php | 6+++---
3 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/lib/helpers.php b/lib/helpers.php @@ -19,13 +19,34 @@ function gather_get(string $key) { } function validate_input_string(string $in) { - /* Only allows alphanumeric characters and any of "-_. " */ - $out = preg_replace( - "/[^A-Za-z0-9äöüßÄÖÜß\-\_\.\s\;\,\=\@\#]/", - "_", + /* Replace umlauts and similar */ + $out = str_replace( + array( + "ä","ö","ü","ß", "Ä", "Ö", "Ü", + "é", "à", "è", "ù", "ç", "â", "ê", "î", "ô", "û", "ë", "ï", "ü", + "É", "À", "È", "Ù", "Ç", "Â", "Ê", "Î", "Ô", "Û", "Ë", "Ï", "Ü" + ), + array( + "ae", "oe", "ue", "ss", "Ae", "Oe", "Ue", + "e", "a", "e", "u", "c", "a", "e", "i", "o", "u", "e", "i", "u", + "E", "A", "E", "U", "C", "A", "E", "I", "O", "U", "E", "I", "U" + ), $in ); - return $out; + /* Only allows certain characters for parsing reasons */ + $out = preg_replace( + "/[^a-z0-9\-\_\.\s\:\,\;]/i", + " ", + $out + ); + /* Remove multi-spaces */ + $out = preg_replace( + "/\s+/", + " ", + $out + ); + /* return trimmed string */ + return trim($out); } function sort_by_time(array $a, array $b) { @@ -138,11 +159,8 @@ function page_title( } } - /* decode html entities */ - $title = html_entity_decode($title); - /* return title */ - return $title; + return htmlspecialchars_decode(html_entity_decode($title)); } function generate_filename(string $content) { diff --git a/lib/list.php b/lib/list.php @@ -27,11 +27,11 @@ function list_notes( if ($filename["link"] !== false) { ?> <a href="<?php echo $filename["link"]; ?>" target="_blank"> - <strong><?php echo htmlentities($filename["name"]); ?></strong> + <strong><?php echo $filename["name"]; ?></strong> </a><br> <?php } else { ?> - <strong><?php echo htmlentities($filename["name"]); ?></strong><br> + <strong><?php echo $filename["name"]; ?></strong><br> <?php } ?> <!-- date marker --> @@ -59,7 +59,7 @@ function list_notes( <input type="submit" class="likeanchor" - value="<?php echo htmlentities($filename["category"]); ?>" + value="<?php echo $filename["category"]; ?>" > </form> diff --git a/lib/search.php b/lib/search.php @@ -85,11 +85,11 @@ function search_notes( if ($filename["link"] !== false) { ?> <a href="<?php echo $filename["link"]; ?>" target="_blank"> - <strong><?php echo htmlentities($filename["name"]); ?></strong> + <strong><?php echo $filename["name"]; ?></strong> </a><br> <?php } else { ?> - <strong><?php echo htmlentities($filename["name"]); ?></strong><br> + <strong><?php echo $filename["name"]; ?></strong><br> <?php } ?> <!-- matches marker --> @@ -125,7 +125,7 @@ function search_notes( <input type="submit" class="likeanchor" - value="<?php echo htmlentities($filename["category"]); ?>" + value="<?php echo $filename["category"]; ?>" > </form>