1

我正在使用 php 和 mysql 创建一个注册表单,我想检查所需的字段是否为空,但问题是如果用户名字段为空,我只会收到一条错误消息,而不会显示其他错误消息,任何人都可以帮助我有这个问题??

注册.php

<!--<?php require_once('for members/scripts/global.php');?>--> 
<?php 
$message = "";
if(isset($_POST['username'])){
  $username = $_POST['username'];
  $fname = $_POST['fname'];
  $lname = $_POST['lname'];
  $email = $_POST['email'];
  $pass1 = $_POST['pass1'];
  $pass2 = $_POST['pass2'];
  $bdate = $_POST['birthdate'];
  $phone = $_POST['phonenumber'];
  $country = $_POST['country'];
  $local_adress = $_POST['adress'];
  @$specialization = $_POST['specialisation'];


  //error handeling
  if((!$username)||(!$fname)||(!$lname)||(!$email)||(!$pass1)||(!$pass2)||(!$bdate)||(!$phone)||(!$country)||(!$local_adress)||(!$specialization)){
  $message = "please insert all fields below";

 if($username == "")
 {
      $message = "Enter User Name";
 }
 if($fname = "")
 {
     $message = "Enter First name";
 }
 if($email = "")
 {
     $message = "Enter Email Adress";
 }
  if($pass1 = "")
 {
     $message = "Enter password";
 }
  if($pass2 = "")
 {
     $message = "rechek the password ";
 }


 } 
   else if($pass1!=$pass2){
   $message = "your password do not match!";
   }else{
   //securing the data
   $username = preg_replace("#[^0-9a-z]#i","",$username);
   $fname = preg_replace("#[^0-9a-z]#i","",$fname);
   $lname = preg_replace("#[^0-9a-z]#i","",$lname);
   $pass1 = sha1($pass1);

   $email = mysql_real_escape_string($email);
   // checking for duplicate
   $user_query = mysql_query("SELECT username FROM members WHERE username = '$username'LIMIT 1") or die("could not check the username");
   $count_username = mysql_num_rows($user_query);

    $email_query = mysql_query("SELECT email FROM members WHERE email = '$email'LIMIT 1") or die("could not check the username");
   $count_email = mysql_num_rows($email_query);

    if($count_username > 0){
     $message = " your username is alredy in use";
    }elseif($count_email > 0){
      $message = "your email is alredy in use";
    }else{
      // insert the members
      $ip_adress = $_SERVER['REMOTE_ADDR'];
      $query = mysql_query("INSERT INTO members(username, firstname, lastname, email, password, ip_adress, sign_up_date)VALUES('$username', '$fname', '$lname', '$email', '$pass1', '$ip_adress',  now())")or die("could not insert data"); 
    $member_id = mysql_insert_id();
    mkdir("users/$member_id",0755);
    $message = "you have  now been registered";
    header("Location: home.php");
    }
   }
 }





?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Register Page</title>
<link href="style/stylesheet.css"rel="stylesheet" type="text/css"/>
</head>

<body>
<div id="visitorHeader">
<img src="web_header copy.jpg" alt="visitor header" />
</div>
<div class="container center"> 
<p><?php print("$message")?></p>
<table width="280" border="1" align="center">
<form action="register.php" method="post">
<tr>
<td><label for="username"><span class="Fields">User Name</span> <span class="requiredField">*</span></label></td>
<td>
<input type="text" name="username" placeholder="Username" /><br /></td>
</tr>
<tr>
<td><label for="firstname"><span class="Fields">First Name</span> <span class="requiredField">*</span></label></td>
<td>
<input type="text" name="fname" placeholder="Firstname" /><br /></td>
</tr>
<tr>
<td><label for="lasttname" class="Fields">Last Name</label></td>
<td>    
<input type="text" name="lname" placeholder="Lastname" /><br /></td>
</tr>
<tr>
<td><label for="birthdate" class="Fields">Birth Date</label></td>
<td>
<input type="date" name="birthdate" value= "YYYY_MM_DD"  onfocus="if (this.value == 'YYYY_MM_DD') {this.value = '';}" onblur="if (this.value == '') {this.value = 'YYYY_MM_DD';}" /><br /></td>
 </tr>
 <tr>
 <td class="Fields"><label for="phonenumber">Phone Number</label>
 <td>
 <input type="tel" name="phonenumber" value="000-0-000 000" onfocus="if (this.value == '000-0-000 000') {this.value = '';}" onblur="if (this.value == '') {this.value = '000-0-000 000';}" /></td>
</tr>
<tr>
<td class="Fields"><label for="country">Country</label></td>
<td> 
<select name="country" id="country"><option selected=>please choose coutry<option>lebanon<option>Us<option>europe 
    </select></td>
</tr>
<tr>
<td class="Fields"><label for="adress">Local Adress <span class="requiredField">*</span></label></td>
<td>
<input type="text" name="adress" placeholder="adress" /></td>
</tr>
<tr>
<td class="Fields"><label for="specialisation">Specialisation <span class="requiredField">*</span></label></td>
<td>
<select name="specialisation" id="specialisation">
    </select></td>
    </tr>

<tr>
<td class="Fields"><label for="email">Email Adress<span class="requiredField">*</span></label></td>
<td>
<input type="text" name="email" placeholder="Email Adress" /><br /></td>
</tr>
<tr>
<td class="Fields"><label for="password">Password<span class="requiredField">*</span></label></td>
<td>
<input type="password" name="pass1" placeholder="Password" /><br /></td>
</tr>
<tr>
<td class="Fields"><label for="password2">Re_Password<span class="requiredField">*</span></label></td>
<td>
<input type="password" name="pass2" placeholder="Validate Password" /><br /></td>
</tr>
<tr>
<td>
<input type="submit" value="Register"/>
</td>

</tr>
</form>
</table>
</div>
</body>
</html>
4

1 回答 1

1

您只收到一条错误消息而不是所有错误消息的一个原因是因为您$message每次遇到新错误时都会覆盖该变量。为此,请将字符串附加到错误消息中:

if ($username == "") {
    $message = $message . "Enter User Name<br/>";
}

至于为什么用户名是唯一一个创建错误消息的人,这是因为您=在另一个 if 语句上使用了一个,如果我没记错的话,它返回分配的值,在这种情况下它是一个空字符串,它评估为假。你需要做:

 if($fname == "")
 {
     $message = $message . "Enter First name<br/>";
 }
 if($email == "")
 {
     $message = $message . "Enter Email Adress<br/>";
 }
  if($pass1 == "")
 {
     $message = $message . "Enter password<br/>";
 }
  if($pass2 == "")
 {
     $message = $message . "rechek the password <br/>";
 }

编辑更改$message .= "..."为,$message = $message . "..."因此更清楚的是我们正在附加到字符串,并<br/>在消息中添加了标签,因为$message正在打印在 html 中。

于 2013-03-06T18:07:30.260 回答