Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
7a7fff3a02
41
lib/strings.php
Normal file
41
lib/strings.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
// lib/strings.php
|
||||
// Kleine String-Helper ohne harte Abhängigkeit von mbstring.
|
||||
// Ziel: Längenvalidierung möglichst „zeichenbasiert“ und UTF-8-tauglich.
|
||||
|
||||
/**
|
||||
* Liefert die Länge eines Strings in Zeichen (nicht Bytes), wenn möglich.
|
||||
*
|
||||
* Priorität:
|
||||
* 1) mb_strlen (mbstring)
|
||||
* 2) grapheme_strlen (intl)
|
||||
* 3) UTF-8 Codepoint-Zählung via PCRE
|
||||
* 4) Fallback: strlen (Bytes)
|
||||
*/
|
||||
function str_length(string $s): int
|
||||
{
|
||||
if (function_exists('mb_strlen'))
|
||||
{
|
||||
return (int)mb_strlen($s, 'UTF-8');
|
||||
}
|
||||
|
||||
if (function_exists('grapheme_strlen'))
|
||||
{
|
||||
$len = grapheme_strlen($s);
|
||||
if ($len !== false)
|
||||
{
|
||||
return (int)$len;
|
||||
}
|
||||
}
|
||||
|
||||
// UTF-8 Codepoints zählen (best-effort ohne Extensions)
|
||||
$m = [];
|
||||
$ok = @preg_match_all('/./us', $s, $m);
|
||||
if ($ok !== false)
|
||||
{
|
||||
return (int)$ok;
|
||||
}
|
||||
|
||||
// Letzter Fallback (Bytes)
|
||||
return strlen($s);
|
||||
}
|
||||
@ -7,6 +7,8 @@ error_reporting(E_ALL);
|
||||
|
||||
session_start();
|
||||
|
||||
require_once __DIR__ . '/lib/strings.php';
|
||||
|
||||
// 1) DB-Verbindung (einmal)
|
||||
$servername = "localhost";
|
||||
$port = 3306;
|
||||
@ -64,12 +66,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST')
|
||||
$errors[] = 'Bitte eine gültige E-Mail-Adresse eingeben.';
|
||||
}
|
||||
|
||||
if ($displayName === '' || mb_strlen($displayName) < 3 || mb_strlen($displayName) > 50)
|
||||
if ($displayName === '' || str_length($displayName) < 3 || str_length($displayName) > 50)
|
||||
{
|
||||
$errors[] = 'Bitte einen Benutzernamen mit 3–50 Zeichen eingeben.';
|
||||
}
|
||||
|
||||
if ($pw === '' || mb_strlen($pw) < 8)
|
||||
if ($pw === '' || str_length($pw) < 8)
|
||||
{
|
||||
$errors[] = 'Bitte ein Passwort mit mindestens 8 Zeichen wählen.';
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user