2012-09-11 29 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(); 
    }