Tengo un campo de formulario json que tiene una casilla de verificación codificada:

{"name":"Act","description":"Checkthis","type":"checkbox"}

¿Alguien puede decirme cómo obtener este valor de esta casilla de verificación SI está marcada usando php

Aquí está la forma:

<iframe src='http://www.facebook.com/plugins/registration.php?
                    client_id=360&
                    redirect_uri=http://www.pingcampus.com/facebook_registration_plugin/store_user_data.php&
                    fields=[
                    {"name":"name"},
                    {"name":"email"},
                    {"name":"gender"},
                    {"name":"birthday"},
                    {"name":"captcha"},
                    {"name":"Act","description":"Checkthis","type":"checkbox"}
                    ]'
                    scrolling="auto"
                    frameborder="no"
                    style="border:none"
                    allowTransparency="true"
                    width="500"
                    height="600">
            </iframe>

Aquí está el código Php:

<?php
        define('FACEBOOK_APP_ID', '');
        define('FACEBOOK_SECRET', '');





        // No need to change function body
        function parse_signed_request($signed_request, $secret) {
            list($encoded_sig, $payload) = explode('.', $signed_request, 2);

            // decode the data
            $sig = base64_url_decode($encoded_sig);
            $data = json_decode(base64_url_decode($payload), true);

            if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
                error_log('Unknown algorithm. Expected HMAC-SHA256');
                return null;
            }


            // check sig
            $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
            if ($sig !== $expected_sig) {
                error_log('Bad Signed JSON signature!');
                return null;
            }

            return $data;
        }

        function base64_url_decode($input) {
            return base64_decode(strtr($input, '-_', '+/'));
        }

        if ($_REQUEST) {
            $response = parse_signed_request($_REQUEST['signed_request'],
                            FACEBOOK_SECRET);
            /*
            echo "<pre>";
            print_r($response);
            echo "</pre>"; // Uncomment this for printing the response Array
            */


            echo $_POST["Act"];


            $name = $response["registration"]["name"];
            $email = $response["registration"]["email"];
            $password = $response["registration"]["password"];
            $gender = $response["registration"]["gender"];
            $dob = $response["registration"]["birthday"];
            $phone = $response["registration"]["phone"];
            $act1 = $response["registration"]["Act"];


      // Connecting to Database




            mysql_connect('', '', '') or die(mysql_error());
            mysql_select_db('pingcampus');

            $result = mysql_query("INSERT INTO usxxx set 

            name='$name',
            email='$email',

            gender='$gender',
            act='$act'
             ");
            if ($result) {

                // User successfully stored
                // Redirect to some page
            } else {
                echo mysql_error();

                // Redirect to error page
            }
        } else {
            echo '$_REQUEST is empty';
        }
        ?>
0
Arihant 1 may. 2012 a las 21:29

1 respuesta

La mejor respuesta
<?php
if(isset($_POST["Act"])){
  $act = $_POST["Act"];
  if(!empty($act)){
    // if Act is checked
  }
  else{
    //Act not checked
  }
}
?>

O agregue value a:

{"name":"Act","description":"Checkthis","type":"checkbox", "value":"1"}

Y hazlo:

 <?php
    if(isset($_POST["Act"])){
      $act = $_POST["Act"];
      if($act == 1){
        // if Act is checked
      }
      else{
        //Act not checked
      }
    }
    ?>
1
mgraph 1 may. 2012 a las 21:42
Todavía no funciona, estoy repitiendo la variable $ act y no se muestra nada
 – 
Arihant
1 may. 2012 a las 22:04
1
Prueba echo $_POST["Act"]; después de <?php
 – 
mgraph
1 may. 2012 a las 22:12
1
¿Qué pasa si lo haces echo $act1; después de $act1 = $response["registration"]["Act"];
 – 
mgraph
1 may. 2012 a las 22:40
 – 
Arihant
1 may. 2012 a las 22:45