DtDNS: PHP cURL 1: Difference between revisions
Upazixorys (talk | contribs) No edit summary |
m (Reverted edits by Upazixorys (Talk); changed back to last version by Ric) |
||
Line 1: | Line 1: | ||
{{Nav DtDNS}} | {{Nav DtDNS}} | ||
'''''Introduction''''' | '''''Introduction''''' | ||
Line 13: | Line 12: | ||
Extracting the IP address is performed using a regex since we are specifically targeting information we want and discarding any other page content means any harmful code will never be run. | Extracting the IP address is performed using a regex since we are specifically targeting information we want and discarding any other page content means any harmful code will never be run. | ||
{|cellspacing= | {|cellspacing="6" | ||
|- | |- | ||
| | | | ||
<pre> | |||
<?php | |||
$ch=curl_init(); | $ch=curl_init(); | ||
curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); | curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); | ||
Line 31: | Line 30: | ||
else{ | else{ | ||
// Extract IP address | // Extract IP address | ||
if(preg_match( | if(preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $buffer, $ipmatch)){ | ||
$ip = $ipmatch[0]; // Save IP to variable | $ip = $ipmatch[0]; // Save IP to variable | ||
} | } | ||
} | } | ||
print $ip; // Test code | print $ip; // Test code | ||
? | ?> | ||
</pre> | |||
| | | | ||
* Initialize Curl and save memory location in variable $ch | * Initialize Curl and save memory location in variable $ch | ||
Line 59: | Line 58: | ||
|- | |- | ||
| | | | ||
<pre> | |||
<?php | |||
$ch=curl_init(); | $ch=curl_init(); | ||
curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); | curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); | ||
Line 74: | Line 73: | ||
else{ | else{ | ||
// Extract IP address | // Extract IP address | ||
if(preg_match( | if(preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $buffer, $ipmatch)){ | ||
$ip = $ipmatch[0]; // Save IP to variable | $ip = $ipmatch[0]; // Save IP to variable | ||
} | } | ||
} | } | ||
print $ip; // Test code | print $ip; // Test code | ||
? | ?> | ||
</pre> | |||
| | | | ||
'''''Run Test 1'':''' | '''''Run Test 1'':''' | ||
* Run servers | * Run servers | ||
* Type ''' | * Type '''<nowiki>http:</nowiki>//localhost/dtdns_test_1.php''' into your browser | ||
* Result: Returns your '''current'''IP address for example | * Result: Returns your '''current'''IP address for example | ||
<pre> | |||
179.79.934.216 | 179.79.934.216 | ||
</pre> | |||
|} | |} | ||
'''''[[#top | Top]]''''' | '''''[[#top | Top]]''''' | ||
Line 100: | Line 99: | ||
|- | |- | ||
| | | | ||
<pre> | |||
COLOR B0 | COLOR B0 | ||
@echo off | @echo off | ||
Line 114: | Line 113: | ||
popd | popd | ||
EXIT | EXIT | ||
</pre> | |||
| | | | ||
'''''Run Test 2'':''' | '''''Run Test 2'':''' | ||
Line 120: | Line 119: | ||
* Double click on Run_dtdns_test_1.bat | * Double click on Run_dtdns_test_1.bat | ||
* Result: Returns your '''current''' IP address for example | * Result: Returns your '''current''' IP address for example | ||
<pre> | |||
179.79.934.216Press any key to continue . . . | 179.79.934.216Press any key to continue . . . | ||
</pre> | |||
|} | |} | ||
'''''[[#top | Top]]''''' | '''''[[#top | Top]]''''' |
Latest revision as of 17:35, 24 November 2010
DtDNS: Introduction | Crude Updater | WhatsMyIP | PHP cURL 1 | PHP cURL 2 | IP Tracker | Plugin 1 | Plugin 2
|
|
DtDNS and automatic update |
Introduction
On the previous page I explained why you should never enable external includes in php.ini there is a safer way to download external pages and that is to use cURL.
Uniform Server 5.0-Nano has cURL enabled by default hence you can start using it straightaway. This page looks at extracting your current IP address from one of the pages downloaded see previous page for page links.
Example Code
This script is based on a template taken from the cURL tutorial found on this page.
Page downloaded is captured as a text string and saved in variable $buffer. This isolates any potenial harfull code.
Extracting the IP address is performed using a regex since we are specifically targeting information we want and discarding any other page content means any harmful code will never be run.
<?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($ch); curl_close($ch); if (empty($buffer)){ // Need to add code and recover from this } else{ // Extract IP address if(preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $buffer, $ipmatch)){ $ip = $ipmatch[0]; // Save IP to variable } } print $ip; // Test code ?> |
|
Test 1 - Server
The script will run on a server, perform the following test:
- Create a new folder C:\dtdns_test
- Extract a copy of 5-Nano to this folder.
- Create a new text file in folder C:\dtdns_test\UniServer\www and name it dtdns_test_1.php add the following content
<?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'http://myip.dtdns.com'); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($ch); curl_close($ch); if (empty($buffer)){ // Need to add code and recover from this } else{ // Extract IP address if(preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $buffer, $ipmatch)){ $ip = $ipmatch[0]; // Save IP to variable } } print $ip; // Test code ?> |
Run Test 1:
179.79.934.216 |
Test 2 - PHP CLI
We require the script to run in PHP cli mode.
- Create a new folder C:\dtdns_test\UniServer\plugins\dtdns_updater
- Copy file C:\dtdns_test\UniServer\www\dtdns_test_1.php to the above folder.
- Inside folder dtdns_updater create a new text file Run_dtdns_test_1.bat with the folowing content:
Run_dtdns_test_1.bat
COLOR B0 @echo off cls rem ### working directory current folder pushd %~dp0 ..\..\usr\local\php\php.exe dtdns_test_1.php rem ### restore original working directory pause popd EXIT |
Run Test 2:
179.79.934.216Press any key to continue . . . |
Summary
I have shown how easy Curl is to use and how to obtain your current IP address. The code can be used in either server or CLI mode.
Its only part of a solution we need to access DtDNS update page by providing an ID and password over a secure connection. Again Curl makes this easy see next page.