skip to Main Content

I have a group of checkboxes with different values each. I want to assign their values in php variables which i’m going to send to database. The main problem is that i don’t know how to check inside the php code if the values of selected items matching their default values which i setup in the html (apple == apple, samsung == samsung) and so on. This is because someone can just change the input value inside the console and insert whatever he likes in my DB. Any ideas how i can sort this out. Many thanks!

    <form action="" method="POST">
        <label for="apple">Apple</label>
        <input id="apple" type="checkbox" name="myCheckBoxes[]" value="Apple">
        <label for="samsung">Samsung</label>
        <input id="samsung" type="checkbox" name="myCheckBoxes[]" value="Samsung">
        <label for="lenovo">Lenovo</label>
        <input id="lenovo" type="checkbox" name="myCheckBoxes[]" value="Lenovo">
        <label for="google">Google Pixel</label>
        <input id="google" type="checkbox" name="myCheckBoxes[]" value="Google Pixel">

        <button type="submit" name="submit">Send</button>
    </form>

PHP Code:

if (isset($_POST['submit'])) {
    $checkBoxes = $_POST['myCheckBoxes'];
    $numberSelected = count($checkBoxes);
    
    if ($numberSelected > 3) {
        echo 'Please select only 3 from the options';
    } else {
        for ($i = 0; $i < $numberSelected; $i++) {
            $option1 = $checkBoxes[0];
            $option2 = $checkBoxes[1];
            $option3 = $checkBoxes[2];
        }
        echo 'You have selected', ' ', $option1, ' ', $option2, ' ', $option3;
    }  
}

2

Answers


  1. You can define a constant array with the allowed values, then only use values from that array when they correspond to the input value.

    const ALLOWED_VALUES = [
        "apple"         => "Apple", 
        "samsung"       => "Samsung", 
        "lenovo"        => "Lenovo", 
        "google pixel"  => "Google Pixel",
    ];
    
    if (isset($_POST['submit'])) {
        $checkBoxes = $_POST['myCheckBoxes'];
        $options = [];
        if (count($checkBoxes) > 3) {
            echo 'Please select only 3 from the options';
        } else {
            foreach($checkBoxes as $box) {
                $box = strtolower(trim($box));
                if(array_key_exists($box, ALLOWED_VALUES)){
                    $options[] = ALLOWED_VALUES[$box];
                }
            }
            
            $option1 = (array_key_exists(0, $options))? $options[0]: null;
            $option2 = (array_key_exists(1, $options))? $options[1]: null;
            $option3 = (array_key_exists(2, $options))? $options[2]: null;
            
            echo 'You have selected', ' ', $option1, ' ', $option2, ' ', $option3;
        } 
    }
    

    The code above will accept "APPLE" but will use "Apple" anything not found or empty will be set to null. Run it live here: https://onlinephp.io/c/8409e

    Login or Signup to reply.
  2. you can do it through the help of or (||) , and (&&) operator in else part of if condition.

     if(($option1=='Apple' || $option1=='Samsung' || $option1=='Lenovo'||$option1=='Google Pixel') && ($option2=='Apple' || $option2=='Samsung' || $option2=='Lenovo'||$option2=='Google Pixel') && ($option3=='Apple' || $option3=='Samsung' || $option3=='Lenovo'||$option3=='Google Pixel')){
                   echo 'You have selected', ' ', $option1, ' ', $option2, ' ', $option3;
                  
    }else{
           echo"Please select suggested checkbox"; 
        }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search