Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

скрипт для отправки формы

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
nicos
Гость





СообщениеДобавлено: Вт Май 25 2004 17:39    Заголовок сообщения: скрипт для отправки формы Ответить с цитатой

у меня такая проблема: в html я пишу такую форму:
______________________________________________
<html>
<head>
<title>форма</title>
<head>
</body>
<FORM METHOD="POST" ACTION="mail.php">
<I>Ваше имя</I><BR>
<INPUT TYPE="TEXT" SIZE="40" NAME="msg"><BR>
<INPUT TYPE="Submit" NAME="Ok" VALUE="Послать">
</FORM>
</body>
</html>
___________________________________________________
получается это http://realbaner.fatal.ru
ну так вот а как отсылающий скрипт "mail.php"написать понятия
не имею.я вообще в php чайник. Sad
Вернуться к началу
Гость






СообщениеДобавлено: Вт Май 25 2004 20:43    Заголовок сообщения: Ответить с цитатой

не может быть такого чтоб никто не знал!!!
ОТВЕТЬТЕ!!!!! Embarassed
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Вт Май 25 2004 21:13    Заголовок сообщения: Ответить с цитатой

Почта отсылается функцией mail. Вот только параметры запамятовал. Вроде, сначала адрес, потом тема, а затем сообщение.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вт Май 25 2004 21:25    Заголовок сообщения: Ответить с цитатой

так я пробовал:
mail(mail@mail.ru, типа тема, привет)
и получиться такая фигня мне на mail будет отправляться только слово привет а данные из формы нет!!!!!
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Вт Май 25 2004 21:35    Заголовок сообщения: Ответить с цитатой

А как ты выцепляешь данные из формы?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Вт Май 25 2004 21:40    Заголовок сообщения: Ответить с цитатой

Можно написать так:
mail("mymail@email.mail","Это письмо сгенерил скрипт",$HTTP_POST_VARS["msg"]);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Ср Май 26 2004 12:59    Заголовок сообщения: Ответить с цитатой

вот такой скрипт???
__________________________________
<?
mail("mymail@email.mail","Это письмо сгенерил скрипт",$HTTP_POST_VARS["msg"]);
?>
_______________________________________
такой мне вообще ничего на меил не отправляет. Crying or Very sad
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Май 26 2004 14:39    Заголовок сообщения: Ответить с цитатой

Так ты напиши там свой мейл
mail@mail.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicos
Гость





СообщениеДобавлено: Ср Май 26 2004 20:53    Заголовок сообщения: Ответить с цитатой

ну я конечно написал но всё равно ничего!Sad
а нельзя как нить зделать чтоб эти данные сохранялись в каком нибудь файле???
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Май 26 2004 21:03    Заголовок сообщения: Ответить с цитатой

Можно сохранить в файле на серваке.
Ты не должен забывать о коллизиях совместного доступа к файлу. (Если бы ты испльзовал БД, такого бы не было). Можешь хеш-функцией (хотя бы md5:) для каждого юзера определить уникально имя файла, куда будет писаться только его инфа.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Май 26 2004 21:08    Заголовок сообщения: Ответить с цитатой

В скрипте пишешь:
$fp=fopen("filename.txt","w");
fwrite($fp,$HTTP_POST_VARS["msg"]);
fclose($fp);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicos
Гость





СообщениеДобавлено: Ср Май 26 2004 21:49    Заголовок сообщения: Ответить с цитатой

а с этим скриптом вот такие ошибки:
--------------------------------------------------------------------------------
Warning: fopen(filename.txt): failed to open stream: Permission denied in /www/r/re/realbaner.fatal.ru/site/mail.php on line 2

Warning: fwrite(): supplied argument is not a valid stream resource in /www/r/re/realbaner.fatal.ru/site/mail.php on line 3

Warning: fclose(): supplied argument is not a valid stream resource in /www/r/re/realbaner.fatal.ru/site/mail.php on line 4
------------------------------------------------------------------------------
на сервере
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Май 27 2004 15:01    Заголовок сообщения: Ответить с цитатой

Например, вместо $HTTP_POST_VARS
может быть $POST, $_POST
Обратись к доке провайдера. И узнай еще, какие права предоставляет хост. Кстати, следи, чтобы filename.txt был нетолькодлячтения. И права должны быть выставлены на него такие, чтобы скрипт мог в него чегонить записать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Чт Май 27 2004 15:07    Заголовок сообщения: Ответить с цитатой

2 GREA: все верно, только при открытии-записи-закрытии файла надо бы добавить блокировки, что б избежать как раз той самой проблемы совместного доступа. В РНР4 они точно реализованы, но синтаксис, увы, на вскидку не вспомню. Sad Как говориться RTFM Wink
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Май 27 2004 15:25    Заголовок сообщения: Ответить с цитатой

Чтобы избежать коллизий, можно в цикле открывать файл, пока он не откроется. (то есть, его указатель перестанет быть нулевым)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Чт Май 27 2004 15:34    Заголовок сообщения: Ответить с цитатой

Извини, что-то не понял что ты имеешь ввиду... Проблема возникает когда два пользака одновременно топчут submit и два процесса-писателя пробуют писать в один и тот же файл данные, например, из формы. При чем тут цикл? Поясни, плз.
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Май 27 2004 15:48    Заголовок сообщения: Ответить с цитатой

Если мы не смогли открыть файл, значит в него уже записывают. Поэтому мы должны выждать немного, и попробовать открыть его снова. И так пока файл не окажется свободным. (Получается нечто вроде очереди на запись. Один записывает, остальные ждут. А потом тот, кто успел, начинает писать туда уже свою инфу)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Чт Май 27 2004 16:10    Заголовок сообщения: Ответить с цитатой

Хм... Не уверен что это сработает если нет блокировок. Будет попытка одновременной записи, и - как следствие - все рухнет. а блокировки для того и сделаны, что б когда в файло пишут никто ни-ни! Тока читать.
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
swz
Гость





СообщениеДобавлено: Ср Июн 09 2004 12:59    Заголовок сообщения: Ответить с цитатой

Попробуй так помоему все должно работать.
index.htm

<form action="send.php"method=post>
<input type="hidden" name="hidden" value=true><br>
введите Адрес:<input type=text name="EMail"><br>
тема:<input type=text name="subject"><br>
текст для отправки:<input type name="Body" ><br>
<input type=submit name="Submit" value="Отправить!">
</form>
send.php

<?php
if($hidden){
mail($EMail,$subject,$Body);
$file='mail.txt';
$open=fopen($file,"a");
fwrite($open,"$EMail\t$Body\n");
fclose($open);
print'Письмо отправлено';
}
?>
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Июн 09 2004 20:21    Заголовок сообщения: Ответить с цитатой

А значения переменных из глобального массива Пушкин будет выцеплять?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
swz
Гость





СообщениеДобавлено: Ср Июн 09 2004 20:44    Заголовок сообщения: Ответить с цитатой

А причем тут глобальные переменные, или я чтото не понял про что речь идет.
Тогда плиз извените. Embarassed

Что косается распределения времени при обращении к файлу я подумал так, для каждой отправки создавать свой файл в отведенной директории затем читать с помощью opendir и readdir записывая данные в один файл удаляя временные.
Нагрузит конечно сервер чють но зато просто и работает. Razz

может я и не прав. Rolling Eyes
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Июн 09 2004 20:54    Заголовок сообщения: Ответить с цитатой

ИМХО в начале скрипта надо писать
$EMail=$POST[Email]
или
$EMail=$_POST[Email]
или
$EMail=$HTTP_POST_VARS[Email]
В зависимости от настроек сервака.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
swz
Гость





СообщениеДобавлено: Ср Июн 09 2004 21:18    Заголовок сообщения: Ответить с цитатой

А зачем вообще присваивать переменной содержащей маил адрес значение? Question
для отправки текста сообщения есть переменная $Body она может содержать все что угодно.
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Июн 09 2004 21:24    Заголовок сообщения: Ответить с цитатой

Ты же должен выгрести данные из формы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
swz
Гость





СообщениеДобавлено: Ср Июн 09 2004 22:20    Заголовок сообщения: Ответить с цитатой

А как данные из формы передаются переменным Razz
Если в форме есть <input type=text name="EMail">
то переменная будет $EMail
Кажется так было. Cool
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Июн 09 2004 22:28    Заголовок сообщения: Ответить с цитатой

Нет, все переданные из формы значения находятся в глобальных ассоциативных массивах $GET или $POST.
На крайняк, в массиве $SESSION (из другого скрипта).
Это необходимо в целях безопасности.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Июн 09 2004 22:31    Заголовок сообщения: Ответить с цитатой

Может, у тебя ПХП по особенному сконфигурирован, чтобы копировал содержимое этих массивов в переменные автоматически. Кажется, была такая опция в ini файле. Но в общем случае так делать нельзя.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GreenS



Зарегистрирован: 09.06.2004
Сообщения: 9
Откуда: Урал

СообщениеДобавлено: Ср Июн 09 2004 22:42    Заголовок сообщения: Ответить с цитатой

Для безопасной передачи переменной была такая функция
SecureVar()
PHP у меня сконфигурирован нормально все работает.

SWZ уже в прошлом я зарегистрировался Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Ср Июн 09 2004 22:54    Заголовок сообщения: Ответить с цитатой

И тем не менее, переменные передаются через массив.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Чт Июн 10 2004 06:34    Заголовок сообщения: Ответить с цитатой

Может вы о разных версиях РНР говорите?
2GREA - в РНР4 работать через массив совсем не обязательно. Подозреваю, что у тебя третья версия, хотя вроде и там можно было.

Кстати, а кто мешает и скрипт, и форму пихнуть в один файл? В форме target="$REDIRECT_URL", кнопочка submit поименована. Сам файл выглядит примерно так
<?
if(проверяем кнопку submit)
{обработка}
else
{?><form...></form><?}?>

То есть в if проверяем была ли нажата сабмит, а при первом заходе в файл это не верно, тогда отрабатывает else и генерит нам форму. По нажатию submit форма отправляется на $REDIRECT_URL, то есть в тот же файл, где снова проверяется нажатие на submit (она же у нас именованная, не забыли?), а так как она была нажата отрабатывает тот скрипт, что сразу после if - проверяет данные из формы. Очень удобно, и не плодиться море файлов.
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Июн 10 2004 13:29    Заголовок сообщения: Ответить с цитатой

Ничего не мешает. Так и делаю.Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Июн 10 2004 13:37    Заголовок сообщения: Ответить с цитатой

Я вроде действительно ошибался. Звиняюсь. А ведь на 101% был уверенSmile
Листинг 10.5. Пересылка пользовательских данных функцией mail( )

<html>

<head>

<title>Listing 10-5</title>

</head>

<body bgcolor="#ffffff" text="#000000" link="#cbda74" vlink="#808040" alink="#808040">

// Все кавычки внутри $form должны экранироваться.

// в противном случае произойдет ошибка.

$form = "

<form action=\"listing10-5.php\" method=\"post\">

<input type=\"hidden\" name=\"seenform\" value=\"y\">

<b>Send us your comments!</b><br>

Your Name:<br>

<input type=\"text\" name=\"name\" size=\"20\" maxlength=\"20\" value=\"\"><br>

Your Email:<br>

<input type=\"text\" name-\"email\" size=\"20\" maxlength=\"40\" value=\"\"><br>

Your Comments:<br>

<textarea name=\"comments\" rows=\"3\" cols=\"30\"></textarea><br>

<input type=\"submit\" value=\"submit!\">

</form>

// Если форма ранее не отображалась, отобразить ее.

// Для проверки используется значение скрытой переменной $seenform.

if ($seenform != "у") :

print "$form"; else :

// Переменная $recipient определяет получателя данных формы

$recipient = "yourname@youremail.com";

// Тема сообщения

$subject = "User Comments ($name)";

// Дополнительные заголовки $headers = "From: $email";

// Отправить сообщение или выдать сообщение об ошибке

mail($recipient, $subject, $comments, $headers) or die("Could not send email!");

// Вывести сообщение для пользователя

print "Thank you $name for taking a moment to send us your comments!";

endif;

?>

</body>

</html>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Чт Июн 10 2004 14:02    Заголовок сообщения: Ответить с цитатой

Хе! Ну, примерно так Very Happy Только мог бы пример покороче сделать, а то если автор поста сюда заглянет, то ему еще и разбираться придется.
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Июн 10 2004 14:17    Заголовок сообщения: Ответить с цитатой

Так не я ж писал.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Чт Июн 10 2004 14:25    Заголовок сообщения: Ответить с цитатой

А что за книга?
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Чт Июн 10 2004 14:34    Заголовок сообщения: Ответить с цитатой

Хрен знает. Откуда-то из инета.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Хома



Зарегистрирован: 26.08.2003
Сообщения: 109
Откуда: Москва

СообщениеДобавлено: Чт Июн 10 2004 16:01    Заголовок сообщения: Ответить с цитатой

Мужики, на сколько я понял - автор поста в РНР не шарит. И он этот скрипт просто скопирует и ... пойдут баги. Там нет открывающего РНР-шного тега и закрывающей кавычки в $form. Да и вообще он помоему немного замороченый.
Может так будет получше? Как считаете?

Листинг 10.5. Пересылка пользовательских данных функцией mail( )

<html>
<head>
<title>Listing 10-5</title>
</head>

<body bgcolor="#ffffff" text="#000000" link="#cbda74" vlink="#808040" alink="#808040">

<?
// Все кавычки внутри $form должны экранироваться.
// в противном случае произойдет ошибка.

$form = "
<form action=\"$SCRIPT_NAME\" method=\"post\">
<b>Send us your comments!</b><br>
Your Name:<br>
<input type=\"text\" name=\"name\" size=\"20\" maxlength=\"20\" value=\"\"><br>
Your Email:<br>
<input type=\"text\" name-\"email\" size=\"20\" maxlength=\"40\" value=\"\"><br>
Your Comments:<br>
<textarea name=\"comments\" rows=\"3\" cols=\"30\"></textarea><br>
<input type=\"submit\" value=\"submit!\" name=\"seenform\">
</form>";

//показываем форму
echo "$form";

// Если нажали Submit

if (is_set($seenform))
{
// Переменная $recipient определяет получателя данных формы
$recipient = "yourname@youremail.com";

// Тема сообщения
$subject = "User Comments ($name)";

// Дополнительные заголовки
$headers = "From: $email";

// Отправить сообщение или выдать сообщение об ошибке
mail($recipient, $subject, $comments, $headers) or die("Could not send email!");

// Вывести сообщение для пользователя
print "Thank you $name for taking a moment to send us your comments!";

}?>

</body>
</html>
_________________
Тише едешь, не успеешь
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Пт Июн 11 2004 07:58    Заголовок сообщения: Ответить с цитатой

Ага
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...