2015-06-08 3 views
1

У меня есть следующий вид:PHP форма проверки: Где хлопнуть код

<!doctype html><html><head><link href="css/home.css" rel="stylesheet" type="text/css"></head><body><form> 
     <?php 
      if (isset($_REQUEST['email']))   
      { 
       $email = $_REQUEST['email'] ; 
       $subject = "Email submission" ; 
       $message = "Message body here" ; 
       mail("[email protected]", $subject, 
        $message, "From:" . $email); 
        header('Location: /thanks.html'); 
      }  
     else 
     { 
      echo "<form method='post' action='index.php'> 
      Email: <br><input name='email' type='text'><br><br> 
      <input type='submit'> 
      </form>"; 
     } 
    ?> 
    </form></body></html> 

Это прекрасно работает, но в последнее время представления с пустыми полями электронной почты начали приходить через. Я пытался получить поле электронной почты проверенную с 8 или более символов с этим фрагментом до формы разрешено быть представлены:

if (strlen($input) < 8){ echo "Please enter a valid email";} 

Независимо от того, где я поставил код, страница возвращает внутреннюю ошибку 500 при загрузке и ничего не отображается. Я уверен, что есть что-то элементарное, что я делаю неправильно, и, возможно, я слишком долго смотрел на экран, но если кто-то может вести меня о том, как заставить его функционировать так, как должно быть, это было бы здорово.

+1

'$ input' не определен, скорее всего вы захотите проверить' $ _POST ['email] 'вместо этого. –

+0

Вы знаете, что вы можете подтвердить электронное письмо с помощью: '! Filter_var ($ email, FILTER_VALIDATE_EMAIL)'? И вы также можете поместить оператор if из функции if (mail()), чтобы проверить, не было ли она отправлено. – SuperDJ

+0

Я бы просто добавил, что лучше всего разместить PHP-код в отдельном файле и потребовать его если есть запрос на отправку –

ответ

0

Краткий ответ: Вы пытаетесь получить доступ к $ input, который не определен из-за вашего кода, упомянутого в вопросе. попробуйте вместо этого:

if (trim($_POST['mail']) == '') {return "Sorry, input mail is blank"; } 

Сильного решение:

Во всяком случае, даже если вы используете такие валидации, вы все равно получите спам-сообщения или представление. Вам нужно внедрить код captcha и использовать токен сеанса, чтобы человек опубликовал вашу форму, что может быть не проблема сейчас, но темная пещера в будущем.

+0

Вы хотите сказать if (trim ($ _ POST ['email']) == '')? Если да, то где этот фрагмент будет помещен в самый верхний блок кода, который я вставил? – gerendasi

Смежные вопросы