Преобразовать поле WebsiteField в поле электронной почты

#php #email

#php #Адрес электронной почты

Вопрос:

Пытаюсь преобразовать эту страницу .php (которая работает) с вводом веб-сайта во ввод электронной почты

Я изменил все элементы websiteField на EmailField, включая регулярное выражение электронной почты, но оно возвращает сообщение об ошибке с сервера. 500 — Внутренняя ошибка сервера. Существует проблема с ресурсом, который вы ищете, и он не может быть отображен.

     <?php

    require "config.php";
    require "connect.php";

    if(isset($_POST['submitform']) amp;amp; isset($_POST['txn_id']))
    {
    $_POST['nameField'] = esc($_POST['nameField']);
    $_POST['websiteField'] =  esc($_POST['websiteField']);
    $_POST['messageField'] = esc($_POST['messageField']);

    $error = array();

    if(mb_strlen($_POST['nameField'],"utf-8")<2)
    {
        $error[] = 'Please fill in a valid name.';
    }

    if(mb_strlen($_POST['messageField'],"utf-8")<2)
    {
        $error[] = 'Please fill in a longer message.';
    }

    if(!validateURL($_POST['websiteField']))
    {
        $error[] = 'The URL you entered is invalid.';
    }

    $errorString = '';
    if(count($error))
    {
        $errorString = join('<br />',$error);
    }
    else
    {
        mysql_query("   INSERT INTO dc_comments (transaction_id, name, url, message)
                        VALUES (
                            '".esc($_POST['txn_id'])."',
                            '".$_POST['nameField']."',
                            '".$_POST['websiteField']."',
                            '".$_POST['messageField']."'
                        )");

        if(mysql_affected_rows($link)==1)
        {
            $messageString = '<a href="donate.php">You were added to our donor list! amp;raquo;</a>';
        }
    }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Thank you!</title>

<link rel="stylesheet" type="text/css" href="styles.css" />

</head>

<body class="thankyouPage">

<div id="main">
    <h1>Thank you!</h1>
    <h2>Add Yourself to our Donor List. </h2>

    <div class="lightSection">
        <form action="" method="post">
            <div class="field">
                <label for="nameField">Name</label>
                <input type="text" id="nameField" name="nameField" />
            </div>

            <div class="field">
                <label for="websiteField">Web Site</label>
                <input type="text" id="websiteField" name="websiteField" />
            </div>

            <div class="field">
                <label for="messageField">Message</label>
                <textarea name="messageField" id="messageField"></textarea>
            </div>

            <div class="button">
                <input type="submit" value="Submit" />
                <input type="hidden" name="submitform" value="1" />
                <input type="hidden" name="txn_id" value="<?php echo $_POST['txn_id']?>" />
            </div>
        </form>

        <?php
        if($errorString)
        {
            echo '<p class="error">'.$errorString.'</p>';
        }
        else if($messageString)
        {
            echo '<p class="success">'.$messageString.'</p>';
        }
        ?>

    </div>


</body>
</html>


<?php

function esc($str)
{
    global $link;

    if(ini_get('magic_quotes_gpc'))
            $str = stripslashes($str);

    return mysql_real_escape_string(htmlspecialchars(strip_tags($str)),$link);
}

function validateURL($str)
{
    return preg_match('/(http|ftp|https)://[w-_] (.[w-_] ) ([w-.,@?^=%amp;amp;:/~ #]*[w-@?^=%amp;amp;/~ #])?/i',$str);
}
?>
 

Это та же страница с изменениями, внесенными для отображения электронной почты вместо веб-сайта

 <?php

require "config.php";
require "connect.php";

if(isset($_POST['submitform']) amp;amp; isset($_POST['txn_id']))
{
    $_POST['nameField'] = esc($_POST['nameField']);
    $_POST['emailField'] =  esc($_POST['emailField']);
    $_POST['messageField'] = esc($_POST['messageField']);

    $error = array();

    if(mb_strlen($_POST['nameField'],"utf-8")<2)
    {
        $error[] = 'Please fill in a valid name.';
    }

    if(mb_strlen($_POST['messageField'],"utf-8")<2)
    {
        $error[] = 'Please fill in a longer message.';
    }

    if(!validate_email($_POST['emailField']))
    {
        $error[] = 'The email you entered may be invalid! Please check same.';
    }

    $errorString = '';
    if(count($error))
    {
        $errorString = join('<br />',$error);
    }
    else
    {
        mysql_query("    INSERT INTO dc_comments (transaction_id, name, email, message)
                        VALUES (
                            '".esc($_POST['txn_id'])."',
                            '".$_POST['nameField']."',
                            '".$_POST['emailField']."',
                            '".$_POST['messageField']."'
                        )");

        if(mysql_affected_rows($link)==1)
        {
            $messageString = '<a href="donate.php">You were added to our donor list! amp;raquo;</a>';
        }
    }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Thank you!</title>

<link rel="stylesheet" type="text/css" href="styles.css" />

</head>

<body class="thankyouPage">

<div id="main">
    <h1>Thank you for your support!</h1>
    <h2>Add your name to the donor list. </h2>

    <div class="lightSection">
        <form action="" method="post">
            <div class="field">
                <label for="nameField">Name</label>
                <input type="text" id="nameField" name="nameField" />
            </div>

            <div class="field">
                <label for="emailField">Email</label>
                <input type="text" id="emailField" name="emailField" />
            </div>

            <div class="field">
                <label for="messageField">Message</label>
                <textarea name="messageField" id="messageField"></textarea>
            </div>

            <div class="button">
                <input type="submit" value="Submit" />
                <input type="hidden" name="submitform" value="1" />
                <input type="hidden" name="txn_id" value="<?php echo $_POST['txn_id']?>" />
            </div>
        </form>

        <?php
        if($errorString)
        {
            echo '<p class="error">'.$errorString.'</p>';
        }
        else if($messageString)
        {
            echo '<p class="success">'.$messageString.'</p>';
        }
        ?>

    </div>


</body>
</html>


<?php

function esc($str)
{
    global $link;

    if(ini_get('magic_quotes_gpc'))
            $str = stripslashes($str);

    return mysql_real_escape_string(htmlspecialchars(strip_tags($str)),$link);
}

function validate_email($str)
{
    return preg_match('.*?@.*?...*', $str);
}
?>
 

Почему электронное письмо не будет работать так, как планировалось, и правильный ли подход?

Я работаю с этим пожертвованием.

Комментарии:

1. Как указано, «ошибка сервера 500». Это звучит как фактическая ошибка хостинга, а не проблема с вашим PHP-кодом. Вы вообще редактировали файл .htaccess?

2. У вас есть доступ, чтобы получить содержимое error_log и поместить сюда сообщение об ошибке?

Ответ №1:

Ваша проблема может быть в вашем регулярном выражении, * является неизвестным модификатором в вашем примере кода. Попробуйте это… Полностью удалите функцию проверки электронной почты. Затем измените

 if(!validate_email($_POST['emailField']))
 

Для

 if (!filter_var($_POST['emailField'], FILTER_VALIDATE_EMAIL))
 

и посмотрите, работает ли это для вас.

Комментарии:

1. Привет, Остин Бест, я полностью заменил функцию проверки, и это сработало с первого раза. Хорошая работа и спасибо. Означает ли это, что я использую некачественное регулярное выражение для проверки электронной почты!