变量失去价值

时间:2011-09-21 01:51:05

标签: php variables

我查看了堆栈的问题和答案,但没有看到任何我可以在这里直接申请的内容。也许我只是错过了一些东西。

下面的代码工作正常,除非我包含引用$ wp_user_id变量值的where语句。

我已经检查过,在加载脚本时,变量IS实际上是用$ user_id填充的。看来这个变量的值在调用conManager函数后立即丢失,但我不明白为什么。 ConnectionManager.php文件(定义了conManager函数)中似乎没有任何东西可以触及这个变量,所以我很茫然。

我是一个PHP黑客,所以对我很轻松,但是什么导致我失去变量的价值,我该如何解决?这是代码:

<?php
include_once("/home/evaluate/public_html/admin/php/ConnectionManager.php");
header('Content-type:text/javascript;charset=UTF-8');

$wp_user_id = $_GET["user"];

$json1=json_decode(stripslashes($_POST["_gt_json"]));
$pageNo = $json1->{'pageInfo'}->{'pageNum'};
$pageSize = $json1->{'pageInfo'}->{'pageSize'};


if(isset($json1->{'sortInfo'}[0]->{'columnId'})){
    $sortField = $json1->{'sortInfo'}[0]->{'columnId'};
}
else{
    $sortField = "miles_on_oil";
}    

if(isset($json1->{'sortInfo'}[0]->{'sortOrder'})){
    $sortOrder = $json1->{'sortInfo'}[0]->{'sortOrder'};
}
else{
    $sortOrder = "ASC";
}    

if($json1->{'sortInfo'}[0]->{'sortOrder'} == "defaultsort"){
    $sortField = "miles_on_oil";
    $sortOrder = "ASC";
}


 if($json1->{'filterInfo'}[0]->{'value'} != "") {

for ($i = 0; $i < count($json1->{'filterInfo'}); $i++) {
    if($json1->{'filterInfo'}[$i]->{'logic'} == "equal"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . "='" . $json1->{'filterInfo'}[$i]->{'value'} . "' ";
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "notEqual"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . "!='" . $json1->{'filterInfo'}[$i]->{'value'} . "' ";    
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "less"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . "<" . $json1->{'filterInfo'}[$i]->{'value'} . " ";
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "lessEqual"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . "<=" . $json1->{'filterInfo'}[$i]->{'value'} . " ";    
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "great"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . ">" . $json1->{'filterInfo'}[$i]->{'value'} . " ";
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "greatEqual"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . ">=" . $json1->{'filterInfo'}[$i]->{'value'} . " ";        
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "like"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . " LIKE '%" . $json1->{'filterInfo'}[$i]->{'value'} . "%' ";        
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "startWith"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . " LIKE '" . $json1->{'filterInfo'}[$i]->{'value'} . "%' ";        
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == "endWith"){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . " LIKE '%" . $json1->{'filterInfo'}[$i]->{'value'} . "' ";                
    }elseif($json1->{'filterInfo'}[$i]->{'logic'} == ""){
        $filter .= $json1->{'filterInfo'}[$i]->{'columnId'} . " LIKE '%" . $json1->{'filterInfo'}[$i]->{'value'} . "' ";    
        }            
    $filter .= " AND ";

}
}

else {
    $filter = '';
    }


//print_r ($json1);
//die;



// Temp TEsting Values



// End Temp Testing Values



$conManager = new ConManager();
$conManager->getConnection();


 if($json1->{'action'} == 'load'){



//to get how many records totally.
$sql = "select count(*) as cnt from oil_analysis_data where $filter user_id = '".$wp_user_id."'";
$handle = mysql_query($sql);
$row = mysql_fetch_object($handle);
$totalRec = $row->cnt;



$sql2 = "select * from oil_analysis_data where $filter user_id = '".$wp_user_id."' ORDER BY " . $sortField . " " . $sortOrder . " limit " . ($pageNo - 1)*$pageSize . ", " . $pageSize;
  $handle2 = mysql_query($sql2);

  $retArray2 = array();

while($row2 = mysql_fetch_assoc($handle2)) {

//    Grab Vehicle Make, Model & Year "Names" from their respective tables & insert into the array

         $year = "select Name from vehicle_data_years where ID =  {$row2['list1']}";
         $year1 = mysql_query($year);
         $year2 = mysql_fetch_assoc($year1); 
         $year3 = $year2['Name'];

         $make = "select Name from vehicle_data_makes where ID =  {$row2['list2']}";
         $make1 = mysql_query($make);
         $make2 = mysql_fetch_assoc($make1); 
         $make3 = $make2['Name'];

         $model = "select Name from vehicle_data_all where ID =  {$row2['list3']}";
         $model1 = mysql_query($model);
         $model2 = mysql_fetch_assoc($model1); 
         $model3 = $model2['Name'];

    $row2['list1'] = $year3;
    $row2['list2'] = $make3; 
    $row2['list3'] = $model3; 

// Grab Motor oil Viscosity, Brand & Product "Names" from their respective tables & insert into the array

         $visc = "select name from viscosity where id =  {$row2['viscosity']}";
         $visc1 = mysql_query($visc);
         $visc2 = mysql_fetch_assoc($visc1); 
         $visc3 = $visc2['name'];

         $brand = "select brandname from oil_brand where brandid =  {$row2['brand']}";
         $brand1 = mysql_query($brand);
         $brand2 = mysql_fetch_assoc($brand1); 
         $brand3 = $brand2['brandname'];

         $product = "select product_name from oil_data where id =  {$row2['product']}";
         $product1 = mysql_query($product);
         $product2 = mysql_fetch_assoc($product1); 
         $product3 = $product2['product_name'];


    $row2['viscosity'] = $visc3;
    $row2['brand'] = $brand3; 
    $row2['product'] = $product3; 


    if($row2['bypass_filtration'] == 1) {

        $row2['bypass_filtration'] = "<img src='http://themotoroilevaluator.com/admin/php/crud/images/checkmark.png' style='border: 0px;'>";
        }

    else {$row2['bypass_filtration'] = "";
        }

    if($row2['oil_change'] == 1) {

        $row2['oil_change'] = "<img src='http://themotoroilevaluator.com/admin/php/crud/images/checkmark.png' style='border: 0px;'>";
        }

    else {$row2['oil_change'] = "";
        }

    $retArray[] = $row2;



    }

$analysis_data = json_encode($retArray);

$ret = "{data:" . $analysis_data .",\n";
$ret .= "pageInfo:{totalRowNum:" . $totalRec . "},\n";
$ret .= "recordType : 'object'}";
echo $ret;


}



?>

3 个答案:

答案 0 :(得分:2)

我很好奇,你为什么要在$wp_user_id;之后添加一个半结肠?我注意到你在不止一个地方这样做。这可能是罪魁祸首。

$filter user_id = '".$wp_user_id;."'";

答案 1 :(得分:0)

没关系。看来我的问题实际上是由于我忘记了代码的变化。我将$ _REQUEST ['user']更改为$ _GET ['user'],认为在这种情况下,因为该值是作为URL查询字符串传递的,所以这不会有问题。

说实话,我仍然不完全确定为什么会有所作为 - 尽管我可以自己研究。但是,无论如何,改变这一点完全纠正了我的问题。

感谢那些回应的人。即使不能解决我的实际问题,两者的信息也非常有用。

答案 2 :(得分:-1)

由于您使用直接用户提供的数据构建S​​QL查询的方式,任何黑客都可能严重搞砸或删除您的数据库。请改为阅读SQL Injection,以及PHP准备语句的使用。

Relevant