2015-01-09 58 views
0

我有一個簡單的登錄表單,如果一切都正確,我只想重定向到'login.php'。我怎樣才能做到這一點?目前它每次按下提交按鈕時都會將您重定向到「login.php」,即使我已經使用PHP進行表單驗證。我對此很陌生,對我來說很裸露。感謝提前:)如何使此登錄表單動態重定向?

***所有的HTML設置了正確的,我只是覺得沒有必要將它添加在

的functions.php:

function db_connect() { 

    define("DB_SERVER", "localhost"); 
    define("DB_USER", "user"); 
    define("DB_PASS", "password"); 
    define("DB_NAME", "database"); 

    $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME); 

    mysqli_select_db("database"); 

} 

開始

<?php 

    session_start(); // Starts the session for login 
    require_once 'functions.php'; // This has the functions for the login process 

?> 

中的文件:

<?php 

     $form = "<form action='login.php' method='post'> 
        <table> 

         <tr> 
          <td>Username:</td> 
          <td><input type='text' name='user' /></td> 
         </tr> 
         <tr> 
          <td>Password:</td> 
          <td><input type='password' name='password' /></td> 
         </tr> 
         <tr> 
          <td></td> 
          <td><input type='submit' name='login_btn' value='Login' /></td> 
         </tr> 

        </table> 
       </form>"; 

     if ($_POST['login_btn']) { 

      $user = $_POST['user']; 
      $password = $_POST['password']; 

      if ($user) { 

       if ($password) { 

        db_connect(); 

         $password = md5(md5("dF83sDFJ9f8" . $password . "ugj483DAhD2")); 

         $query = mysqli_query("SELECT * FROM user WHERE username='" . $user . "'"); 
         $numrows = mysqli_num_rows($query); 
         // Checks to see which form rows have data 

         // If the username is entered (if there is 1 piece of data in $numrows) 
         if ($numrows == 1) { 
          $row = mysqli_fetch_assoc($query); 
          $db_id = $row['id']; 
          $db_user = $row['username']; 
          $db_pass = $row['password']; 
          $db_active = $row['active']; 

          if ($password == $db_pass) { 

           if ($db_active == 1) { 

            $_SESSION['userid'] = $db_id; 
            $_SESSION['username'] = $db_user; 

            echo "You have been logged in as <b>" . $db_user . "</b>"; 

           } else { 
            echo "You must activate your account to login " . $form; 
           } 

          } else { 
           echo "Incorrect password " . $form; 
          } 

         } else { 
          echo "Incorrect username " . $form; 
         } 

        mysqli_close(); 

       } else { 
        echo "You must enter your password " . $form; 
       } 

      } else { 
       echo "You must enter your username " . $form; 
      } 

     } else { 

      echo $form; 

     } 

    ?> 
文檔
+0

如果一切不正確,你想發生什麼?您無法僅使用服務器端代碼(PHP)停止提交到服務器;例如,你需要使用Javascript來禁用提交按鈕。 – vicvicvic

+0

看看這個:http://stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php – Neat

+0

使用JavaScript來驗證您的表單,讓它提交或不 –

回答

0

我不明白。由於action屬性,您的表單將自動提交到login.php。如果您不想使用JavaScript進行表單驗證,請將表單操作屬性更改爲$_SERVER['PHP_SELF']。它會自行提交數據,當一切正常時,您給它一個header("Location: login.php");echo<meta http-equiv="refresh" content="0; url=login.php">。我希望它有幫助。

+0

對不起,但我是新來的,不知道如何實現, – dspacejs

+0

@mightyspaj什麼是PHP文件調用?這不是login.php的權利?你定義表單變量的那個。它不是,那麼你只需要:'$ form =「

',將它改爲:'$ form =」'和here:'echo」您已經登錄爲「。 $ db_user。 「」;'你這樣做:'echo「你已經登錄爲」。 $ db_user。 「;'元標記會在」content「屬性中定義的秒數之後將您重定向到login.php。 –