【发布时间】:2015-06-13 14:05:06
【问题描述】:
我正在做一个项目,但我卡在了注册页面上。我想验证是否:
- 手机号码已存在。
- 用户名已存在。
- 电子邮件 ID 已存在。
目前在我的代码中,我添加了对手机号码的验证,并且工作正常。但是用户名和电子邮件部分我不明白如何实现它。请帮我解决我的问题。
这是我的代码。
<?php
$msg = '';
if(isset($_POST['register']))
{
$uname = (!empty($_POST['username']))?$_POST['username']:null;
$pass = (!empty($_POST['pass']))?$_POST['pass']:null;
$cpass = (!empty($_POST['cpass']))?$_POST['cpass']:null;
$fname = (!empty($_POST['fname']))?$_POST['fname']:null;
$lname = (!empty($_POST['lname']))?$_POST['lname']:null;
$email = (!empty($_POST['email']))?$_POST['email']:null;
$mobile = (!empty($_POST['mobile']))?$_POST['mobile']:null;
if($uname == '' || $pass == '' || $cpass == '' || $fname == '' || $lname == '' || $email == '' || $mobile == ''){
$msg = "<font color='red'>Fields cannot be empty</font>";
}else if(strlen($uname)<5){
$msg = "<font color='red'>Username must be at least 5 characters long</font>";
}else if(strlen($pass)<6 && strlen($cpass)<6){
$msg = "<font color='red'>Password must be at least 6 characters long</font>";
}else if($pass != $cpass){
$msg = "<font color='red'>Passwords are not matching</font>";
}else if(!is_numeric($mobile)){
$msg = "<font color='red'>Mobile number should contain only numbers</font>";
}else if(strlen($mobile)<10){
$msg = "<font color='red'>Mobile number should be at least 10 characters long</font>";
}else{
$query = "SELECT user_mobile FROM user_reg WHERE user_mobile = '".$mobile."'";
$query1 = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($query1);
$row = mysql_fetch_array($query1);
if($num_rows > 0)
{
$msg = "<font color='red'>Mobile number already exists. Please try again...</font>";
}
else{
$str = "INSERT INTO user_reg(user_email, user_uname, user_pass, user_fname, user_lname, user_mobile)VALUES('$email','$uname','$pass','$fname','$lname','$mobile')";
$sql = mysql_query($str) or die(mysql_error());
if($sql){
$msg = "<font color='green'>Regstration successfull. Please Login to use your account.</font>";
}else{
$msg = "<font color='red'>Sorry.. There are some errors. Please fix them before you continue.</font>";
}
}
}
}
?>
HTML 部分。
<div class="reg-box"><br />
<center>
<?php echo $msg; ?>
</center>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div>
<label>Username</label>
<input type="text" name="username" value="" class="a-text" />
</div>
<div>
<label>Password</label>
<input type="password" name="pass" value="" class="a-text" />
</div>
<div>
<label>Confirm Password</label>
<input type="password" name="cpass" value="" class="a-text" />
</div>
<div>
<label>First Name</label>
<input type="text" name="fname" value="" class="a-text" />
</div>
<div>
<label>Last Name</label>
<input type="text" name="lname" value="" class="a-text" />
</div>
<div>
<label>Email</label>
<input type="email" name="email" value="" class="a-text" />
</div>
<div>
<label>Mobile</label>
<input type="text" name="mobile" value="" class="a-text" maxlength="10" />
</div>
<input type="submit" name="register" value="Register" class="button" id="button-left" />
</form>
</div>
我应该怎么做添加用户名和电子邮件验证?请朋友们帮帮我。
【问题讨论】:
-
您不能使用与移动设备相同的验证吗? "SELECT username FROM user_reg WHERE username = '".$uname."'"
-
是的,我可以..这是唯一的方法,但我的问题是如何再次使用该代码,因为我不能使用任何 if...else 那里,因为它已经在 else 语句中...那里我不能再次应用它......这就是问题......我知道要实施什么,但我对如何实施它感到困惑......
-
您可以使用此代码进行 SQL 注入。您应该分别检查每个字段并附加
$msg。目前,如果用户在每个领域都有问题,他们需要提交 6 次表单才能解决。我对I cant use any if...else there感到困惑,你为什么不能? -
你能告诉我如何在此处添加该代码以检查用户名和密码吗?以及如何打开 sql 注入?
-
看到这个,php.net/manual/en/security.database.sql-injection.php。每当您将用户输入直接传递到您的 SQL 中时,您都会对 SQL 注入持开放态度。您可以使用php.net/manual/en/function.mysql-real-escape-string.php,但请阅读顶部的警告并考虑切换到 PDO 或 mysqli_ 函数。您正在尝试检查用户名是否唯一?你想用无效的密码检查什么?您也不应该以纯文本形式存储密码。 php.net/manual/en/faq.passwords.php
标签: javascript php jquery html mysql