Jump to content
  • 0

Форма с прикреплением файла


delfin
 Share

Question

Подскажите, пожалуйста, почему эта форма может не работать?

Она вообще не реагирует на клавишу отправить. Даже не проверяет поля на валидность (((

<?
$mymail="XXXXX@XXXXX.ru"; // адрес email, на который будет высылаться почта (например, vasya@mail.ru)
$updir="/upload/"; // директория сайта, в которую будет производиться закачка файлов (например, upload/). Слэш в конце обязателен
$after_sent="sent.htm"; // страница, на которую будет перенаправлен пользователь после отправки письма
$max="2097152"; // максимальный размер файла, который сможет закачивать пользователь (в байтах)

if(empty($go)) {
if (file_exists("header.html")) {
include ("header.html");
}
?>
<p style="margin-left: 30" align="justify"><form ENCTYPE="multipart/form-data" action="<?echo $PHP_SELF;?>" method=post>
<table border="0" width=83%>
<tr>
<td width=30%><font size=+1 color=red>♣</font> Ваше имя: </td>
<td width=70%>
<input type=text name=name>
</td>
</tr>
<tr>
<td width=30%><font size=+1 color=red>♣</font> Ваш E-mail: </td>
<td width=70%><input type=text name=mail></td>
</tr>
<tr>
<td width=30%><font size=+1 color=red>♣</font> Тема: </td>
<td width=70%>
<input type="text" name="subject">
</td>
</tr>
<tr>
<td width=30%>Текст сообщения:</td>
<td width=70%>
<textarea name="message" rows="10" cols="40"></textarea>
</td>
</tr>
<tr>
<td width=30%>Прикрепить файл (max. 2 MB): </td>
<td width=70%><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="<?echo $max;?>"><INPUT NAME="userfile" TYPE="file" SIZE="40"></td>
</tr>
<tr>
<td colspan="2">
<center>
<input type="submit" name=go value="Отправить">
</center>
</td></tr></table></form></p>
<?
if (file_exists("footer.html")) {
include ("footer.html");
}
}
else {

if(empty($name)) {
$bad = "Вы не подписались
";
}

if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mail)) // проверка правильности введенного e-mail адреса
{
$bad .= "Неправильный e-mail
";
}

if(empty($subject)) {
$bad .= "Отсутствует тема сообщения
";
}

if ($bad)
{
echo $bad;
?>
<a href="java script:history.back(1)">Заполните, пожалуйста, пустые поля</a>
<?
exit;
}
if (is_uploaded_file($userfile)) {
if (filesize($userfile)<=$max){
$fi = "K письму был прикреплен файл $userfile_name размером $userfile_size байт, который был закачан в директорию $updir";
}
}
$ip = getenv("REMOTE_ADDR");
$usa = getenv("HTTP_USER_AGENT");
$temp = "$finnВам было отправлено сообщение:nn$messagennIP-адрес отправителя: $ipnuser-agent: $usa";
$subj = "$subject";
$body = $temp;
$adds = "From: $mailn";
$adds .= "X-Sender: < $mail >n";
$adds .= "Content-Type: text/plain; charset=windows-1251n";
mail($mymail,$subj,$body,$adds);
Header("Location: $after_sent");
}
if (is_uploaded_file($userfile)) {
if (filesize($userfile)<=$max){
$dest=$updir.$userfile_name;
move_uploaded_file($userfile, $dest);
}
}
?>

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Ну давайте, по порядку.

Во-первых, Вы используете переменную go, как глобальную переменную. Но лучше не надеяться на это. И писать так

if (isset($_REQUEST['go'])){//какие-нить действия}

Дальше. Разве можно впихивать форму в абзац?? Вроде, нельзя.

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

<p style="margin-left: 30" align="justify">

. Сейчас проверю код, и напишу, в чем ошибка

Link to comment
Share on other sites

  • 0

Вт мой вариант кода, отсутствует только непосредственно отправка файла. Все работает.

<?
$mymail="XXXXX@XXXXX.ru"; // адрес email, на который будет высылаться почта (например, vasya@mail.ru)
$updir="/upload/"; // директория сайта, в которую будет производиться закачка файлов (например, upload/). Слэш в конце обязателен
$after_sent="sent.htm"; // страница, на которую будет перенаправлен пользователь после отправки письма
$max="2097152"; // максимальный размер файла, который сможет закачивать пользователь (в байтах)

//сценарий запушен из браузера, выводим форму для заполнения полей.
if(!isset($_REQUEST['submit'])) {
?>
<form ENCTYPE="multipart/form-data" action="" method="post">
<table border="0" width=83%>
<tr>
<td width=30%><font size=+1 color=red>♣</font> Ваше имя: </td>
<td width=70%><input type=text name=name></td>
</tr>
<tr>
<td width=30%><font size=+1 color=red>♣</font> Ваш E-mail: </td>
<td width=70%><input type=text name=mail></td>
</tr>
<tr>
<td width=30%><font size=+1 color=red>♣</font> Тема: </td>
<td width=70%><input type="text" name="subject"></td>
</tr>
<tr>
<td width=30%>Текст сообщения:</td>
<td width=70%><textarea name="message" rows="10" cols="40"></textarea></td>
</tr>
<tr>
<td width=30%>Прикрепить файл (max. 2 MB): </td>
<td width=70%><input TYPE="hidden" name="MAX_FILE_SIZE" value="<?echo $max;?>">
<input NAME="userfile" TYPE="file" SIZE="40"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Отправить">
</td>
</tr>
</table>
</form>
<?
}else {
//тогда проверяем поля на правильность ввода
echo("<pre>");
print_r($_REQUEST);
echo("</pre>");
$bad = "";
if(empty($_REQUEST['name'])){
$bad = "Вы не подписались
";
}//name

// проверка правильности введенного e-mail адреса
if(empty($_REQUEST['mail'])){
$bad .= "Вы не указали e-mail
";
}else{
if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $_REQUEST['mail'])){
$bad.="Неправильный e-mail
";
}
}

//тема письма
if(empty($_REQUEST['subject'])) {
$bad .= "Отсутствует тема сообщения
";
}

if (!empty($bad)){
echo $bad;
echo("<a href="java script:history.back(1)">Заполните, пожалуйста, пустые поля</a>");
exit;
}

//все поля введны верно - отправка сообщения
/*......*/


}//else

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy