2012-09-11 52 views
0

我有這個頁面,當打開時只是讀取一些會話變量,並將它們分配給新的變量,然後取消它們,我這樣做,所以他們不能被轉移到另一個頁面。這一切都很好。提交按鈕正在運行會話驗證,而不是

但是,我也有一個表單在同一頁上的提交按鈕。出於某種原因,當我按提交按鈕時,它沒有完成它應該的查詢,只是重用了會話檢查代碼。這是因爲會話變量未設置,然後未通過驗證。

爲什麼重新運行該會話驗證和不運行我的提交按鈕的代碼/

這是在頁面的最頂端的會話驗證,並且是出於某種原因是重新運行該代碼對提交按鈕點擊

$ahid=""; 
    $bid=""; 
    $np=""; 
    $nt=""; 

if (isset($_SESSION['ahid'])) { 

      $ahid = $_SESSION['ahid']; 
      unset($_SESSION['ahid']); 
      if (isset($_SESSION['bid'])) { 

       $bid = $_SESSION['bid']; 
       unset($_SESSION['bid']); 
       if (isset($_SESSION['nt'])) { 

         $nt = $_SESSION['nt']; 
         unset($_SESSION['nt']); 
         if (isset($_SESSION['np'])) { 


          $np = $_SESSION['np']; 
          unset($_SESSION['np']); 
         }else{ 
            header('Location: builders.php?hi=1'); 
            exit(); 
           } 
       }else{ 
          header('Location: builders.php?hi=2'); 
          exit(); 
         } 
     }else{ 
        header('Location: builders.php?hi=3'); 
        exit(); 
       } 
    }else{ 
       header('Location: builders.php?hi=4'); 
       exit(); 
      } 

這是提交時應該運行按鈕的代碼,而是甚至沒有觸及

if(isset($_POST['build_chk_finish'])){ 

     $construction_insert = mysql_query("INSERT INTO construction (user_id, estate_id, addon_h_id, builder_id, con_total_price, con_total_time, con_time_started, con_time_ending, con_completed) 
    VALUES('$user_id', '$estate_id', '$ahid', '$bid', '$np', '$nt', now(), '$future_date', '0')", $general) 
    or die (mysql_error()); 

    $construction_id = mysql_insert_id(); 

    $con_error=""; 
    $con_error = "Congratualtions! Your Builder has been hired and has begun work."; 
      $_SESSION['error'] = $con_error; 
      header("Location: houses.php"); 

    } 

只是爲了補充信息,我按下提交按鈕,它在第一次會話驗證builders.php?hi=4上失敗。

這裏是提交按鈕

<input name="build_chk_finish" type="submit" class="build_chk_finish" id="bc_submit"/>

+0

所以,就讓我和你談談SQL注入.. – dbf

+0

@dbf由於這僅僅是腳本的一部分,使用你怎麼可能是肯定的變量在查詢中沒有正確逃脫? – Jocelyn

+0

@Jocelyn,讓我只是說我有一個非常大的感覺,那些變量是沒有逃脫的。其次,任何有一點知識的人都會早已拋棄了mysql_ *年齡.. – dbf

回答

1

據我瞭解,執行該早午餐:

}else{ 
     header('Location: builders.php?hi=4'); 
     exit(); 
} 

當它不應該,因爲我明白了。但看看分支機構。當$ _SESSION ['ahid']沒有設置時,任何時候都會執行上面的代碼。這是因爲其他有關if (isset($_SESSION['ahid'])) {

if (isset($_SESSION['ahid'])) { 
     ....// a lot of other if statements here 
    }else{ 
      header('Location: builders.php?hi=4'); 
      exit(); 
    }