这就是我在这里要做的。
- 我有一个 html 表单来收集用户的数据
- 提交表单后在文本区域显示输出
- 处理 textarea 内容的两个按钮:- 一个用于将内容下载为文本文件,第二个用于使用 php 将 textarea 内容作为电子邮件发送
在这里,输出 textarea 用 div 包裹,output-main
我不想在表单提交之前显示这个 div。
现在我的 HTML 代码:
<div class="emcsaninfo-symcli-main">
<form id="main" name="main" action="#text" method="post" >
<div class="block-with-text-area">
<div class="input-quest-with-text-area">Device List</div>
<div class="input-resp-with-text-area"><span><textarea class="textarea" name="devs" ></textarea></span></div>
</div>
<div id="devseq" >
<div class="block">
<div class="input-quest">Starting Device</div>
<div class="input-resp"><span><input class="textbox" id="sdev" name="sdev" type="text" size="5" maxlength="5" value="<?php if(isset($_POST['sdev'])) { echo htmlentities ($_POST['sdev']); }?>" /></span> </div>
</div>
</div>
<div id="metamemcnt" >
<div class="block">
<div class="input-quest">Meta member count(Excluding Meta Head)</div>
<div class="input-resp"><span><input class="textbox" id="mem_count" name="mem_count" type="text" size="5" maxlength="3" value="<?php if(isset($_POST['mem_count'])) { echo htmlentities ($_POST['mem_count']); }?>" /></span></div>
</div>
</div>
<div id="metacnt" >
<div class="block">
<div class="input-quest">How many Meta Devices</div>
<div class="input-resp"><span><input class="textbox" id="meta_count" name="meta_count" type="text" size="5" maxlength="3" value="<?php if(isset($_POST['meta_count'])) { echo htmlentities ($_POST['meta_count']); }?>" /></span></div>
</div>
</div>
<div class="submit-clear">
<input id="generate" type="submit" name="script" value="create my cli script" />
<input type="submit" id="clear" name="clear" value="clear" />
</div>
</form>
</div>
因为我不想在提交表单之前显示输出区域,所以我首先检查用户是否在表单字段中输入了数据,如果是,则创建输出div
下面的PHP代码
<?php
if((!empty($_POST['sdev']) && !empty($_POST['mem_count']) && !empty($_POST['meta_count'])) || !empty($_POST['devs']) ){
?>
<div id="output-main">
<?php
echo '<form action=" " method="post">';
echo '<textarea onclick="this.select()" name="output_textarea" id="output_textarea" cols="100" rows="25" readonly>';
//other PHP Codes here
echo '</textarea>';
?>
</div>
<?php
echo '<input type="submit" id="download" value="submit" name="submit"></input>';
echo '<input class="textbox" type="text" id="email-box" name="email-box" value="Enter Your Email ID here">';
echo '<input type="submit" id="download1" value="submit2" name="submit2"></input>';
if($_POST['submit2'] == 'submit2') {
$to = $_POST['email-box'] ;
$message = $_REQUEST['output_textarea'];
$subject = 'form meta cli script';
$headers = "From: info@domain.com\r\n";
$headers .= "Reply-To: me@domain.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
mail($to, $subject, $message, $headers);
echo 'message sent successfully';
}
}
?>
我面临的问题:
我可以将内容下载为 txt 文件,但是当我尝试通过电子邮件发送内容时,它不起作用,它只是清除了该output div
部分。
但是如果我删除第一个 PHP 条件,即
<?php
if((!empty($_POST['sdev']) && !empty($_POST['mem_count']) && !empty($_POST['meta_count'])) || !empty($_POST['devs']) ){
?>
下载和电子邮件功能都运行良好。但是那个时候,我无法output div
在表单提交之前隐藏该部分。
我不明白这里出了什么问题。
我已经添加了
value="<?php if(isset($_POST['sdev'])) { echo htmlentities ($_POST['sdev']); }?>"
在表单提交后保持用户在其字段中输入的数据。但是当我单击电子邮件按钮时,它会清除这些字段(下载按钮工作正常,并且在点击下载按钮后也会将数据保留在字段中)