check at least two checkboxes are ticked and then display a mesage to user

How can i check that at least two checkboxes are ticked and then display a menage to user?

[code]

Vehicle:
SafeDisplay('bike') ?> /> I have a bike
SafeDisplay('car') ?> /> I have a car
SafeDisplay('motorbike') ?> /> I have a motorbike
SafeDisplay('plane') ?> /> I have a plane
SafeDisplay('papaki') ?> /> I have a papaki
[/code]

[php]$foo = $_POST[‘checkbox’];
if (count($foo) > 2) {
for ($i=0;$i<count($foo);$i++) {
echo “

  • $foo[$i] \n”;[/php]
  • You say “At least” so the check is “>=” ( Greater or equal )

    The checkbox-group in your HTML is named ‘vehicle’, in your PHP you check ‘checkbox’. There is something about using [] in the name of the checkbox to indicate they all belong together. So I think you should ( in the HTML ) name them ‘vehicle[]’. In the PHP you don’t need the [], it’ll be an array.

    Hope this helps.
    ;D
    ( I assume you closed all your blockstatements and this is only a codesnippet )

    Hello again, i use now the following code using brackets in my html code as you suggested(vehicle[]):

    [php]

    if(isset($_POST[‘vehicle’])=<2)
    {
    $this->add_error(“Please provide 2 vehicles”);
    $ret = false; } [/php]

    it is an email form. I get to my email no info about what types of vehicles has been selected.

    can you help me?

    In your first post you did a ‘count()’ check. You replaced it with an isset(). Does isset() return the number of elements in an array? ( I looked it up and it’s supposed to return boolean )

    I am not sure if I can help you. Somewhere in the code that prepares the email ( eventually some script is going to make the email you refer to, so that’s where you need to get it to work ) you need to read the contents op $_POST[‘vehicle’] and write it into the email.

    I have no idea of the context this is placed in, but to check and read the values passed something like this should do the job:
    [php]
    $email_content = “bladibla\n”;
    if ( array_key_exists( ‘vehicle’, $_POST ) && count( $_POST[‘vehicle’] ) >= 2 )
    { $email_content .= “You selected:\n”;
    foreach ( $_POST[‘vehicle’] as $vehicle )
    { $email_content .= “$vehicle\n”;
    }
    } else
    { // Lots of noise and warnings and blinking red text and… they forgot to choose 2 vehicles
    }
    // Get that $email_content sent somewhere
    [/php]

    Does that help? :wink:

    i entered all my code to see it! i would like to check when there are at least two checkboxes are ticked and then display a mesage to user BUT also i would like to receive in my email all the types of vehicles the user selected! thanks!

    [code]<?PHP
    require_once("./include/fgcontactform.php");
    $formproc = new FGContactForm();

    $formproc->AddRecipient(‘me@localhost’); //<<—Put your email address here
    $formproc->SetFormRandomKey(‘HG9hPBpn9Bn26yg’);
    $formproc->AddFileUploadField(‘photo’,‘jpg,jpeg,gif,png,bmp’,2024);

    if(isset($_POST[‘submitted’]))
    {
    if($formproc->ProcessForm())
    {
    $formproc->RedirectToURL(“thank-you.php”);
    }
    }

    ?>

    Contact us Contact us
    * required fields
    <?php echo $formproc->GetErrorMessage(); ?>
    Your Full Name*:
    ' maxlength="50" />
    Email Address*:
    ' maxlength="50" />
    Message:
    <?php echo $formproc->SafeDisplay('message') ?>
    Vehicle:
    I have a bike
    I have a car
    I have a motorbike
    I have a plane
    I have a papaki

    Select your favorite two countries below:

    USA
    Canada
    Japan
    China
    France
    Upload your photo:

    [/code]

    [php][php]<?PHP

    require_once(“class.phpmailer.php”);

    class FG_CaptchaHandler
    {
    function Validate() { return false;}
    function GetError(){ return ‘’;}
    }

    class FGContactForm
    {
    var $receipients;
    var $errors;
    var $error_message;
    var $name;
    var $email;
    var $message;
    var $from_address;
    var $form_random_key;
    var $conditional_field;
    var $arr_conditional_receipients;
    var $fileupload_fields;
    var $captcha_handler;
    var $mailer;

    function FGContactForm()
    {
        $this->receipients = array();
        $this->errors = array();
        $this->form_random_key = 'HTgsjhartag';
        $this->conditional_field='';
        $this->arr_conditional_receipients=array();
        $this->fileupload_fields=array();
        $this->mailer = new PHPMailer();
        $this->mailer->CharSet = 'utf-8';
    }
    
    function EnableCaptcha($captcha_handler)
    {
        $this->captcha_handler = $captcha_handler;
        session_start();
    }
    
    function AddRecipient($email,$name="")
    {
        $this->mailer->AddAddress($email,$name);
    }
    
    function SetFromAddress($from)
    {
        $this->from_address = $from;
    }
    function SetFormRandomKey($key)
    {
        $this->form_random_key = $key;
    }
    function GetSpamTrapInputName()
    {
        return 'sp'.md5('KHGdnbvsgst'.$this->GetKey());
    }
    function SafeDisplay($value_name)
    {
        if(empty($_POST[$value_name]))
        {
            return'';
        }
        return htmlentities($_POST[$value_name]);
    }
    function GetFormIDInputName()
    {
        $rand = md5('TygshRt'.$this->GetKey());
    
        $rand = substr($rand,0,20);
        return 'id'.$rand;
    }
    
    
    function GetFormIDInputValue()
    {
        return md5('jhgahTsajhg'.$this->GetKey());
    }
    
    function SetConditionalField($field)
    {
        $this->conditional_field = $field;
    }
    function AddConditionalReceipent($value,$email)
    {
        $this->arr_conditional_receipients[$value] =  $email;
    }
    
    function AddFileUploadField($file_field_name,$accepted_types,$max_size)
    {
    
        $this->fileupload_fields[] =
            array("name"=>$file_field_name,
            "file_types"=>$accepted_types,
            "maxsize"=>$max_size);
    }
    
    function ProcessForm()
    {
        if(!isset($_POST['submitted']))
        {
           return false;
        }
        if(!$this->Validate())
        {
            $this->error_message = implode('<br/>',$this->errors);
            return false;
        }
        $this->CollectData();
    
        $ret = $this->SendFormSubmission();
    
        return $ret;
    }
    
    function RedirectToURL($url)
    {
        header("Location: $url");
        exit;
    }
    
    function GetErrorMessage()
    {
        return $this->error_message;
    }
    function GetSelfScript()
    {
        return htmlentities($_SERVER['PHP_SELF']);
    }
    
    function GetName()
    {
        return $this->name;
    }
    function GetEmail()
    {
        return $this->email;
    }
    function GetMessage()
    {
        return htmlentities($this->message,ENT_QUOTES,"UTF-8");
    }
    

    /*-------- Private (Internal) Functions -------- */

    function SendFormSubmission()
    {
        $this->CollectConditionalReceipients();
    
        $this->mailer->CharSet = 'utf-8';
        
        $this->mailer->Subject = "Contact form submission from $this->name";
    
        $this->mailer->From = $this->GetFromAddress();
    
        $this->mailer->FromName = $this->name;
    
        $this->mailer->AddReplyTo($this->email);
    
        $message = $this->ComposeFormtoEmail();
    
        $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
        $this->mailer->AltBody = @html_entity_decode($textMsg,ENT_QUOTES,"UTF-8");
        $this->mailer->MsgHTML($message);
    
        $this->AttachFiles();
    
        if(!$this->mailer->Send())
        {
            $this->add_error("Failed sending email!");
            return false;
        }
    
        return true;
    }
    
    function CollectConditionalReceipients()
    {
        if(count($this->arr_conditional_receipients)>0 &&
          !empty($this->conditional_field) &&
          !empty($_POST[$this->conditional_field]))
        {
            foreach($this->arr_conditional_receipients as $condn => $rec)
            {
                if(strcasecmp($condn,$_POST[$this->conditional_field])==0 &&
                !empty($rec))
                {
                    $this->AddRecipient($rec);
                }
            }
        }
    }
    
    /*
    Internal variables, that you donot want to appear in the email
    Add those variables in this array.
    */
    function IsInternalVariable($varname)
    {
        $arr_interanl_vars = array('scaptcha',
                            'submitted',
                            $this->GetSpamTrapInputName(),
                            $this->GetFormIDInputName()
                            );
        if(in_array($varname,$arr_interanl_vars))
        {
            return true;
        }
        return false;
    }
    
    function FormSubmissionToMail()
    {
        $ret_str='';
        foreach($_POST as $key=>$value)
        {
            if(!$this->IsInternalVariable($key))
            {
                $value = htmlentities($value,ENT_QUOTES,"UTF-8");
                $value = nl2br($value);
                $key = ucfirst($key);
                $ret_str .= "<div class='label'>$key :</div><div class='value'>$value </div>\n";
            }
        }
        foreach($this->fileupload_fields as $upload_field)
        {
            $field_name = $upload_field["name"];
            if(!$this->IsFileUploaded($field_name))
            {
                continue;
            }        
            
            $filename = basename($_FILES[$field_name]['name']);
    
            $ret_str .= "<div class='label'>File upload '$field_name' :</div><div class='value'>$filename </div>\n";
        }
        return $ret_str;
    }
    
    function ExtraInfoToMail()
    {
        $ret_str='';
    
        $ip = $_SERVER['REMOTE_ADDR'];
        $ret_str = "<div class='label'>IP address of the submitter:</div><div class='value'>$ip</div>\n";
    
        return $ret_str;
    }
    
    function GetMailStyle()
    {
        $retstr = "\n<style>".
        "body,.label,.value { font-family:Arial,Verdana; } ".
        ".label {font-weight:bold; margin-top:5px; font-size:1em; color:#333;} ".
        ".value {margin-bottom:15px;font-size:0.8em;padding-left:5px;} ".
        "</style>\n";
    
        return $retstr;
    }
    function GetHTMLHeaderPart()
    {
         $retstr = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".
                   '<html><head><title></title>'.
                   '<meta http-equiv=Content-Type content="text/html; charset=utf-8">';
         $retstr .= $this->GetMailStyle();
         $retstr .= '</head><body>';
         return $retstr;
    }
    function GetHTMLFooterPart()
    {
        $retstr ='</body></html>';
        return $retstr ;
    }
    function ComposeFormtoEmail()
    {
        $header = $this->GetHTMLHeaderPart();
        $formsubmission = $this->FormSubmissionToMail();
        $extra_info = $this->ExtraInfoToMail();
        $footer = $this->GetHTMLFooterPart();
    
        $message = $header."Submission from 'contact us' form:<p>$formsubmission</p><hr/>$extra_info".$footer;
    
        return $message;
    }
    
    function AttachFiles()
    {
        foreach($this->fileupload_fields as $upld_field)
        {
            $field_name = $upld_field["name"];
            if(!$this->IsFileUploaded($field_name))
            {
                continue;
            }
            
            $filename =basename($_FILES[$field_name]['name']);
    
            $this->mailer->AddAttachment($_FILES[$field_name]["tmp_name"],$filename);
        }
    }
    
    function GetFromAddress()
    {
        if(!empty($this->from_address))
        {
            return $this->from_address;
        }
    
        $host = $_SERVER['SERVER_NAME'];
    
        $from ="nobody@$host";
        return $from;
    }
    
    function Validate()
    {
        $ret = true;
        //security validations
        if(empty($_POST[$this->GetFormIDInputName()]) ||
          $_POST[$this->GetFormIDInputName()] != $this->GetFormIDInputValue() )
        {
            //The proper error is not given intentionally
            $this->add_error("Automated submission prevention: case 1 failed");
            $ret = false;
        }
    
        //This is a hidden input field. Humans won't fill this field.
        if(!empty($_POST[$this->GetSpamTrapInputName()]) )
        {
            //The proper error is not given intentionally
            $this->add_error("Automated submission prevention: case 2 failed");
            $ret = false;
        }
    
        //name validations
        if(empty($_POST['name']))
        {
            $this->add_error("Please provide your name");
            $ret = false;
        }
        else
        if(strlen($_POST['name'])>50)
        {
            $this->add_error("Name is too big!");
            $ret = false;
        }
    
        //email validations
        if(empty($_POST['email']))
        {
            $this->add_error("Please provide your email address");
            $ret = false;
        }
        else
        if(strlen($_POST['email'])>50)
        {
            $this->add_error("Email address is too big!");
            $ret = false;
        }
        else
        if(!$this->validate_email($_POST['email']))
        {
            $this->add_error("Please provide a valid email address");
            $ret = false;
        }
    
        //message validaions
        if(strlen($_POST['message'])>2048)
        {
            $this->add_error("Message is too big!");
            $ret = false;
        }
    	
    	if(empty($_POST['vehicle']))
        {
            $this->add_error("Please provide your vehicle");
            $ret = false;
        }
    

    if (isset($_POST[‘vehicle’])) {
    $vehicle = $_POST[“vehicle”];
    $how_many = count($vehicle);
    if ($how_many<2) {
    $this->add_error(“Please provide at least 2 vehicles”);
    $ret = false;}
    if ($how_many>2) {
    $this->add_error(“You can provide just 2 vehicles”);
    $ret = false;}
    }

        //captcha validaions
        if(isset($this->captcha_handler))
        {
            if(!$this->captcha_handler->Validate())
            {
                $this->add_error($this->captcha_handler->GetError());
                $ret = false;
            }
        }
        //file upload validations
        if(!empty($this->fileupload_fields))
        {
         if(!$this->ValidateFileUploads())
         {
            $ret = false;
         }
        }
        return $ret;
    }
    
    function ValidateFileType($field_name,$valid_filetypes)
    {
        $ret=true;
        $info = pathinfo($_FILES[$field_name]['name']);
        $extn = $info['extension'];
        $extn = strtolower($extn);
    
        $arr_valid_filetypes= explode(',',$valid_filetypes);
        if(!in_array($extn,$arr_valid_filetypes))
        {
            $this->add_error("Valid file types are: $valid_filetypes");
            $ret=false;
        }
        return $ret;
    }
    
    function ValidateFileSize($field_name,$max_size)
    {
        $size_of_uploaded_file =
                $_FILES[$field_name]["size"]/1024;//size in KBs
        if($size_of_uploaded_file > $max_size)
        {
            $this->add_error("The file is too big. File size should be less than $max_size KB");
            return false;
        }
        return true;
    }
    
    function IsFileUploaded($field_name)
    {
        if(empty($_FILES[$field_name]['name']))
        {
            return false;
        }
        if(!is_uploaded_file($_FILES[$field_name]['tmp_name']))
        {
            return false;
        }
        return true;
    }
    function ValidateFileUploads()
    {
        $ret=true;
        foreach($this->fileupload_fields as $upld_field)
        {
            $field_name = $upld_field["name"];
    
            $valid_filetypes = $upld_field["file_types"];
            
            if(!$this->IsFileUploaded($field_name))
            {
                continue;
            }
    
            if($_FILES[$field_name]["error"] != 0)
            {
                $this->add_error("Error in file upload; Error code:".$_FILES[$field_name]["error"]);
                $ret=false;
            }
    
            if(!empty($valid_filetypes) &&
             !$this->ValidateFileType($field_name,$valid_filetypes))
            {
                $ret=false;
            }
    
            if(!empty($upld_field["maxsize"]) &&
            $upld_field["maxsize"]>0)
            {
                if(!$this->ValidateFileSize($field_name,$upld_field["maxsize"]))
                {
                    $ret=false;
                }
            }
    
        }
        return $ret;
    }
    
    function StripSlashes($str)
    {
        if(get_magic_quotes_gpc())
        {
            $str = stripslashes($str);
        }
        return $str;
    }
    /*
    Sanitize() function removes any potential threat from the
    data submitted. Prevents email injections or any other hacker attempts.
    if $remove_nl is true, newline chracters are removed from the input.
    */
    function Sanitize($str,$remove_nl=true)
    {
        $str = $this->StripSlashes($str);
    
        if($remove_nl)
        {
            $injections = array('/(\n+)/i',
                '/(\r+)/i',
                '/(\t+)/i',
                '/(%0A+)/i',
                '/(%0D+)/i',
                '/(%08+)/i',
                '/(%09+)/i'
                );
            $str = preg_replace($injections,'',$str);
        }
    
        return $str;
    }
    
    /*Collects clean data from the $_POST array and keeps in internal variables.*/
    function CollectData()
    {
        $this->name = $this->Sanitize($_POST['name']);
        $this->email = $this->Sanitize($_POST['email']);
    
        /*newline is OK in the message.*/
        $this->message = $this->StripSlashes($_POST['message']);
    }
    
    function add_error($error)
    {
        array_push($this->errors,$error);
    }
    function validate_email($email)
    {
        return preg_match("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$^", $email);
    }
    
    function GetKey()
    {
        return $this->form_random_key.$_SERVER['SERVER_NAME'].$_SERVER['REMOTE_ADDR'];
    }
    

    }

    ?>[/php]

    Sponsor our Newsletter | Privacy Policy | Terms of Service