After much googling and mashing together various answers, I got it working.
Here's the AT command sequence. You can test this from start to finish, you'll just need to confirm the APN of the carrier you're using.
// My comments are here
Command to send is here Expected responses are here
// See if the SIM900 is ready
// SIM card inserted and unlocked?
AT+CPIN? +CPIN: READY
// Is the SIM card registered?
AT+CREG? +CREG: 0,1
// Is GPRS attached?
AT+CGATT? +CGATT: 1
// Check signal strength - should be 9 or higher
AT+CSQ +CSQ: 14,0
// Set connection type to GPRS
// Set the APN - this will depend on your network/service provider
// Enable GPRS - this will take a moment or two
// Check to see if connection is correct and get your IP address
// (I hid mine here, but you'll get a real IP back)
AT+SAPBR=2,1 +SAPBR: 1,3,"0.0.0.0"
// Enable HTTP mode
// Set HTTP profile identifier
// Put in the URL of the PHP webpage where you will post -
// the URL below is a test server so you can use it in testing
// Tell the SIM900 how much data you'll send (18 bytes here)
// and how long to wait for a time-out (10,000 ms here)
// Key in the data you want to send after you get the "DOWNLOAD" prompt.
// Post the data - wait a second for the response
// Read the response - www.posttestserver.com will give you a
// URL where you can confirm that it's working
"Successfully dumped 0 post variables. View it at
Post body was 18 chars long."
// Close the HTTP connection
// Disconnect the GPRS
Edit to add: Here are the sources I used to put all of this together, along with help from some folks I asked in my lab.