如果数据库中已存在电子邮件,我希望我的表单重定向到index2.html而不插入值或执行案例功能。我尝试了几种没有成功的方法。这是我的function.php
<?php
require 'database.php';
$title = $_POST['Title'];
$fullname = $_POST['fullname'];
$email = $_POST['email'];
$gender = $_POST['gender'];
$sql = "SELECT email FROM tbl_users WHERE email = $email";
$result = dbQuery($sql);
if (dbNumRows($result) == 1) {
header ('Location: index2.php');
}
$sql = "INSERT INTO tbl_users (Title, fullname, email, gender)
VALUES ('$title', '$fullname', '$email', '$gender')";
dbQuery($sql);
switch ( $_POST['gender'] )
{
case 'male':
header('Location: male.php');
break;
case 'female':
include 'female.php';
break;
}
?>
我的表格
<form action="function.php" method="post
<input name="Title" placeholder="Title" type="text">
<input name="fullname" placeholder="fullname" type="text">
<input name="email" placeholder="email" type="text">
<select name="gender">
<option selected="selected" value="-">Please select your bank</option>
<option value="male">Male</option>
<option value="female">Female</option>
</select>
</form>
答案 0 :(得分:3)
如果这确实是您代码的一部分
WHERE email = $email";
您的代码/标题失败,因为它没有引用:
WHERE email = '$email'";
因为$email
是一个字符串而不是整数。
您还需要在每个标题后添加exit;
,否则您的代码将希望继续执行。
参考:
您对SQL注入持开放态度;使用准备好的声明。
参考文献:
另外,如果<form action="function.php" method="post
(再次)是您真实代码的一部分,那么它就会缺少引用"
和结束>
。
<form action="function.php" method="post">
脚注:
用于连接/查询的API未知,因此请检查查询错误并通过PHP检查错误报告。
您还应该检查任何空字段。否则你可能会得到意想不到的结果/惊喜。
&#34;我希望我的表单重定向到index2.html&#34;
并且您正在使用(使用.php
)
header ('Location: index2.php');
你可能用其中一个打错了。如果没有,请使用.html
扩展程序,如果这是您要求的内容。
答案 1 :(得分:2)
将您的插入查询放入else 示例 -
if (dbNumRows($result) == 1) {
header ('Location: index2.php');
}else {
$sql = "INSERT INTO tbl_users (Title, fullname, email, gender)
VALUES ('$title', '$fullname', '$email', '$gender')";
dbQuery($sql);
}
答案 2 :(得分:2)
重定向后,您需要退出PHP,或者它将读取并执行其余代码。所以,这应该解决问题:
header('Location: index2.php');
die();