Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите пожалуйста с PHP
Форум программистов > Интернет и сети > Web-программирование > PHP программирование
Artexoid
Пожалуйста помогите мне!!!! unsure.gif
Например есть форма, в ней поле для ввода и кнопка submit.

Для наглядности:
Введите имя: |____________|
|Submit|

Значит мне с помощью PHP обработчика нужно сделать так чтобы при нажатии на кнопку Submit имя введенное в поле отправлялось по e-mail на мой ящик и письмо имело вид:

Имя пользователя: <Имя которое пользователь ввел на форме>

Пожалуйста объесните мне поподробнее как это все сделать?
Король
Artexoid
всё до безобразия просто

смотри

]]>http://ru.php.net/function.mail]]>
Artexoid
ohmy.gif На этом сайте http://ru.php.net/function.mail все по английски (((
Нифига не понял, есть что-нибудь другое ?????
Спасибо.
????
Artexoid
Цитата
Пожалуйста объесните мне поподробнее как это все сделать?

для начала тебе нужен PHP + Apache (IIS) + текстовый редактор + броузер
с этим всё понятно?
Artexoid
Да с этим все понятно !! А дальше ???
????
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 страницу след. содержания.

С этим всё понятно?
Artexoid
Да, а дальше ???
Guest
????
Спасибо!!!
??? Что дальше делать-то ???
????
Цитата
и письмо имело вид:

Имя пользователя: <Имя которое пользователь ввел на форме>


В редакторе создаём такой файл (test.php):
<?php

    if (isset($_POST["Text1"]) && $_POST["Text1"] != "")
    {
 echo "Имя пользователя: " . $_POST["Text1"];
    }
    else
    {
 echo "Вы не ввели имя пользователя!";
    }

?>


И помещаем файлы test.php и test.html в одну папку на сервере. Запускаем Test.html, жмём Submit и смотрим результат - если пользователя ввёл имя - Имя пользователя: имя, иначе сообщение Вы не ввели имя пользователя!

С этим всё понятно?
Artexoid
????
Ну и это понятно а дальше че ???
Artexoid
????
С этим тоже теперь понятно вот только одна загвоздка !!!((( Я разместил 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
????
Что нужно дальше делать и как сделать чтобы это все на e-mail отправлялось ???????
Спасибо.
Jkar
RTFM! smile.gif

mail()
Artexoid
Jkar
Объясни мне по подробнее, что куда сувать в смысле этот mail(), где его ставить надо ?????
Спасибо.
Jkar
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");
GOsha
Вот перевод, если совсем лениво.

Описание
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, иначе почта может не отправиться корректно.
x3Rg1s
Здравствуйте, мне нужно узнать, как отослать несколько переменных на мой почтовый ящик. Вот код, который представляет собой два поля и кнопку. Только это всё слегка не работает - когда я писал, то понимал, что без чужой помощи не обойтись:
<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="&nbsp;Confirm&nbsp;" 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
Цитата
<?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>

попробуй так...
x3rg1s
Извините, но код не работает. Когда я запускаю файл с диска C и жму ‘Submit’, то строка адреса меняется так:
file:///C:/primer.htm?fn=x3r&ln=g1s
И это всё, что происходит. Если запускать страницу с сайта или с почтового ящика, то же самое - просто добавляется «?fn=x3r&ln=g1s»

Ящик я проверял. Он пустой. Ещё вдобавок форма ничего не делает с русскими символами, но это не проблема, т.к. русский шрифт будет кодироваться в iso-8859-1. В ней русский символ выглядит так: #1079;
И, если интересно, то можно поэкспериментировать с формой ]]>здесь]]>.
Andrew Stephanoff
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>
Guest
Окей, я заменил метод 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
Цитата
<?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";
}
?>

вот теперь все знают твой пароль smile.gif
x3rg1s
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
попробуй написать
<form method='POST' action='http://aldvin.com.ru/primer3.php' target='_self'>

это открывает новый файл в текущем окне (должен smile.gif)
P. S. у меня все открывается в одном окне...
Guest
Цитата
Это открывает новый файл в текущем окне

Не получается. Словно бы я ничего не писал.
Цитата
x3rg1s@yahoo.co.uk
Subject: Variables
smile.gif //Это случайность или вы просто хакер?
From: "Unprivileged user
"
А есть по языку PHP какие-нибудь справочники с удобным поиском? В любом случае, окно придётся закрывать.
Andrew Stephanoff
можно закрыть на ява-скрипте, но браузер выдаст предупреждение..
<?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>
Guest
Окей, Андрей. Спасибо вам. Мы сделали всё, что могли.
Вот последний вариант наших трудов:
<? 
$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. smile.gif
<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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.