Title: Calling outside programs with $_GET
Last modified: August 21, 2016

---

# Calling outside programs with $_GET

 *  Resolved [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/)
 * Here is the thing. I have created a site and on it we need to call a program 
   that downloads vcards, one for each employee. That means I need to pass the id
   for that employee. I am trying $_GET. I have tried a straight call passing the
   parm. I tried creating a page and passing the parm thru the page. Here is a link:
   [http://hsm.bothwip2013.com/attorneys/](http://hsm.bothwip2013.com/attorneys/).
   I have never attempted this before. Any ideas?
    Two samples of code attempted:
 *     ```
       <a href=\"http://hsm.bothwip2013.com/atty-vcard/?id=$attorney_id\" class=\"atty-vcard\" title=\"Download Vcard\">
   
       <a href=\""; ?>
       <?php bloginfo('template_url'); ?>
       <? echo "child/attorney-vcard.php?id=$attorney_id\" class=\"atty-vcard\" title=\"Download Vcard\">
       ```
   
 * Thanks

Viewing 11 replies - 1 through 11 (of 11 total)

 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916856)
 * Outputting a link would require user interaction to click on the link. The response
   would then be sent to the user’s browser, not your script.
 * You will want to use `file_get_contents()` or cURL to make external requests 
   where your code can do something with the response. The examples you will see
   are typically for accessing remote data from a different server. They should 
   work equally well for resources on the same server but in a separate name space.
 *  Thread Starter [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916877)
 * I am searching the documentation and can’t find anything on how to use either
   of your suggestions. Do you have any examples?
 *  [Evan Herman](https://wordpress.org/support/users/eherman24/)
 * (@eherman24)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916878)
 * A quick google search brought this up…
    [http://us2.php.net/function.file-get-contents](http://us2.php.net/function.file-get-contents)
 * Has working examples and everything….
 *  Thread Starter [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916880)
 * Thanks Evan. I am trying to see how I can accomplish my original goal with this
   functionality. I want to be able to call a php program that creates a vcard file
   or prints the attorney bio based on the ID passed using $_GET.
 * Sorry to seem dense I am just not seeing how to do this from the examples.
 *  Thread Starter [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916945)
 * The closest thing I have found to a solution is this link on stack overflow: 
   [output-buffering-with-php-headers](http://stackoverflow.com/questions/19836159/output-buffering-with-php-headers)
 * He is doing the same thing I am trying to accomplish. When I implement his code
   I get this error: “BEGIN:VCARD VERSION:3.0 N:Stone;Kenneth;R.;;; FN:Kenneth R.
   Stone TITLE:Partner PHOTO;VALUE=URL;TYPE=JPG:[http://www.baileyglasser.com/images/attorney_photos/kstone.png](http://www.baileyglasser.com/images/attorney_photos/kstone.png)
   ORG:Hefner, Stark & Marois, LLP TEL;WORK;VOICE: TEL;WORK;FAX: EMAIL;TYPE=PREF;
   INTERNET:kstone@hsmlaw.com ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;2150 River Plaza
   Drive=0D=0ASuite 450;Sacramento;CA;95833;United States; URL;TYPE=WORK:[http://www.baileyglasser.com](http://www.baileyglasser.com)
   END:VCARD Warning: Cannot modify header information – headers already sent by(
   output started at /var/www/hsm.bothwip2013.com/wp-includes/link-template.php:
   1640) in /var/www/hsm.bothwip2013.com/wp-content/themes/Featherchild/attorney-
   vcard.php on line 59 Warning: Cannot modify header information – headers already
   sent by (output started at /var/www/hsm.bothwip2013.com/wp-includes/link-template.
   php:1640) in /var/www/hsm.bothwip2013.com/wp-content/themes/Featherchild/attorney-
   vcard.php on line 60 “
 * Here is my code:
 *     ```
       <?php
       ob_start();
       require "code/dbconn.php";
   
       if ($attorney_id) {
   
       $query="SELECT a.*, l.* FROM attorneys AS a JOIN lawfirm AS l ON l.id = a.attorney_office WHERE attorney_id = $attorney_id";
   
       $result=mysql_query($query);
       $myrow = mysql_fetch_array($result);
   
       $seoname=$myrow["seo_title"];
       $first=$myrow["attorney_fname"];
       $middle=$myrow["attorney_mname"];
       $last=$myrow["attorney_lname"];
       $attorney_email=$myrow["attorney_email"];
       $attorney_office=$myrow["attorney_office"];
       $tel=preg_replace ('/^(\d+)\.(\d+)\.(\d+)$/', '($1) $2-$3', $myrow["attorney_tel"]);
       $fax=preg_replace ('/^(\d+)\.(\d+)\.(\d+)$/', '($1) $2-$3', $myrow["attorney_fax"]);
       $attorney_title=$myrow["attorney_title"];
       if ($middle) {
       $fullname = (isset ($middle)) ? "$first $middle $last" : "$first $last"; }
       if (!$middle) {
       $fullname = (isset ($middle)) ? "$first $last" : "$first $last"; }
       $filename = preg_replace ('/ +/', '_', $fullname);
       $filename = preg_replace ('/[^a-z_]+/i', '', $filename);
       $photo = $myrow["attorney_photo"];
       $path = "http://www.baileyglasser.com/images/attorney_photos/";
       $office = $myrow["office"];
       $address =$myrow["address"];
       $address2 =$myrow["address2"];
       $city =$myrow["city"];
       $state =$myrow["state"];
       $zip =$myrow["zip"];
       $country ="United States";
   
       $query1  =   "SELECT * FROM titles WHERE $attorney_title=title_id ";
       $result1 = mysql_query($query1);
       $myrow1 = mysql_fetch_array($result1);
       $title = $myrow1["title_name"];
   
       print <<<END
       BEGIN:VCARD
       VERSION:3.0
       N:$last;$first;$middle;;;
       FN:$fullname
       TITLE:$title
       PHOTO;VALUE=URL;TYPE=JPG:$path$photo
       ORG:$office
       TEL;WORK;VOICE:$tel
       TEL;WORK;FAX:$fax
       EMAIL;TYPE=PREF;INTERNET:$attorney_email
       ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;$address=0D=0A$address2;$city;$state;$zip;$country;
       URL;TYPE=WORK:http://www.baileyglasser.com
       END:VCARD
       END;
   
       $output = ob_get_contents();
       header('Content-Type: text/x-vcard');
       header('Content-Disposition: attachment; filename=vCard_' . $filename . '.vcf');
       return $output;
       exit();
       }
       ?>
       ```
   
 * Thanks for any further assistance.
 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916957)
 * Sorry for the slow response, I’ve been away. I completely misconstrued what you
   are trying to do. Please allow me another try 🙂
 * The headers already sent error is because you used `print` before you used `header()`.
   Calling `header()` before using `print` will resolve this, but you still need
   to address some other issues.
 * First and foremost you must include the ID value from the GET URL parameter when
   you construct the query. Let’s say your GET request looks like this: `www.example.
   com/scripts/my-php-script.php?id=123`
 * Your script could then assign the value passed in ‘id’ (123) to `$attorney_id`
   like so:
    `$attorney_id = $_GET['id'];`
 * Assuming all of your mySQL script is correct, then correct values are returned
   based on the ID of 123. You can drop the output buffer stuff (functions beginning
   with `ob_`), it has no bearing on what you are trying to do here.
 * The first thing sent to the browser are your `header()` calls. After headers 
   are sent you can go ahead and `print` the v-card data. There is no need to `return()`
   anything, you are not declaring a function to return from. The `exit()` is OK,
   but the script will end anyway as there is no code left to execute.
 * For my example URL to work, all of your code should reside in a PHP file named
   _my-php-script.php_ that resides in the _scripts_ folder of your server. If you
   use different names, alter the URL accordingly.
 *  Thread Starter [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916983)
 * Thanks bcworkz, but the solution to the first part of the problem was to condition
   the get_header that if calling the vcard.php don’t do get_header. Now I get the
   vcard to download. The problem is now that I get two lines of blank spaces before
   the begin:vcard so when I try to import in contact it will not recognize as a
   vcard. I tried using ‘echo trim($output);’ and ‘return trim($output);’ on the
   output but no luck. While trim is supposed to remove the leading blanks, it is
   not working in this instance. Any suggestions?
 * Thanks
    Michael
 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916984)
 * Well, it’s progress at least 🙂
 * Extraneous white space can be a little tricky to track down. Using `trim()` is
   a good thing to do, but obviously not enough. Be sure there is no whitespace 
   before the file’s first `<?php`, not even the byte order mark that often creeps
   into UTF-8 files. You may need to view the file in a hex editor to confirm this.
   Not directly related, but you do not need the closing `?>` at the end, deleting
   this prevents stray line feeds and whitespace from being output after the v-card
   content.
 * Check for similar issues in included files. The only other possibility is maybe
   I was wrong about the output buffer stuff and there is already something else
   going on with it. By managing the v-card portion in a separate buffer, you can
   prevent other buffer content from interfering with the v-card output.
 *  Thread Starter [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916985)
 * OK so we refer back to the code above, are you referring to the beginning <?php
   because there are no spaces there. Maybe I should be writing the file another
   way? Not sure. Why I use this same code in a non-Wordpress site it works like
   a charm. There is something in WordPress that causes the spaces to happen. Still
   searching for the solution.
 * Thanks for any further assistance.
 *  Thread Starter [miowebdesigns](https://wordpress.org/support/users/miowebdesigns/)
 * (@miowebdesigns)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916986)
 * Here is the final solution: I found a plugin, hcard-vcard-generator-wordpress-
   plugin. I modified that to accept my files data and it worked fine.
 * Thanks for all the help.
 *  [catacaustic](https://wordpress.org/support/users/catacaustic/)
 * (@catacaustic)
 * [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916987)
 * Just as a note, the last two lines of your file should be:
 *     ```
       echo $output;
       exit();
       ```
   
 * Saying `return` works sort of the same way, but is meant to be part of a function,
   not a bit of procedural code like this. There’s a chance that could be where 
   the extra spaces are creeping in.

Viewing 11 replies - 1 through 11 (of 11 total)

The topic ‘Calling outside programs with $_GET’ is closed to new replies.

 * In: [Hacks](https://wordpress.org/support/forum/plugins-and-hacks/hacks/)
 * 11 replies
 * 4 participants
 * Last reply from: [catacaustic](https://wordpress.org/support/users/catacaustic/)
 * Last activity: [12 years ago](https://wordpress.org/support/topic/calling-outside-programs-with-_get/#post-4916987)
 * Status: resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
