在我正在开发的会员网站上,一旦用户登录,在他的个人资料页面上有两个简单的表单。
只有当用户在数据库中将“区域”字段设为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
};
?>
答案 0 :(得分:0)
好吧,我认为这是一个小错误,你因为错误计数器标志太多而感到困惑。
尝试更改此内容:
if($error_message == 0){
为:
if($error_message == 0 && $row_user['district'] != NULL){