使用javascript警告框进行PHP表单验证

时间:2014-11-16 17:23:15

标签: php forms

您好我是PHP的新手,我正在尝试提交注册表单,但它运行正常,但问题是当它出现一些错误,例如用户名已经存在或密码太短而不在警告框中然后重新加载表单再次页面,用户必须再次填写整个表单我希望正确的字段保持不变

这是表单页面代码

<!DOCTYPE HTML> 
<html> 
    <head> 
        <title>Details</title> 
        <link rel="stylesheet" type="text/css" href="reg.css">
    </head> 
        <body id="body"> 
            <div id="mmw"> <span> MAP MY WAY </span></div>
            <form name="reg" id="reg" method="post" action="insert.php">
        <h2>Kindly fill up your Information</h2>
        <p>
    <input name="username" required class="name" placeholder="Type Your User name" />
        <input name="password" placeholder="Type Your Password" class="name" type="password" required />
            <input name="first_name" required class="name" placeholder="Type Your First name" />
            <input name="last_name" required class="name" placeholder="Type Your Last name" />
            <input name="email" required class="email" placeholder="Type a valid E-Mail address" />
            <input name="m_no" class="name" placeholder="Type Your Mobile #"/>
            <input name="v_name" required class="name" placeholder="Type Your Vahical model and name"/>
            <input name="capacity" required class="name" placeholder="Seating capacity"/>
            <input name="fuel_type" required class="name" placeholder="Runs on what fuel type"/>
    </p>



        <p>
            <input name="submit" class="btn" type="submit" value="Register" />
        </p>
        </form>

            </div> 
        </body> 
</html>

这是处理数据的页面

 <?php
  $con = mysqli_connect("localhost", "root", "", "map_my_way");
  // Check connection
  if (mysqli_connect_errno()) {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  // escape variables for security
  $username = mysqli_real_escape_string($con, $_POST['username']);
  $password = mysqli_real_escape_string($con, $_POST['password']);
  $first_name = mysqli_real_escape_string($con, $_POST['first_name']);
  $last_name = mysqli_real_escape_string($con, $_POST['last_name']);
  $email = mysqli_real_escape_string($con, $_POST['email']);
  $m_no = mysqli_real_escape_string($con, $_POST['m_no']);
  $v_name = mysqli_real_escape_string($con, $_POST['v_name']);
  $fuel_type = mysqli_real_escape_string($con, $_POST['fuel_type']);
  $capacity = mysqli_real_escape_string($con, $_POST['capacity']); 


 $exists = mysqli_num_rows(mysqli_query($con,"SELECT * FROM members WHERE username='" . $username . "'"));
 if ($exists > 0) {


echo "<script language=\"JavaScript\">\n";
echo "alert('username already exists!');\n";
echo "window.location='reg.php'";
echo "</script>";

 } 

if (strlen ($password) < 6){

            echo "<script language=\"JavaScript\">\n";
            echo "alert('password must be 6 characters');\n";
            echo "window.location='reg.php'";
            echo "</script>";

 }
 else{

 // if ($password < 6) {
 // echo "<script language=\"JavaScript\">\n";
 // echo "alert('username already exists!');\n";
 // echo "window.location='reg.php'";
 // echo "</script>";

 // } else{

 //insert query
 $sql = "INSERT INTO members (username, password, first_name, last_name, email, m_no, v_name, fuel_type, capacity)
 VALUES ('$username', '$password', '$first_name', '$last_name', '$email', '$m_no', '$v_name', '$fuel_type', '$capacity')";  
 }
 //}    
 if (!mysqli_query($con, $sql)) {
    die('Error: ' . mysqli_error($con));

 }  
    else{
    header("location:pic.php");
    }



  // Register $username
   session_start();
   $_SESSION['login'] = true;
   $_SESSION['username'] = $username;

   mysqli_close($con);
   ?>

提前致谢

1 个答案:

答案 0 :(得分:0)

标题('位置:http://example.com/some/url');用javascript替换它

还尝试为转义字符串创建一个函数,减少输入:

function security($danger) {

mysqli_real_escape_string($con, $danger)}

只需使用像$ username = security($ _ POST ['username'])

这样的用户名来调用它