Webbserverprogrammering 1

Show sourcecode

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

Webbsrvprg/exercises/php_formulär/

php_formulär_1.php
php_formulär_2.php
php_formulär_3.php
php_formulär_4.php
php_formulär_5.php
php_formulär_6.php

php_formulär_5.php

85 lines UTF-8 Windows (CRLF)
<?php
// php_formulär_5.php
// Byt ut mot din e-postadress
$recipient 'your@example.com';

function 
h($s) { return htmlspecialchars($s ?? ''ENT_QUOTES ENT_SUBSTITUTE'UTF-8'); }

if (
$_SERVER['REQUEST_METHOD'] === 'POST') {
    
$name    trim($_POST['name'] ?? '');
    
$email   trim($_POST['email'] ?? '');
    
$message trim($_POST['message'] ?? '');

    
// Enkel validering
    
$errors = [];
    if (
$name === ''$errors[] = 'Namn saknas.';
    if (
$email === '' || !filter_var($emailFILTER_VALIDATE_EMAIL)) $errors[] = 'Ogiltig e-post.';
    if (
$message === ''$errors[] = 'Meddelande saknas.';

    if (empty(
$errors)) {
        
// Det som skrivs ut
        
$outputHtml  '<h2>Tack för ditt meddelande</h2>';
        
$outputHtml .= '<p><strong>Namn:</strong> ' h($name) . '</p>';
        
$outputHtml .= '<p><strong>E-post:</strong> ' h($email) . '</p>';
        
$outputHtml .= '<p><strong>Meddelande:</strong><br>' nl2br(h($message)) . '</p>';

        echo 
$outputHtml;

        
// För e-post: bygg ett rent textmeddelande
        
$mailSubject 'Nytt formulär: meddelande från ' $name;
        
$mailBody  "Nytt formulärinlämning\n\n";
        
$mailBody .= "Namn: $name\n";
        
$mailBody .= "E-post: $email\n\n";
        
$mailBody .= "Meddelande:\n$message\n";

        
// Sätt From till en lokal adress och Reply-To till användaren (om giltig)
        
$headers "From: noreply@yourdomain.local\r\n";
        if (
filter_var($emailFILTER_VALIDATE_EMAIL)) {
            
$headers .= "Reply-To: $email\r\n";
        }

        
// Skicka e-post
        
$mailOk = @mail($recipient$mailSubject$mailBody$headers);

        if (
$mailOk) {
            echo 
'<p>E-post skickad.</p>';
        } else {
            echo 
'<p>Det gick inte att skicka e-post från servern.</p>';
        }

        
// Avsluta för att inte visa formuläret igen
        
exit;
    } else {
        
// Visa fel
        
echo '<ul style="color:red">';
        foreach (
$errors as $e) {
            echo 
'<li>' h($e) . '</li>';
        }
        echo 
'</ul>';
    }
}
?>
<!doctype html>
<html lang="sv">
<head>
<meta charset="utf-8">
<title>Formulär — skicka och mejla</title>
</head>
<body>
<form method="post" action="" accept-charset="utf-8">
    <label>Namn:<br>
        <input type="text" name="name" value="<?php echo h($_POST['name'] ?? ''); ?>">
    </label>
    <br><br>
    <label>E-post:<br>
        <input type="email" name="email" value="<?php echo h($_POST['email'] ?? ''); ?>">
    </label>
    <br><br>
    <label>Meddelande:<br>
        <textarea name="message" rows="6" cols="40"><?php echo h($_POST['message'] ?? ''); ?></textarea>
    </label>
    <br><br>
    <button type="submit">Skicka</button>
</form>
</body>
</html>