Использование $ _GET в массиве PHP () - PullRequest
1 голос
/ 19 декабря 2011

У меня есть массив PHP:

$params = array(
  "name" => "$name",
  "description" => "not applicable", 
  "location" => "Orem Utah",
  "start_time" => "07/25/2013",
  "end_time" => "07/26/2013",
  "privacy_type" => "OPEN"
); 

Единственный способ заставить работать массив $name - это использовать строки типа "name"

$name = $_GET['name']; Не работает.

Как правильно поместить $_GET в этот массив?

Вот весь мой код ...

<?php

  session_start(); 
  $app_id = "xxxxxxx";
  $app_secret = "xxxxxxxx";
  $my_url = "http://www.xxxxxxxx.xxxx/xxxxxxxxxevent.php?name=".urlencode($_SESSION['name']).""; 

  $code = $_REQUEST["code"];

  if (empty($code)) {
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id="
    . $app_id . "&redirect_uri=" . urlencode($my_url)
    . "&scope=create_event";
    echo("<script>top.location.href='" . $auth_url . "'</script>");
  }

  $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
  . $app_id . "&redirect_uri=" . urlencode($my_url)
  . "&client_secret=" . $app_secret
  . "&code=" . $code;
  $access_token = file_get_contents($token_url);

  $test = "$_GET[name]";
  $url = "https://graph.facebook.com/me/events?" . $access_token;
  $params = array(
    "name" => "$name",
    "description" => "not applicable", 
    "location" => "Orem Utah",
    "start_time" => "07/25/2013",
    "end_time" => "07/26/2013",
    "privacy_type" => "OPEN"
  ); 

  // Check if we have an image

  // Start the Graph API call
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

  $result = curl_exec($ch);
  $decoded = json_decode($result, 1);
  curl_close($ch);

  if (is_array($decoded) && isset($decoded['id'])) {
    $msg = "success";
  }
  $event_url = "https://graph.facebook.com/me/".$_SESSION['fid']."?" . $access_token;
  if (isset($msg)) {
    $_SESSION['fid'] = $decoded['id']; header("location:xxxxxx2.php");
  }

?>
<!-- irrelevant HTML BELOW HERE -->

Ответы [ 4 ]

2 голосов
/ 19 декабря 2011
$params = array("name" => $name, "description" => "not applicable", "location" => "Orem Utah", "start_time" => "07/25/2013", "end_time" => "07/26/2013", "privacy_type" => "OPEN");

1 голос
/ 19 декабря 2011

Вы проверяли, что $ _GET фактически передает переменную с именем 'name'? В окне разработки добавьте строку вроде:

echo '<pre>'.print_r($_GET,true).'<pre>';

и проверьте, что что-то действительно передается.

Еще одна вещь, которую я заметил, это то, что ваши цитаты немного испорчены. Вы можете либо

  • удалить кавычки вокруг $ name: array("name"=>$name...);
  • добавьте правильные кавычки, если они вам нужны:

    array("name"=>'"'.$name.'"'...)
    

    или

    array("name"=>"'{$name}'"...)
    

Наконец, не забудьте экранировать переданные переменные, если вы собираетесь использовать их в базе данных:

$name=mysql_escape_string($_GET['name']);

Надеюсь, это поможет

1 голос
/ 19 декабря 2011

Вам нужно получить строковое значение из массива.

Во-первых, настроен ли GET?

Если он находится в URL-адресе, он будет выглядеть следующим образом: url.com/mypage.php?id=1

Таким способом вы можете получить его из URL-адреса.

$id = strval( $_GET['id'] );
echo 'ID: '.$id;  // check if it worked

Если это из формы, попробуйте:

<code>echo '<pre>'; print_r( $_GET ); echo '
';$ name = $ _GET ['name'];// Если вы видите это в print_r, то это должно работать

Если у вас есть get get, то в вашем массиве вы можете установить его следующим образом:

$myArray = array( 'id' => $id, 'name' => "Names" );

Вам не нужно использовать кавычки.

1 голос
/ 19 декабря 2011

Проблема в том, что вы пытаетесь объединить переменную, как если бы вы строили строку SQL или что-то в этом роде ...

$params = array("name" => '".$name.'",...
//-----------------------^^^^^^^^^^^^^

Вам нужно просто использовать простую переменную здесь:

$params = array("name" => $_GET['name'],...
...