IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Где ошибка в скрипте "отправка мыла на ПХП" (http://www.imho.ws/showthread.php?t=138310)

Nowal 23.02.2009 13:53

Где ошибка в скрипте "отправка мыла на ПХП"
 
Здраствуйте.
Закинул на хостинг скрипт (на ПХП) отправки сообщений на эл. почту. но когда нажимаю кнопку "отправить" мне выводит "Ошибка ! Скрипту не были переданы параметры !" (не зависимо от того ввожу я сообщение которое хочу отправить или нет)
Подскажите где допущена ошибка в коде?

mail.php
Код:

<html>
<body>
<td>
<form method=post action=send.php>
<center><b>Ваше имя<br><input type=text name=name size=30><p>
Ваш e-mail<br><input type=text name=email size=30><p>
Ваше сообщение<br><textarea name=mess rows=10 cols=50></textarea><p>
<input type=submit value="Отправить сообщение">
</form>
</td>
</body>
</html>

send.php
Код:

<?php
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
if (isset ($email))
{
$email = substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Не указан e-mail !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$email = "не указано";
}
if (isset ($mess))
{
$mess = substr($mess,0,1000); //Не может быть более 1000 символов
if (empty($mess))
{
echo "<center><b>Сообщение не написано !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$mess = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "вася пупкин@email.**"; 
$subject = "Сообщение с вашего интернет-сайта";
$message = "Имя пославшего:$name::::::::::Электронный адрес:$email::::::::::Сообщение:$mess:::::::::IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо за отправку вашего сообщения<br><a href=index.php>Нажмите</a>, что бы вернуться на главную...>";
exit;
?>

Заранее спасибо!

RaZEr 23.02.2009 14:36

гугли register_globals

Nowal 23.02.2009 15:28

Помогло это:

foreach($HTTP_POST_VARS as $key => $value)
eval("$".$key."='".$value."';");

вопрос теперь такой .. а это надёжно? :)

RaZEr 23.02.2009 23:11

eval - это прекрасно. пользуйся им как можно чаще :)

Gregorius 27.02.2009 16:06

Цитата:

Сообщение от RaZEr (Сообщение 1635892)
eval - это прекрасно. пользуйся им как можно чаще :)

Видимо это юмор такой :)

Nowal, этот вариант уязвим. Попробуй, например, в форме отправки вместо строки:
Ваш e-mail<br><input type=text name=email size=30><p>
вставить строку
Ваш e-mail<br><input type=text name=email=1;phpinfo();$a size=30><p>

Правильнее, я думаю, сделать так:

$name = $_POST['name'];
$email = $_POST['email'];
$mess = $_POST['mess'];

AlexGluker 02.10.2009 22:14

про передачу значений переменных отписал Gregorius

отправка почты
$to='Адрес получателя';
$subject='Тема письма';
$subject=convert_cyr_string($subject, "w","k");
$message='Собсно само письмо';
$message=convert_cyr_string($message, "w","k")
$subject=base64_encode($subject);
$subject='=?koi8-r?B?'.$subject.'?=';
$headers="Content-type: text/plain; charset=koi8-r";
$headers.="\n".'From: '.$rootmail."\n".'X-Mailer: :)';
mail($to, $subject, $message, $headers) or die;

пример проверен, работает


Часовой пояс GMT +4, время: 00:04.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.