Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

Webbsrvprg/ovningar/php_textstränger/

php_textsträngar_1.php
php_textsträngar_2.php
php_textsträngar_3.php
php_textsträngar_4.php
php_textsträngar_5.php

php_textsträngar_4.php

67 lines UTF-8 Windows (CRLF)
<?php
// Fil: php_textsträngar_4.php
// Enkel form för att kontrollera e-postadress enligt krav:
// - Minst 6 tecken totalt
// - Minst 4 tecken efter '@', varav minst en punkt ('.')
// - Den punkten får inte ligga på de två sista positionerna
// - Endast en '@' tillåts

function validate_email_custom(string $email): array {
    
$email trim($email);
    
$len strlen($email);
    if (
$len 6) {
        return [
false"E-postadressen måste vara minst 6 tecken lång."];
    }

    if (
substr_count($email'@') !== 1) {
        return [
false"E-postadressen måste innehålla exakt en '@'."];
    }

    
$atPos strpos($email'@');
    
// minst 4 tecken efter @
    
$afterCount $len $atPos 1;
    if (
$afterCount 4) {
        return [
false"Det måste vara minst 4 tecken efter '@'."];
    }

    
// minst en punkt efter @
    
$dotPos strpos($email'.'$atPos 1);
    if (
$dotPos === false) {
        return [
false"Det måste finnas minst en punkt ('.') efter '@'."];
    }

    
// punkten får inte vara på de två sista platserna
    
if ($dotPos $len 3) {
        return [
false"Punkten efter '@' får inte vara på de två sista positionerna."];
    }

    return [
true"E-postadressen är giltig enligt reglerna."];
}

$resultMessage "";
if (
$_SERVER['REQUEST_METHOD'] === 'POST') {
    
$email $_POST['email'] ?? '';
    list(
$ok$msg) = validate_email_custom($email);
    
$resultMessage $msg;
}
?>
<!doctype html>
<html lang="sv">
<head>
    <meta charset="utf-8">
    <title>Validera e-post</title>
</head>
<body>
    <h1>Validera e-post enligt uppgift 1 (utökat)</h1>

    <form method="post" action="">
        <label for="email">E-post:</label>
        <input id="email" name="email" type="text" value="<?php echo isset($email) ? htmlspecialchars($email) : ''?>">
        <button type="submit">Kontrollera</button>
    </form>

    <?php if ($resultMessage !== ""): ?>
        <p><?php echo htmlspecialchars($resultMessage); ?></p>
    <?php endif; ?>
</body>
</html>