Почему вычисленные поля не отображаются в форме для отправки электронной почты? - PullRequest
0 голосов
/ 08 декабря 2018

Это очень маленькая версия большого проекта, чтобы проиллюстрировать это.Значение отключенного вычисляемого поля 'appletot' не отображается в электронном письме из формы для отправки.Есть идеи, почему и как это можно сделать?

<body>
<form name="fruit" id= "fruit" action="acknowlfruit.php" method="post"  
target="_self">
<fieldset>
<table onkeyup="computeAll()">
<tr><th>Fruit</th><th>No.</th><th>Price</th><th>Total</th></tr>
<tr><td> <label for ="apples" class="label">Apples:</label></td>
<td> <input id= "apples" name="apples" type="text" required class="input" 
value="0" size="3" maxlength="3" indent= "250px" /> </td>
<td>at 5p</td>
<td><input id="appletot" type = "text" class= "input" value="0" size="5" 
maxlength="10" disabled/></td></tr>
</table>  
<br/> 
</p>
<script type="text/javascript">
function computeAll() {
document.fruit.appletot.value = 5*document.fruit.apples.value;
}
</script>
<input name="submit" type="submit" value="Submit" />
</body>
</html>

<?php
if (isset($_POST['submit'])){
$to = 'myemail@gmail.com'; 
$subject = 'Fruit Cost';
$message .= 'Apples: '.$_POST['apples']."  ";
$message .= 'Cost of apples: '.$_POST['applestot']."\r\n\r\n";
$success = mail($to, $subject,$message, $headers);
}
?>

1 Ответ

0 голосов
/ 08 декабря 2018

disabled поля не передаются на сервер.Вместо этого используйте type="hidden" или даже общее количество на стороне сервера:

if (isset($_POST['submit'])){
   $to = 'myemail@gmail.com'; 
   $subject = 'Fruit Cost';
   $message .= 'Apples: '.$_POST['apples']."  ";
   $message .= 'Cost of apples: '.($_POST['apples'] * 5)."\r\n\r\n";
   $success = mail($to, $subject,$message, $headers);
}

Второй подход - безопаснее , поскольку пользователь может изменить клиентский JavaScript, например с помощью:

function computeAll() {
    document.fruit.appletot.value = 0.5 * document.fruit.apples.value;
}

Как вы найдете , где в этом случае ошибка ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...