Вы можете использовать функции empty () и isset (). Если вы хотите, чтобы он работал с разными файлами, просто измените action='yourphp.php'
на html, который я вам даю, и store the PHP script
на этот файл yourphp.php
. Также вам нужно изменить index.html
на index.php
, чтобы активировать функции PHP.
PHP
<?php
error_reporting(0);
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: yoursite.com';
$to = 'contact@yoursite.com';
$subject = 'Customer Inquiry';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']){
if (!(empty($_POST['name']))) {
if (!(empty($_POST['email']))){
if (!(empty($_POST['message']))){
mail ($to, $subject, $body, $from);
echo '<p>Your message has been sent!</p>';
}else{
echo '<p>Fill your message please.</p>';}
}else {
echo '<p>Fill your email please.</p>';}
}else{
echo '<p>Fill your name please.</p>';}
}else{
echo '<p>Fill the form.</p>';}
?>
HTML
<html>
<form method="post" action="?">
<table>
<tr><td>Name</td><td><input type='text' name='name' id='name'/></td></tr>
<tr><td>Email</td><td><input type='text' name='email' id='email'/></td></tr>
<tr><td>Message</td><td><input type='text' name='message' id='message'/></td></tr>
<tr><td></td><td><input type='submit' name='submit' id='submit'/></td></tr>
</table>
</form>
</html>
С наилучшими пожеланиями!
http.Client
не требует специального способа освобождения «используемых» ресурсов. Когда он становится недоступным, память, используемая им, будет возвращена сборщиком мусора.
http.Client
не хранит информацию о соединении или состоянии. В документации даже указано, что http.Client
следует использовать повторно:
Транспорт клиента обычно имеет внутреннее состояние (кэшированные TCP-соединения), поэтому клиенты следует повторно использовать, а не создавать по мере необходимости. Клиенты безопасны для одновременного использования несколькими goroutines.
blockquote>Если вы создаете свой собственный клиент, используя (например, встраивание)
http.Client
, и выделяете ресурсы, которые должны быть выпущены явно, укажите свой собственныйClose()
на нем и документировать, что любой, кто использует вашу собственную реализацию, должен называтьClose()
, если он больше не нужен.Примечание:
Что вы можете смутить, так это то, что если вы используете
http.Client
для выполнения HTTP-операций (например,Client.Do()
,Client.Get()
,Client.Post()
и т. д.), они возвращаются значение*http.Response
, и этот ответ содержит соединение, состояние и другие ресурсы, которые необходимо освободить, как правило, черезResponse.Body.Close()
. Вывод из документа doc пакетаhttp
:Клиент должен закрыть тело ответа, когда закончил с ним:
blockquote>resp, err := http.Get("http://example.com/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // ...
Он также документирован в
Client.Get()
:Когда err равно nil, resp всегда содержит non-nil resp.Body. Caller должен закрыть resp.Body, когда он будет читать.
blockquote>
resp.Body.Close()
– fzerorubigd 18 April 2016 в 10:08http.Client
, и он не имеет ничего общего сhttp.Client
. Он не освобождает ресурсы, связанные сhttp.Client
, а ресурсы, связанные с соединением. – icza 18 April 2016 в 10:15