PDA

Просмотр полной версии : Не работает отправка заявки с сайта...


dmitry_kiv
01.05.2009, 01:12
Остался от программиста код заявки, переделал его под себя. Но не работает. Подскажите в чем проблема.


<?
if (isset($_REQUEST[zayavka])){
$z="";
$z.="1. ФИО:\t\t".$_REQUEST["zakazchik"]."\r\n";
$z.="2. Телефон: ".$_REQUEST["tel_zakazchika"]."\r\n";
$z.="3. E-mail: ".$_REQUEST["mail_zakazchika"]."\r\n";
$z.="4. Номера проектов: ".$_REQUEST["projects"]."\r\n";
$z.="5. Доп. информация: ".$_REQUEST["dop_info"]."\r\n";
$z.=date("Y/m/d H:i:s",time());

mail("dima_kiv@inbox.ru","Заявка",$z,"Content-type: text/plain; charset=windows-1251");
header("Location: ".$_SERVER['SCRIPT_NAME']."?otpr=1");
}

?>


<form method="POST" onsubmit="return checksubmit();" onreset="setreset();">
<input onkeyup="checkp(3,value);" type="text" size="50" name="zakazchik">
<input onkeyup="checkp(4,value);" type="text" size="50" name="tel_zakazchika"></td>
<input onkeyup="checkp(5,value);" type="text" size="50" name="mail_zakazchika">
<input onkeyup="checkp(6,value);" type="text" size="50" name="projects">
<TEXTAREA type="text" name="dop_info" rows=5 cols=223></TEXTAREA>
<input class="button" type="reset">
<input class="button" type="submit" name="zayavka" value="Отправить">

</form>

<script type="text/javascript" charset="windows-1251">


<?if (isset($_REQUEST['otpr'])){?>
alert("Ваша заявка отправлена.");
<? } ?>


var p=[];
for (var i=1;i<4;i++) p[i]=0;

function checkp(n,t){
if ((n!=1)&&(n!=19)) {
if (t!=""){
p[n]=1;
document.getElementById("p"+n).innerHTML='<span style="color:#ffc600;">+</span>';
}else{
p[n]=0;
document.getElementById("p"+n).innerHTML='<span style="color:#ffc600;">-</span>';
}
}
}

function checksubmit(){
var t=1;
for (var i=1;i<22;i++) t=t*p[i];
if (t==0){
alert("Ошибка! Проверьте правильность заполнения формы.");
return false;
}
if (t==1){
return true;
}
}
function setreset(){
for (var i=1;i<22;i++){
document.getElementById("p"+i).innerHTML='<span style="color:#ffc600;">-</span>';
document.getElementById("tr20").setAttribute("style","visibility: hidden;");
}

}
</script>



код в нижней части отвечает за провеку на сколько я понял. он тоже не работает, но это уже второй момент. главное тоб на почту приходило. спасибо.

duhowka
01.05.2009, 02:00
попробуйте добавить вот сюда
<form action=имя скрипта method="POST" onsubmit="return checksubmit();" onreset="setreset();">
как я понял, скорее всего, имя скрипта и есть имя этого же файла.
а еще лучше выложите файлик полностью, а не по частям.
код который вы выложили в последней части включает в себя функции: "подсветки" поля при вводе данных, проверку на наличие данных в форме и функцию сброса или обнуления полей

dmitry_kiv
01.05.2009, 02:05
насколько я понял вы имеете ввиду имя скрипта "zayavka"? если да то все равно не работает. вот весь код целиком:

<?php
require("header.php");
?>
<?
if (isset($_REQUEST[zayavka])){
$z="";
$z.="1. ФИО:\t\t".$_REQUEST["zakazchik"]."\r\n";
$z.="2. Телефон: ".$_REQUEST["tel_zakazchika"]."\r\n";
$z.="3. E-mail: ".$_REQUEST["mail_zakazchika"]."\r\n";
$z.="4. Номера проектов: ".$_REQUEST["projects"]."\r\n";
$z.="5. Доп. информация: ".$_REQUEST["dop_info"]."\r\n";
$z.=date("Y/m/d H:i:s",time());

mail("dima_kiv@inbox.ru","Заявка",$z,"Content-type: text/plain; charset=windows-1251");
header("Location: ".$_SERVER['SCRIPT_NAME']."?otpr=1");
}

?>
<form action="zayavka" method="POST" onsubmit="return checksubmit();" onreset="setreset();">
<table cellpadding=0 cellspacing=0 border=0>
<tr height=30>
<td width=320>ФИО&nbsp*</td>
<td width=15 id="p3" align=center><span style="color:#ffc600;">-</span></td>
<td><input onkeyup="checkp(3,value);" type="text" size="50" name="zakazchik"></td>
</tr>
<tr height=30>
<td>Телефон&nbsp*</td>
<td id="p4" align=center><span style="color:#ffc600;">-</span></td>
<td><input onkeyup="checkp(4,value);" type="text" size="50" name="tel_zakazchika"></td>
</tr>
<tr height=30>
<td>E-mail&nbsp*</td>
<td id="p5" align=center><span style="color:#ffc600;">-</span></td>
<td><input onkeyup="checkp(5,value);" type="text" size="50" name="mail_zakazchika"></td>
</tr>
<tr height=30>
<td>Номера проектов&nbsp*</td>
<td id="p6" align=center><span style="color:#ffc600;">-</span></td>
<td><input onkeyup="checkp(6,value);" type="text" size="50" name="projects"></td>
</tr>
<tr height=3><td colspan=3></td></tr>
<tr height=60>
<td>Дополнительная информация</td>
<td id=""></td>
<td align=right><TEXTAREA type="text" name="dop_info" rows=5 cols=223></TEXTAREA></td>
</tr>
<tr height=10><td colspan=3></td></tr>
<tr align=right>
<td colspan=3>
<input class="button" type="reset"> &nbsp
<input class="button" type="submit" name="zayavka" value="Отправить">
</td>
</tr>
</table>
</form>

<script type="text/javascript" charset="windows-1251">
<?if (isset($_REQUEST['otpr'])){?>
alert("Ваша заявка отправлена.");
<? } ?>
var p=[];
for (var i=1;i<4;i++) p[i]=0;

function checkp(n,t){
if ((n!=1)&&(n!=19)) {
if (t!=""){
p[n]=1;
document.getElementById("p"+n).innerHTML='<span style="color:#ffc600;">+</span>';
}else{
p[n]=0;
document.getElementById("p"+n).innerHTML='<span style="color:#ffc600;">-</span>';
}
}
}

function checksubmit(){
var t=1;
for (var i=1;i<22;i++) t=t*p[i];
if (t==0){
alert("Ошибка! Проверьте правильность заполнения формы.");
return false;
}
if (t==1){
return true;
}
}
function setreset(){
for (var i=1;i<22;i++){
document.getElementById("p"+i).innerHTML='<span style="color:#ffc600;">-</span>';
document.getElementById("tr20").setAttribute("style","visibility: hidden;");
}

}
</script>

</body>
</html>

duhowka
01.05.2009, 02:27
c разрешением файла надо писать

кстати. заметил 2 ошибочки:
1. php код лучше начинать <?php
2. надо в кавычках
if (isset($_REQUEST["zayavka"]))
p.s это конечно решение задачи, какое-то оно кривое. очень много не грамотностей чтоли. в итоге можно получить уязвимость для хакеров и не довольство для заказчика или посетителя.

dmitry_kiv
01.05.2009, 06:31
duhowka может посоветуешь что нибудь более стандартное?... просто программист у нас появился, код написал и пропал. я вот разгребаю :)

кстати указав zayavka.php тоже не работает...(

duhowka
01.05.2009, 15:26
реализаций много разных. я так понимаю, что вам особых изысков не надо, поэтому предлагаю взять готовый, например, тут (http://woweb.ru/load/64)

ffffff
02.05.2009, 00:51
А еще лучше взять Zend_Mail из Zend FrameWork. Строить письма путем объединения строк - плохая практика. Лучше создать шаблон.

файл tmpl.tpl.php

E-Mail: <?php echo $user['username'] ?>
Имя: <?php echo $profile['first_name'] . ' ' . $profile['middle_name'] . ' ' . $profile['last_name'] ?>
Адрес: <?php echo $profile['postal_code'] . ', ' .$profile['country'] . ', ' .$profile['city'] . ', ' . $profile['address'] ?>
Тел.: <?php echo $profile['phone'] ?>
------------------------------------------
Курс у.е. <?php echo $ue ?> рублей
Фиксированный платеж: <?php echo ($tax * $ue) ?>рублей

<?php $i=0 ?>
<?php foreach ($this->goods as $item): ?>
<?php
$i++;
?>
----- <?php echo $i ?> -----

Название: <?php echo $item['name'] ?> Кол-во: <?php echo $item['qty'] ?>
Цена: <?php echo ($item['price'] * $ue); ?>р Сумма: <?php echo ($item['price'] * $item['qty'] * $ue); ?>р

<?php endforeach; ?>

Итого: <?php echo $this->summ ?> рублей


в исполняемом файле делаем так:

ob_start();
include 'tmpl.tpl.php';
$message = ob_get_contents();
ob_end_clean();