【发布时间】:2014-03-30 08:02:12
【问题描述】:
在我正在开发的会员网站上,一旦用户登录,他的个人资料页面上有两个简单的表单。
仅当用户在数据库中的“地区”字段为 NULL 时才会显示第一个。如果“地区”字段包含任何信息,则第一个表格将替换为显示该地区数据的表格。该表单的目的是让用户从列表中选择他的地区,并更新他的帐户,以便他可以从他的地区读取本地信息。在他点击提交后,数据库中的“地区”字段被更新,然后他再也看不到这个表单了。
第二个是基本的联系表格,如果需要任何帮助,用户可以通过该表格轻松地向支持团队发送电子邮件。发送消息后,将显示一条成功消息,而不是表单,直到刷新页面,此时文本字段恢复正常并且用户可以发送另一条消息。
我已经对它们进行了测试,它们都可以分别正常工作,但是我遇到的错误是当他的“地区”字段中为 NULL 的用户登录时,或者每当他的页面被刷新时,第二个表单会自动发送一个空白向支持团队发送电子邮件,并且总是显示成功消息而不是要写入的消息的文本输入。当第二个表单提交为空时,我设置了一个错误,但尽管如此,当第一个表单显示时,每次刷新,都会发送一封新的空白电子邮件...
用户提交了第一个表单并更新了他的“区域”后,第二个表单恢复正常并且工作正常...我知道有冲突,或者我忘记在下面的代码中设置一些条件.请善待,看看并告诉我你认为错误可能在哪里。欢迎任何帮助。
<? if($row_user['district'] == NULL ):
if(!isset($_POST['submit2']))
{
foreach($row_user as $field => $value)
{
$_POST[$field] = $value;
}
}
$error2 = 0;
if(isset($_POST['submit2'])){
if(isset($_POST['distr']) && ($_POST['distr']==""))
{
$error2 = 1;
$msg_distr="<br /><span class='error'>Select your district</span>";
}
if($error2 == 0)
{
$update = 'UPDATE users SET ';
if(isset($_POST['distr'])) $update .= 'district = '.GetSQLValueString($_POST['distr'], 'text').', ';
$update = substr_replace($update,"",-2);
$update .= 'WHERE id_user = '.$id_user;
mysql_query($update, $conn) or die(mysql_error());
}
}
?>
第一个表单的 HTML 代码是
<form action="" method="post" enctype="multipart/form-data" >
<table width="465px" border="0" cellpadding="5" cellspacing="5">
<tr>
<td width="160" valign="middle" align="left">
<span class="style20"><b>Choose District</b> *</span>
</td>
<td valign="top" align="left">
<select name="distr" onChange="sel_distr(this.value)" class="select" >
<option value="">Choose</option>
<option value="District1" <? if($_POST['distr']=="District1") echo "'selected'"?>>District1</option>
<option value="District2" <? if($_POST['distr']=="District2") echo "'selected'"?>>District2</option>
<option value="District3" <? if($_POST['distr']=="District3") echo "'selected'"?>>District3</option>
<option value="District4" <? if($_POST['distr']=="District4") echo "'selected'"?>>District4</option>
<option value="District5" <? if($_POST['distr']=="District5") echo "'selected'"?>>District5</option>
</select>
<?=$msg_distr?>
</td>
</tr>
<tr>
<td >
<input type="submit" name="submit2" class="submit" value="Insert" />
</td>
</tr>
</table>
</form>
<?endif; ?>
另一种形式是从该页面发送电子邮件,只需插入消息并发送即可。用户不需要插入他的姓名或电子邮件。
<?php
$error_message=0;
if ($_POST["email"]<>'') {
if(isset($_POST['comment']) && ($_POST['comment']=="")){
$error_message=1;
$er_msg="<br /><span class='error'>You can't send a blank message</span>";
}
if($error_message == 0){
$ToEmail = 'mail@domain';
$EmailSubject = 'New message from '.$row_user['name'].'';
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "<b>Name:</b> ".$_POST["name"]."<br/>";
$MESSAGE_BODY .= "<b>Email:</b> ".$_POST["email"]."<br/><br/>";
$MESSAGE_BODY .= " ".nl2br($_POST["comment"])."<br/>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
?>
<div class="success" style="height:60px;">
<b><?=$row_user['name']?>, Your message was sent!</b> <br/>
A member of our team will contact you soon.
</div>
<?php
}
if($error_message == 1){ ?>
<form action="me.html" method="post">
<input name="name" type="hidden" value="<?=$row_user['name']?>" id="name" size="32">
<input name="email" type="hidden" value="<?=$row_user['email']?>" id="email" size="32"> <br/>
<textarea name="comment" cols="45" rows="6" id="comment" class="input" style="width:90%"></textarea><br/>
<input class="submit" type="submit" name="Submit" value="Send">
</form>
<?=$er_msg?>
<?
}
} else {
?>
<form action="me.html" method="post">
<input name="name" type="hidden" value="<?=$row_user['name']?>" id="name" size="32">
<input name="email" type="hidden" value="<?=$row_user['email']?>" id="email" size="32"> <br/>
<textarea name="comment" cols="45" rows="6" id="comment" class="input" style="width:90%"></textarea><br/>
<input class="submit" type="submit" name="Submit" value="Send">
</form>
<?php
};
?>
【问题讨论】:
-
我们能看到你在哪里调用电子邮件脚本吗?
-
我贴的代码里都有
-
以上所有代码都在同一个文件中?
-
是的,它是一个 .php 文件。请让我知道您对如何消除我所描述的错误的看法