为什么这段代码会执行?

时间:2013-09-26 19:35:02

标签: php html

似乎最后一段时间越来越难了!

所以我有if语句,如果这些语句是真的,那么代码应该执行。问题是代码正在执行,即使它不是真的。

即使Spproved设置为1

也执行的代码
if($user_data['permissions'] >= 1)
{
    // If users permission is 1 or 2 they get a field for inputting the index # and a button to change the approve field from 0 to 1 may need to make a new field to record who approved it....

    //Determine if the order is already approved.  If not approved show index field and allow user to approve it with index number
    if($data2[0]['Approved'] == 1)
    {
        echo " <font color=\"green\"> Approved";
    }
    else if($data2[0]['Approved'] == 0)
    {
        echo " Not Approved.  Supply an index number and click approve to authorize this order to be completed.";

        if (empty ($_GET) === false) 
        {
            $required_fields = array('IndexNum');
            foreach ($_GET as $key=>$value)
            {
                if (empty($value) && in_array($key, $required_fields) === true)
                {
                $errors[] = 'Fields marked with an asterisk are required';
                break 1;
                }
            }

            if (isset($_GET['success']) === true && empty($_GET['success']) === true)
            {            
                echo 'Index has been updated and Order is now set to Approved';
            }
            else
            {    
                if (empty($errors) === true)
                {   
                    $indexnum=$_GET['IndexNum'];
                    $approvedby=$user_data['lname'];
                    $vendorid1= $_GET['hidden1'];

                    update_approved($approvedby, $indexnum, $vendorid1);
                    header('Location: index.php');
                    exit();        
                }
                else if(empty($errors) === false)
                {
                    echo output_errors($errors);
                }
            }
        }

        ?>            
         <form name="approveform" method="GET" action="">
        <input type="hidden" name="hidden1" value="<?php echo $id;?>">"
        Index Number*: <input type="text" name="IndexNum">&nbsp;
        <input type="submit" value="Approve" action="">
        </form>

<?php }     
}

if($user_data['permissions'] == 2)
{
    // If user is permission 2 they can have a button to say shipped... Do I need to record who shipped it?  for now nah.  Would be nice to input a data of arrival though.  I will think on it .... pretty lazy
    if($data2[0]['Approved'] == 1)
    {
    echo "<br/>";
    echo "Confirm order has been ordered";

    if(isset($_GET['Ordered']))
    {
        $vendorid1=$_GET['hidden1'];

        echo $vendorid1;
        //update_shipped($vendorid1);
        //header('Location: index.php');
        //exit();
    }    
    ?>

    <form name="approveform" method="GET" action="">
    <input type="hidden" name="hidden1" value="<?php echo $id;?>">
    <input type="submit" name="Ordered" value="Ordered" action="">
    </form>

    <?php            
    }    
}    

IT在表单上以绿色显示已批准,并且“有序”按钮显示正常。当我单击提交按钮时,else if($ data [0] ['Approved'] == 0)中的代码激活而不是代码。 Approved设置为1所以我不知道为什么代码正在运行.....

print_r($data2)的值是

Array ( [0] => Array ( [VendorName] => Newegg [DateRequested] => 2013-09-25
[DateNeeded] => 0000-00-00 [Shipping] => Standard [VendorNumber] => 123123 
[VendorFax] => NA [VendorAddress] => 1 ave new [VendorCity] => socorro 
[VendorState] => nm [VendorZip] => 87114 [EquipmentConsumable] => Consumable 
[GasType] => propane [GasLocation] => United States [UNMTag] => 0 
[EquipmentLocation] => [index] => 414141 [totalcost] => 129.88 
[Approved] => 1 [Shipped] => 0 ) ) 

2 个答案:

答案 0 :(得分:1)

使用严格的比较,===!==代替==!=。除非另有说明,否则PHP倾向于将1和0评估为布尔值。

此外,使用empty()等功能,您可以更改:

if( empty($_GET) === FALSE ) if( !empty( $_GET ) )
if( empty($_GET) === TRUE ) if( empty( $_GET ) )

因为他们返回布尔值。

由于您使用$ _GET,请确保每次传递所需的所有变量都在url中。由于表单元素只能传递嵌套的输入元素,因此您可能需要在提交后传递更多隐藏信息。此外,您应该将文件名放在action=""中,或者从表单标记中省略它。

答案 1 :(得分:1)

我知道这不会解决你的问题,但......

                                                         You have an extra "
                                                             right here
                                                                  |
                                                                  V
    <input type="hidden" name="hidden1" value="<?php echo $id;?>">"
    Index Number*: <input type="text" name="IndexNum">&nbsp;
    <input type="submit" value="Approve" action="">