diff options
Diffstat (limited to 'visitors.php')
| -rw-r--r-- | visitors.php | 25 | 
1 files changed, 20 insertions, 5 deletions
| diff --git a/visitors.php b/visitors.php index 850cefb..b4648ca 100644 --- a/visitors.php +++ b/visitors.php @@ -135,6 +135,12 @@ $config['message_rows'] = 5;  $config['message_cols'] = 60; +// Message length limit: int +// +// Caps the length of the message. + +$config['message_length'] = 2048; +  // Form prompt: string  //  // Text for a header above the form @@ -525,6 +531,15 @@ function cleanup_post() {    }    $_POST['name'] = htmlentities($_POST['name']);    $_POST['message'] = htmlentities($_POST['message']); + +  if (mb_strlen($_POST['name']) > 128) +    return 'Name too long!'; +  if (mb_strlen($_POST['message']) > $config['message_length']) +    return 'Message too long!'; +  if (mb_strlen($_POST['website']) > 2048) +    return 'Website too long!'; +  if (mb_strlen($_POST['email']) > 2048) +    return 'Email too long!';  }  $form_error; @@ -592,20 +607,20 @@ function render_form() {        <div id=submission_error><span><?= $form_error ?></span></div>      <?php endif; ?> -    <label for=name>Name:</label> <input type=text placeholder='Alice P. Hacker' name=name required /><br /> +    <label for=name>Name:</label> <input type=text placeholder='Alice P. Hacker' name=name required maxlength=128 /><br />      <?php if ($config['form_mode'] == 1 || $config['form_mode'] == 2): ?> -    <label for=website>Website (optional):</label> <input type=url placeholder='https://example.com' name=website /><br /> +    <label for=website>Website (optional):</label> <input type=url placeholder='https://example.com' name=website maxlength=2048 /><br />      <?php endif;            if ($config['form_mode'] == 2): ?> -    <label for=email>E-Mail (optional):</label> <input type=email placeholder='ahacker@example.com' name=email /><br /> +    <label for=email>E-Mail (optional):</label> <input type=email placeholder='ahacker@example.com' name=email maxlength=2048 /><br />      <?php endif;            if ($config['form_mode'] == 3): ?> -    <label for=site-or-email>Website or E-Mail (optional):</label> <input type=text pattern='^(?:https?|gopher|gemini):\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$|^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$' placeholder='...' name=site-or-email /><br /> +    <label for=site-or-email>Website or E-Mail (optional):</label> <input type=text pattern='^(?:https?|gopher|gemini):\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$|^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$' placeholder='...' name=site-or-email maxlength=2048 /><br />      <?php endif; ?>      <label for=message>Message:</label><br /> -    <textarea name=message placeholder='Write something...' rows="<?= $config['message_rows'] ?>" cols="<?= $config['message_cols'] ?>" required></textarea><br /> +    <textarea name=message placeholder='Write something...' rows="<?= $config['message_rows'] ?>" cols="<?= $config['message_cols'] ?>" required maxlength=<?= $config['message_length'] ?>></textarea><br />      <?php if ($config['captcha']):              $captcha = $config['captcha_hook'](); | 
