gpt4 book ai didi

php - 解决同一网页上两个简单表单之间的冲突

转载 作者:行者123 更新时间:2023-11-30 23:05:34 25 4
gpt4 key购买 nike

在我正在开发的成员(member)网站上,一旦用户登录,在他的个人资料页面上就会有两个简单的表单。

只有当用户在数据库中的“地区”字段为 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"> &nbsp;
<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"> &nbsp;
<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
};
?>

最佳答案

好吧,我认为这是一个小错误,你会因为错误计数器标志太多而感到困惑。

尝试改变这个:

if($error_message == 0){

到:

if($error_message == 0 && $row_user['district'] != NULL){

关于php - 解决同一网页上两个简单表单之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com