2013-10-08 49 views
1

我是新來php驗證。我正在處理註冊表單,該表單將通過php腳本檢查兩個不同的變量ac_titleemail,然後檢查錯誤。它會將給定的值插入到數據庫中。文件名是formvu.php然後它將移動到activate.php。我得到的問題是,如果我使用提交按鈕不首先檢查php腳本。

<form name="fone" method="post" onsubmit="return validateform(fone)" action="activate.php"> 

表單將忽略php腳本,它將移動到下一頁。 Buh當我用這個:

<form name="fone" method="post" onsubmit="return validateform(fone)" action="<?php $_SERVER['PHP_SELF']?> "> 

現在頁面它會運行整個php錯誤和命令。

這是我整個的PHP代碼:

<?php 
    if($_SERVER["REQUEST_METHOD"] == "POST") 
    { 
     $nun=$_POST['account']; 
     $em=$_POST['email']; 
     $register="SELECT ac_title,email FROM register"; 
     $query=mysql_query($register); 
     while ($row= mysql_fetch_array($query)) 
     { 
      if ($nun == $row['ac_title']) 
      { 
       print "<span class=\"phclass\"><br/><b> 
        Your Account Title :</b></span>"." '"."<span class=\"ahclass\"><b>$nun</b></span>"."'". 
        " <span class=\"phclass\"><b>already exsist, please choose different.</b></span><br/>"; 
      } 

      if($em == $row['email']) 
      { 
       print "<span class=\"phclass\"><b><br/>Your Email:</b> 
        </span>"." "."<span class=\"phclass\"><b> $em</b></span>"."<span class=\"phclass\"> 
        <b> already exsist, please visit <a href=\"resetpassword.html\"> 
        Forget password</a></b></span><br/>"; 
      } 
      if ($nun != $row['ac_title'] && $em != $row['email']) 
      { 
       $ac_title=$_POST['account']; 
       $email=$_POST['email']; 
       $pass=$_POST['pwd']; 
       $fn=$_POST['fname']; 
       $gd=$_POST['gender']; 
       $city=$_POST['city']; 
       $VID=$_POST['vuid']; 
       $course=$_POST['courseid']; 
       $camp=$_POST['campus']; 
       $hash=md5(rand(0,1000)); 

       $sql="INSERT INTO register (ac_title, email, pass,fn, sex, city, 
        VID, CRS, campus, hash,activate) VALUES('$ac_title', '$email', 
        '$pass','$fn', '$gd',' $city','$VID','$course', 
        '$camp','$hash','0')"; 

       $inst=mysql_query($sql,$connection); 

       if (!$inst) 
       { 
        print ""; 
       } 
       else 
       { 
        echo "Succesful "; 
       } 
      }// if 
     } // while 
    } // if 
?> 

如果操作爲默認頁面它將運行整個腳本。我想運行整個腳本並轉到下一頁(activate.php)。

+2

檢查[頭](http://php.net/manual/en/function.header.php)重新定位腳本的功能(請注意,NOTHING可以輸出 - 也就是說,在重定向之前不必寫HTML) –

+0

ic hecked header()它給了我錯誤,我發佈了...意味着我需要發佈該PHP腳本之前,我的html編碼 –

+1

正是我爲什麼把大寫字母「NOTHING」 - 你在調用'header之前輸出HTML ()'在你的頁面上的某處。不要這樣做,移動你的PHP處理部分高於你的第一個''標籤,並使用帕特里克的代碼重定向 –

回答

1

成功時您想重定向嗎?如果是添加以下代碼,你回聲「成功」是:

header("Location: activate.php"); 
die(); 

對重定向的更多信息,請here

+0

您好thankx回答我也做過頭文件功能,但瀏覽器是通過我這個錯誤「警告:無法修改頭文件信息 - 頭文件已經在F:\ xampp \ htdocs \ ourwork \ proper pages \ formvu中輸出(輸出開始於F:\ xampp \ htdocs \ ourwork \ proper pages \ formvu.php:7) 88行上的.php「 –

+0

這意味着你在標題調用之前有某處輸出。它可以像空間一樣簡單。請確保您檢查了所有包含文件中的<?php標記之前沒有空格,並且不要使用結束標記?>。 – Patrick

+0

錯誤無法修改頭文件信息 - 在F:\ xampp \ htdocs \ ourwork \ proper pages \ formvu.php上已經發送了頭文件(輸出開始於F:\ xampp \ htdocs \ ourwork \ proper pages \ databaseregistration.php:9)第52行databaseregisration.php只是用於連接數據庫的mysql命令 –

1

驗證是一個複雜的問題,但也有大量的在線資源可以幫助您。這對我來說是一個早期的谷歌:http://www.sitepoint.com/form-validation-with-php/

雖然你可以使用JS(你似乎正在做的)添加表單驗證,如果你希望它更安全,我會建議驗證數據服務器端(PHP)和提供的鏈接應該在這裏幫助你。

我意識到這個答案並不直接回答你的問題,但如果你對簡單的驗證技術更熟悉,你可能不會在第一個問題。

+0

是的所有字段都使用JavaScript FOr基本要求如空或電子郵件或密碼驗證我需要檢查數據庫的ACOUNT標題和電子郵件,然後移動插入然後到下一頁的激活(帽是提及它沒有什麼否則....我會檢查鏈接肯定) –

+1

Javascript可以輕鬆繞過,而服務器端驗證不能。客戶端驗證確實具有優勢,但安全性不是其中之一。 – tommyd456

1

你應該檢查你的電子郵件和用戶名

使用我

<?php 
//Start session 
session_start(); 

//Array to store validation errors 
$errmsg_arr = array(); 

//Validation error flag 
$errflag = false; 

//Input Validations 
if($firstname == '') { 
    $errmsg_arr[] = 'First name missing'; 
    $errflag = true; 
} 
if($lastname == '') { 
    $errmsg_arr[] = 'Last name missing'; 
    $errflag = true; 
} 
if($email == '') { 
    $errmsg_arr[] = 'Email missing'; 
    $errflag = true; 
} 
if($username == '') { 
    $errmsg_arr[] = 'Username ID missing'; 
    $errflag = true; 
} 
if($password == '') { 
    $errmsg_arr[] = 'Password missing'; 
    $errflag = true; 
} 
if($cpassword == '') { 
    $errmsg_arr[] = 'Confirm password missing'; 
    $errflag = true; 
} 
if(strcmp($password, $cpassword) != 0) { 
    $errmsg_arr[] = 'Passwords do not match'; 
    $errflag = true; 
} 

//Check for duplicate email 
if($email != '') { 
    $qry = "SELECT * FROM ".$table." WHERE email='$email'"; 
    $result = mysql_query($qry); 
    if($result) { 
     if(mysql_num_rows($result) > 0) { 
      $errmsg_arr[] = 'Email have already in Using!'; 
      $errflag = true; 
     } 
     @mysql_free_result($result); 
    } 
    else { 
     die("Query failed"); 
    } 
} 

//Check for duplicate login ID 
if($login != '') { 
    $qry = "SELECT * FROM ".$table." WHERE login='$login'"; 
    $result = mysql_query($qry); 
    if($result) { 
     if(mysql_num_rows($result) > 0) { 
      $errmsg_arr[] = 'User-Name already in Using!'; 
      $errflag = true; 
     } 
     @mysql_free_result($result); 
    } 
    else { 
     die("Query failed"); 
    } 
} 

//If there are input validations, redirect back to the registration form 
if($errflag) { 
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
    session_write_close(); 
    header("location: register-form.php"); 
    exit(); 
} 

//Create INSERT query 
$qry = "INSERT INTO members(firstname, lastname, email, username, password) VALUES('$firstname','$lastname','$email','$username','$password')"; 
$result = @mysql_query($qry); 

//Check whether the query was successful or not 
if($result) { 
    header("location: register-success.php"); 
    exit(); 
}else { 
    die("Query failed"); 
} 
    ?> 

此代碼中使用數組,也爲您在註冊使用此代碼頁

<?php 
//Start Session 
session_start(); 
if(isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0) { 
    echo '<ul class="err">'; 
    foreach($_SESSION['ERRMSG_ARR'] as $msg) { 
     echo '<li>',$msg,'</li>'; 
    } 
    echo '</ul>'; 
    unset($_SESSION['ERRMSG_ARR']); 
} 
?> 
+1

你的腳本很好,但是你的代碼與這個問題代碼沒有可比性?我希望你能得到答案! – Softbazz