如果逻辑错误,我不知道我在哪里出错了... 我想通过3个步骤验证此注册脚本:
1st:检查是否有任何字段为空,在这种情况下包括errorreg.php和register.php。
第二:如果电子邮件已经存在,请包括register.php。
第三:如果一切顺利,请将数据插入数据库。
<?php
$address =$_POST["add"];
$password =$_POST["pw"];
$firstname =$_POST["fname"];
$lastname =$_POST["lname"];
$email =$_POST["email"];
$contact =$_POST["cno"];
$con=mysql_connect("localhost","root","");
mysql_select_db("bookstore");
$q2=mysql_query("select * from customer where email='$email'");
$b=mysql_fetch_row($q2);
$em=$b[0];
if($password != $_POST['pwr'] || !$_POST['email'] || !$_POST["cno"] || !$_POST["fname"] || !$_POST["lname"] || !$_POST["add"])
{
include 'errorreg.php';
include 'register.php';
}
else if($em==$email)
{
echo 'email already present try another';
include 'register.php';
}
else
{
$con=mysql_connect("localhost","root","");
mysql_select_db("bookstore");
$q1=mysql_query("insert into customer values('$email','$password','$firstname','$lastname','$address',$contact)");
echo 'query completed';
$q2=mysql_query("select * from customer where email='$email'");
$a=mysql_fetch_row($q2);
print "<table border =2px solid red> <tr><th>id </th></tr>";
print "<td>$a[0]</td>";
print "</table>";
include 'sucessreg.php';
echo " <a href='newhome.php'>goto homepage</a>";
}
?>
答案 0 :(得分:1)
首先,您要检查$ _POST对象中是否设置了属性:
if(isset($_POST["name"])
第二,你要检查值集是否为空
if(isset($_POST["name"] && !empty($_POST["name"]))
现在你只需要扩大它以检查所有属性,将它移动到这样的函数中会很方便
function ispostset($post_var)
{
if (isset($_POST[$post_var]))
{
if ($_POST[$post_var] != '')
{
return true;
}
else
return false;
}
else
return false;
}
答案 1 :(得分:1)
这里有很多要纠正的地方,但是你特别关注的是,“循环”没有继续进行第二和第三个“步骤”,那是因为你正在考虑这个错误。在if / else if / else代码块中,一次只执行一个块,而其他块则不执行。例如,如果用户提交了一个号码,我们可以通过以下方式告诉他们它是偶数还是奇数:
if($_GET['number'] % 2 == 0){
echo "That's even!";
} else {
echo "That's odd!";
}
您正在尝试进行一次检查,然后进行另一次检查,然后进行第三次检查。在这种情况下,你想嵌套你的条件(if语句),而不是让它们一个接一个地出现,如下所示:
if(/* first, basic sanity check*/) {
if(/* second, more complex check */) {
if(/* final check */) {
// Database update
} else {
// Failed final check
}
} else {
// Failed second check
}
} else {
// Failed basic check
}
您的代码的其他一些评论:
isset($_POST['variable'])
之前使用$_POST['variable']
,否则您将收到错误消息。一个想法是使用如下行:$address = isset($_POST['address']) ? $_POST["add"] : '';
- 如果您不知道该表示法,则可以将$address
设置为$_POST
数组中的值或''
如果它没有设置。$email
和$contact
,而不是重新调用$_POST
变量 - 它们是更清晰,更短的变量名称。$con = ...
),稍后不要像在此处那样创建第二个连接。$q2=mysql_query("SELECT ...")
但是您也应该传递您构建的连接,
$q2=mysql_query("SELECT ...",$con)
。