Artexoid
12:01:2005, 09:07
Пожалуйста помогите мне!!!!
Например есть форма, в ней поле для ввода и кнопка submit.
Для наглядности:Введите имя: |____________|
|Submit|
Значит мне с помощью PHP обработчика нужно сделать так чтобы при нажатии на кнопку Submit имя введенное в поле отправлялось по e-mail на мой ящик и письмо имело вид:
Имя пользователя:
<Имя которое пользователь ввел на форме>Пожалуйста объесните мне поподробнее как это все сделать?
Artexoid
12:01:2005, 18:03

На этом сайте
http://ru.php.net/function.mail все по английски (((
Нифига не понял, есть что-нибудь другое ?????
Спасибо.
ArtexoidЦитата
Пожалуйста объесните мне поподробнее как это все сделать?
для начала тебе нужен PHP + Apache (IIS) + текстовый редактор + броузер
с этим всё понятно?
Artexoid
12:01:2005, 20:49
Да с этим все понятно !! А дальше ???
ArtexoidЦитата
Например есть форма, в ней поле для ввода и кнопка submit.
Для наглядности:
Введите имя: |____________|
|Submit|
В редакторе создаём такой файл (test.html):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Тест</title>
</head>
<body>
<form method="post" action="test.php">
<P>Введите имя: <INPUT id="Text1" type="text" name="Text1"></P>
<P><INPUT id="Submit1" type="submit" value="Submit" name="Submit1"></P>
</form>
</body>
</html>
Получаем HTML страницу след. содержания.
С этим всё понятно?
????
Спасибо!!!
??? Что дальше делать-то ???
Цитата
и письмо имело вид:
Имя пользователя: <Имя которое пользователь ввел на форме>
В редакторе создаём такой файл (test.php):
<?php
if (isset($_POST["Text1"]) && $_POST["Text1"] != "")
{
echo "Имя пользователя: " . $_POST["Text1"];
}
else
{
echo "Вы не ввели имя пользователя!";
}
?>
И помещаем файлы test.php и test.html в одну папку на сервере. Запускаем Test.html, жмём Submit и смотрим результат - если пользователя ввёл имя -
Имя пользователя: имя, иначе сообщение
Вы не ввели имя пользователя!С этим всё понятно?
Artexoid
12:01:2005, 23:01
????
Ну и это понятно а дальше че ???
Artexoid
12:01:2005, 23:12
????
С этим тоже теперь понятно вот только одна загвоздка !!!((( Я разместил index.htm и sender.php на сервак, а после нажатия на submit открывается страничка и там такая надпись
________________________________________________________________________
Method Not Allowed
The requested method POST is not allowed for the URL /webhome/muitem/hhh/sender.php.
Что это значит, как это исправить и что дальше нужно делать???
Спасибо!
ArtexoidВозможные варианты:
- Плохо настроен Apache на сервере
- Используется прокси сервер не поддерживающий метод POST
- Настройки php (*)
- ...
Попробуй заменит файлы на такие:
test.php
<?php
if (isset($_GET["Text1"]) && $_GET["Text1"] != "")
{
echo "Вы ввели имя: " . $_GET["Text1"];
}
else
{
echo "Вы не ввели имя!";
}
?>
test.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Тест</title>
</head>
<body>
<form method="GET" action="test.php">
<P>Введите имя: <INPUT id="Text1" type="text" name="Text1"></P>
<P><INPUT id="Submit1" type="submit" value="Submit" name="Submit1"></P>
</form>
</body>
</html>
Т.е. везде
POST заменить на
GET.
Artexoid
14:01:2005, 19:47
????
Что нужно дальше делать и как сделать чтобы это все на e-mail отправлялось ???????
Спасибо.
Artexoid
15:01:2005, 17:59
Jkar
Объясни мне по подробнее, что куда сувать в смысле этот mail(), где его ставить надо ?????
Спасибо.
Purpose: send mail
Usage: bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])
Availability: PHP 3, PHP 4 >= 4.0.0
mail() automatically mails the message specified in message to the receiver specified in to. Multiple recipients can be specified by putting a comma between each address in to. Email with attachments and special types of content can be sent using this function. This is accomplished via MIME-encoding - for more information, see
]]>http://www.zend.com/zend/spotlight/sendmimeemailpart1.php]]> or RFC 1896 (Visit
]]>http://www.rfc-editor.org/)]]>.
mail() returns TRUE if the mail is sucessfully sent, FALSE otherwise.
Example 1. Sending mail.
mail("rasmus@lerdorf.on.ca", "My Subject", "Line 1\nLine 2\nLine 3");
Вот перевод, если совсем лениво.
Описание
bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])
mail() автоматически отправляет сообщение message получателю to. Можно специфицировать несколько получателей, разделив запятой адреса в to. С помощью этой функции можно высылать Email с присоединением/attachment и содержимое специальных типов. Это делается через MIME-кодировку.
Могут помочь и следующие RFC-документы: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048 и RFC 2049.
mail() возвращает TRUE, если почта была успешно принята для доставки, FALSE в ином случае.
Предупреждение!
Windows-реализация mail() во многом отличается от Unix-реализации. Во-первых, она не использует локальный экзешник для составления сообщений, а работает лишь по прямым сокетам, что означает, что MTA должен прослушивать сетевой сокет (который может находиться на локальной или удалённой машине). Во-вторых, специальные шапки/headers вроде From:, Cc:, Bcc: и Date: не интерпретируются MTA, а разбираются в PHP.
PHP < 4.3 поддерживал только header-элемент Cc: (и был чувствительным к регистру).
PHP >= 4.3 поддерживает все элементы шапки и нечувствителен к регистру символов.
Пример 1. Отправка почты.
mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");
Если передаётся четвёртый строковой аргумент, эта строка вставляется в конце шапки/header. Обычно это используют для добавления дополнительных шапок. Несколько дополнительных шапок разделяются символами carriage return и newline.
Примечание: вы обязаны использовать \r\n для разделения шапок, хотя некоторые почтовые агенты Unix могут работать с одиночными символами newline (\n).
Пример 2. отправка посты с дополнительными шапками/header.
mail("nobody@example.com", "the subject", $message,
"From: webmaster@$SERVER_NAME\r\n"
."Reply-To: webmaster@$SERVER_NAME\r\n"
."X-Mailer: PHP/" . phpversion());
Параметр additional_parameters можно использовать для передачи дополнительных параметров программе, сконфигурированной для использования при отправке почты установкой конфигурации sendmail_path. Например, это можно применять для установки адреса отправителя при использовании sendmail. Вам может понадобиться добавить пользователя под которым работает ваш web-сервер, в вашу sendmail-конфигурацию для предотвращения добавления шапки 'X-Warning!' к сообщению, когда вы устанавливаете отправителя с использованием этого метода.Пример 3. Отправка почты с дополнительными шапками/headers и установка дополнительного параметра командной строки.
mail("nobody@example.com", "the subject", $message,
"From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVER_NAME");
Примечание: этот пятый параметр был введён в PHP 4.0.5.
Вы можете также использовать простую технику построения строк для создания сложных email-сообщений.Пример 4. Отправка сложной email.
/* получатели */
$to = "Mary <mary@example.com>" . ", " ; //обратите внимание на запятую
$to .= "Kelly <kelly@example.com>";
/* тема\subject */
$subject = "Birthday Reminders for August";
/* сообщение */
$message = '
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
/* Для отправки HTML-почты вы можете установить шапку Content-type. */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
/* дополнительные шапки */
$headers .= "From: Birthday Reminder <birthday@example.com>\r\n";
$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";
/* и теперь отправим из */
mail($to, $subject, $message, $headers);
Примечание: убедитесь, что у вас нет символов newline в to или в subject, иначе почта может не отправиться корректно.
Здравствуйте, мне нужно узнать, как отослать несколько переменных на мой почтовый ящик. Вот код, который представляет собой два поля и кнопку. Только это всё слегка не работает - когда я писал, то понимал, что без чужой помощи не обойтись:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Primer</title>
</head>
<body>
<form method="GET" action= send() >
<input type=text name="fn" value="" size="30" maxlength="30" id="fname">
<input type=text name="ln" value="" size="30" maxlength="30" id="lname">
<input type="submit" name="save" value=" Confirm " checked>
</form>
<script language="PHP" type="text/php">
function send() {
<?php
mail("x3rg1s@yahoo.co.uk", "Variables", fn, ln);
?>
}
</script>
</body>
</html>
<form method="GET" action= "send()" > - в этой строке я пытался заставить его вызывать функцию.
<script language="PHP" type="text/php"> - вот эта бредовая строка должна сообщить html файлу, что начинается php код, да и вся нижеследующая функция предназначена скорее для человека, чем компьютера. Для меня очень нежелательно размещать код в двух файлах, поэтому я и засунул php в html, ведь таким образом поступают с Java.
У меня задача послать html-письмо пользователю, он откроет его на почтовом сервере Yahoo и должен будет вписать данные в поля, после чего нажать кнопочку 'confirm'.
И ещё. Я экспериментировал с примерами, приведенными здесь. Когда я открыл письмо и заполнил поля на своём Yahoo-ящике, после нажатия кнопки, он сказал, что я пытаюсь послать данные. Вот это вылезшее окошко - крайне нежелательно. Можно ли сделать что-нибудь с кодом, чтобы Yahoo молчало?
Andrew Stephanoff
23:06:2005, 07:20
Цитата
<?php
if (isset($_GET["fn"]) && isset($_GET["ln"]))
mail("x3rg1s@yahoo.co.uk", "Variables", fn, ln);
?>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Primer</title>
</head>
<body>
<form method='GET'>
<input type='text' name='fn' size='30' maxlength='30' />
<input type='text' name='ln' size='30' maxlength='30' />
<input type='submit' value='Confirm' />
</form>
</body>
</html>
попробуй так...
Извините, но код не работает. Когда я запускаю файл с диска C и жму ‘Submit’, то строка адреса меняется так:
file:///C:/primer.htm?fn=x3r&ln=g1s
И это всё, что происходит. Если запускать страницу с сайта или с почтового ящика, то же самое - просто добавляется «?fn=x3r&ln=g1s»

Ящик я проверял. Он пустой. Ещё вдобавок форма ничего не делает с русскими символами, но это не проблема, т.к. русский шрифт будет кодироваться в iso-8859-1. В ней русский символ выглядит так: #1079;
И, если интересно, то можно поэкспериментировать с формой
]]>здесь]]>.
Andrew Stephanoff
23:06:2005, 10:21
1) извините, но
расширение файла должно быть
.php, а не .html;
2) с диска С: запускать -- глупо и бесполезно, нужно локально ставить http-server (Apache, IIS, Omni, ...).
P. S. метод можно поменять на POST
Цитата
<?php
if (isset($_POST["fn"]) && isset($_POST["ln"]))
mail("x3rg1s@yahoo.co.uk", "Variables", fn, ln);
?>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Primer</title>
</head>
<body>
<form method='POST'>
<input type='text' name='fn' size='30' maxlength='30' />
<input type='text' name='ln' size='30' maxlength='30' />
<input type='submit' value='Confirm' />
</form>
</body>
</html>
Окей, я заменил метод GET на POST. Файл работает одинаково хорошо и с расширением .php, и с .htm. Теперь он больше не добавляет в конце символом и с виду как работает... но на почтовый ящик ничего не приходит. Я пробовал Yahoo и Rambler.
Кто-нибудь когда-нибудь пробовал, как это работает? По-моему язык какой-то глючный...
Я скачал Apache, но как это установить? Там миллион Readme и ни одного install.
У меня появилась ещё одна идея, раз с старой столько проблем. Может быть просто две эти переменные записать в файл на сервере?
Смотрите, у меня есть сайт с поддержкой ftp. Вот здесь лежит текстовой файл.
Можно попробовать в него всё и засунуть.
Но как? Ведь он только для просмотра! Для этого потребуется работать по ftp с логином и паролём.
Логин, пароль и адрес на файл вот:
]]>ftp://x3rg1sworse:r070390@personal.primorye.ru/txt.txt]]>Вот новые наброски:
<?php
if (isset($_POST["fn"]) && isset($_POST["ln"]))
//Записать в файл: ftp://x3rg1sworse:r070390@personal.primorye.ru/txt.txt
?>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Primer</title>
</head>
<body>
<form method='POST'>
<input type='text' name='fn' size='30' maxlength='30' />
<input type='text' name='ln' size='30' maxlength='30' />
<input type='submit' value='Confirm' />
</form>
</body>
</html>
Andrew Stephanoff
23:06:2005, 13:26
Цитата
<?php
if (isset($_POST["fn"]) && isset($_POST["ln"])) {
mail("x3rg1s@yahoo.co.uk", "Variables", $_POST["fn"], $_POST["ln"]);
echo "<div>your message was send</div>\n";
}
?>
вот теперь все знают твой пароль
Andrew Stephanoff, спасибо. Я поэкспериментировал и заставил это всё работать, но пока всё как-то держится на соплях.
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title> </title>
</head>
<body>
<form method="POST" action="http://aldvin.com.ru/primer3.php">
<P><input type='text' name='fn' size='30' maxlength='30' /></P>
<P><input type='text' name='ln' size='30' maxlength='30' /></P>
<P><input type='submit' value='Confirm' /></P>
</form>
</body>
</html>
<?php
mail("x3rg1s@yahoo.co.uk", "Variables", $_POST["fn"], $_POST["ln"]);
?>
После нажатия 'Confirm' открывается новое окно, которое и посылает переменные. Всё было бы отлично, если бы сейчас у всех не стояли блокираторы всплывающих окон... Мне самому еле удалось отцепить свой встроенный в SP2. Я не знаю есть ли блокиратор кому я посылаю письмо или нет, но не хотелось бы делать всё наудачу. Вот
]]>первая]]> и
]]>вторая]]> части. На сайте новое окно не всплывает, а в письме всплывает. Можно ли что-нибудь сделать? Если нельзя, то какой php-метод закрывает окно? А может это всё переписать на Java? Ведь с Java гарантированно нет никаких проблем.
А раньше php-скрипт не работал, потому что бесплатные сайты, на которых я его размещал, не поддерживали .php, на платном сервере всё OK. Ещё Yahoo не хочет видеть .php-файл как письмо, только .html. Поэтому пришлось хранить php-скрипт на платном сайте - только он один поддерживает.
Сегодня я установил последний Apache. Для неё надо ещё установить mod_perl-2.0-current.tar.tar. Я разархивировал его, а там исходники. Кто-нибудь знает, как построить эту херню?
Andrew Stephanoff
23:06:2005, 17:43
попробуй написать
<form method='POST' action='http://aldvin.com.ru/primer3.php' target='_self'>
это открывает новый файл в текущем окне (должен

)
P. S. у меня все открывается в одном окне...
Цитата
Это открывает новый файл в текущем окне
Не получается. Словно бы я ничего не писал.
Цитата
x3rg1s@yahoo.co.uk
Subject: Variables

//Это случайность или вы просто хакер?
From: "Unprivileged user
"
А есть по языку PHP какие-нибудь справочники с удобным поиском? В любом случае, окно придётся закрывать.
Andrew Stephanoff
24:06:2005, 05:42
можно закрыть на ява-скрипте, но браузер выдаст предупреждение..
<?php
mail("x3rg1s@yahoo.co.uk", "Variables", $_POST["fn"], $_POST["ln"]);
?>
<html>
<body onLoad="javaSript:window.close();">
</body>
</html>
либо можно поставить редирект на другую страницу
<?php
mail("x3rg1s@yahoo.co.uk", "Variables", $_POST["fn"], $_POST["ln"]);
?>
<html>
<head>
<meta http-equiv='Refresh' content='0; url=......' />
</head>
</html>
Окей, Андрей. Спасибо вам. Мы сделали всё, что могли.
Вот последний вариант наших трудов:
<?
$topic="form_name";
$msg = "first name - $fn";
$msg .=" ";
$msg .=" last name - $ln ";
$msg .=" ";
$email="x3rg1s@yahoo.co.uk";
$host = getenv('REMOTE_HOST');
$ip = getenv('REMOTE_ADDR');
mail($email, $ip, $msg,
"From: x3rg1s@yahoo.co.uk
".
"Mime-Version: 1.0
".
"Content-Type: text/plain; charset=koi8-r
".
"Content-Transfer-Encoding: 8bit
".
"Reply-To: <x3rg1s@yahoo.co.uk>
".
"Return-path: <x3rg1s@yahoo.co.uk");
Header("Location: http://www.yahoo.com");
?>
Этот вариант ничем не лучше старого, только он ещё высылает ip.

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title> </title>
</head>
<body>
<form method="POST" action="http://aldvin.com.ru/primer.php">
<P><input type='text' name='fn' size='30' maxlength='30' /></P>
<P><input type='text' name='ln' size='30' maxlength='30' /></P>
<P><input type='submit' value='Confirm' /></P>
</form>
</body>
</html>
А здесь всё как прежде..
Теперь я запостил на
]]>этом]]> форуме тему, в которой попросил переделать наш скрипт в .jsp.