Создание формы на сайте. Где ошибка в коде обработчика?

Статус
Закрыто для дальнейших ответов.

Pavl

Active Member
Регистрация
28.09.2016
Сообщения
43
Добрый день!
Понимаю, что ошибка, где-то рядом, но не понимаю - где именно?
Создал форму. Затем обработчик формы. И, вроде как, обработчик работает, но при ответе обработчика, после строки со словами: Спасибо за отправку вашего сообщения!; "Нажмите, чтобы вернуться на главную страницу", появляется текст с ненужными символами.
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Обратная связь</title>
</head>

<body>
<?php 
if(isset($_POST['name'])) {$name = $_POST['name'];}
if(isset($_POST['email'])) {$email = $_POST['email'];}
if(isset($_POST['mess'])) {$mess = $_POST['mess'];}

$to = "mymail@inbox.ru";
$headers = "Content-type: text/plain; charset=windows-1251";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail($to, $subject, $message, $headers);
if ($send == 'true')
{
echo <b>Спасибо за отправку вашего сообщения!</b>;
"<a href="index.html">Нажмите,</a> чтобы вернуться на главную страницу";
}
else
{
echo <b>"Ошибка. Сообщение не отправлено!"</b>;
}
?>
</body>
</html>
 

miketomlin

Well-Known Member
Регистрация
12.11.2013
Сообщения
101
С кавычками в echo намудрили. Если внутри строки есть дв. кавычки, обрамляйте ее одинарными (апострофами). И тэги тоже нужно включать внутрь строк, иначе получается ламерство высшего порядка.

Код:
// true!=='true'
if ($send)
{
echo '<b>Спасибо за отправку вашего сообщения!</b>
<a href="index.html">Нажмите,</a> чтобы вернуться на главную страницу';
}
else
{
echo '<b>Ошибка. Сообщение не отправлено!</b>';
}
 

Pavl

Active Member
Регистрация
28.09.2016
Сообщения
43
Снова, примерно, то же самое получается.

Вот, код, на данный момент:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Обратная связь</title>
</head>
 <body>
<?php
if(isset($_POST['name'])) {$name = $_POST['name'];}
if(isset($_POST['email'])) {$email = $_POST['email'];}
if(isset($_POST['mess'])) {$mess = $_POST['mess'];}


$to = "mymail@inbox.ru";
$headers = "Content-type: text/plain; charset=windows-1251";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail($to, $subject, $message, $headers);
if ($send)
{
echo '<b>Спасибо за отправку вашего сообщения!</b>
<a href="index.html">Нажмите,</a> чтобы вернуться на главную страницу';
}
else
{
echo '<b>Ошибка. Сообщение не отправлено!</b>';
}
?>
</body>
</html>
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
После нажатия у тебя открывается index.html.
Смотри чего в нём лежит.
 

Volly

Well-Known Member
Регистрация
21.03.2012
Сообщения
831
Вы постеснялись уточнить, что это: "появляется текст с ненужными символами", поэтому пишу наугад.

Сервер должен работать, например Апачи.
Php должен быть подключен к серверу.
Файл должен лежать в папке, известной серверу.
Если ваш файл имеет расширение html, то сервер должен быть настроен на работу php в html-файлах.
Запускать файл надо по сетевому адресу типа http://address, а не через Проводник двойным кликом в папке.
Если в заголовке написано meta http-equiv="Content-Type" content="text/html; charset=windows-1251, то файл надо сохранять в ANSI и сервер должен посылать свой заголовок в этой же кодировке или не посылать его совсем.

Теперь по коду.
Если этот файл открывается после отправки формы - это одно, а если сам по себе, то переменные $name, $email и $mess не определены и php может ругаться. Лучше писать примерно так:
if(isset($_POST['name'])) $name = $_POST['name']; else $name = ''; (две одинарные кавычки).
 

Pavl

Active Member
Регистрация
28.09.2016
Сообщения
43
Volly, я создаю сайт на локальном сервере Денвер с помощью AdobeDreamweamver CS4.

Когда открываю страницу сайта index.html, то в адресной строке браузера появляется путь: file:///Z:/home/localhost/www/urok5/index.html

А обработчик формы: file:///Z:/home/localhost/www/urok5/mail.php

Понимаю, что, возможно, неправильно, открываются страницы сайта. Вы пишите, что нужно запускать файл по сетевому адресу типа http://address/, а не через Проводник.

Но, я забыл, как открыть файл по сетевому адресу. По-просту, забыл адрес сайта! Как теперь его правильно открыть?
 

miketomlin

Well-Known Member
Регистрация
12.11.2013
Сообщения
101
Бздец.



Pavl сказал(а):
я создаю сайт на локальном сервере Денвер
Палеонтолог что ли? По логике открывать, видимо, нужно по ссылке хттп://localhost/urok5/index.html, хотя как на самом деле в этом реликте все устроено, копайте сами.
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
miketomlin сказал(а):
нужно по ссылке хттп://localhost/urok5/index.html, хотя как на самом деле в этом реликте все устроено, копайте сами.
При запуске он создаёт домен локальный по имени папки
хттп://urok5/index.html
 

Volly

Well-Known Member
Регистрация
21.03.2012
Сообщения
831
Pavl, вот это file:///Z:/home/localhost/www/urok5/index.html как раз и есть попытка открыть файл в файловой системе операционки минуя сервер и всякие прибамбасы типа php, perl и др., а надо подключаться, как написал выше BaNru, по протоколу http://
Для этого:
- проводником откройте диск Z:, если запущен Денвер, или откройте папку, в которую установили Денвер;
- там найдите папку home и откройте её;
- в папке home создайте папку urok5 (это и будет имя сайта), а в папке urok5 создайте папку www;
- в папку www положите файлы index.html и mail.php;
- запустите Денвер, а если он был запущен, то обязательно перезапустите;
- откройте браузер и в его адресной строке наберите http://urok5.

В зависимости от настроек браузера и Денвера будут работать вариации адреса:
http://urok5/
http://urok5/index.html
http://www.urok5/
http://www.urok5/index.html
 
Статус
Закрыто для дальнейших ответов.
Верх Низ