URL에서 값을 가져 와서 내 변환기 함수에서 사용하도록 일부 PHP 코드를 변경하려고합니다. 내가 이렇게 같은 URL에 그것을 시도 할 때PHP는 함수에서 사용할 URL에서 GET 값을 사용합니다.
https://localhost/atwd/test/white%20hat/conv?amnt=10&from=GBP&to=USD
다음 여기에 내 CurrencyConverter.php
파일
<?php
class CurrencyConverter
{
var $xml_file = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml";
var $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $mysql_table;
var $exchange_rates = array();
// Load Currency Rates
function CurrencyConverter($host, $user, $pass, $db, $tb)
{
$this->mysql_host = $host;
this->mysql_user = $user;
$this->mysql_pass = $pass;
$this->mysql_db = $db;
$this->mysql_table = $tb;
$this->checkLastUpdated();
$conn = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db($this->mysql_db, $conn);
$sql = "SELECT * FROM " . $this->mysql_table;
$rs = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($rs))
{
$this->exchange_rates[$row['currency']] = $row['rate'];
}
}
/* Perform the actual conversion, defaults to £1.00 GBP to USD */
function convert($a, $b, $c, $decimals = 2)
{
$a = $_GET['amnt'];
$b = $_GET['from'];
$c = $_GET['to'];
strip_tags($a);
strip_tags($b);
strip_tags($c);
return (number_format(($a/$this->exchange_rates[$b]) * $this->exchange_rates[$c], $decimals));
}
/* Check to see how long since the data was last updated */
function checkLastUpdated()
{
$conn = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db($this->mysql_db, $conn);
$sql = "SHOW TABLE STATUS FROM " . $this->mysql_db . " LIKE '" . $this->mysql_table . "'";
$rs = mysql_query($sql, $conn);
if (mysql_num_rows($rs) == 0)
{
$this->createTable();
}
else
{
$row = mysql_fetch_array($rs);
if (time() > (strtotime($row["Update_time"]) + (12 * 60 * 60)))
{
$this->downloadExchangeRates();
}
}
}
/* Download xml file, extract exchange rates and store values in database */
function downloadExchangeRates()
{
$currency_domain = substr($this->xml_file, 0, strpos($this->xml_file, "/"));
$currency_file = substr($this->xml_file, strpos($this->xml_file, "/"));
$fp = @fsockopen($currency_domain, 80, $errno, $errstr, 10);
if ($fp)
{
$out = "GET " . $currency_file . " HTTP/1.1\r\n";
$out.= "Host: " . $currency_domain . "\r\n";
$out.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\r\n";
$out.= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
$buffer = fgets($fp, 128);
}
fclose($fp);
$pattern = "{<Cube\s*currency='(\w*)'\s*rate='([\d\.]*)'/>}is";
preg_match_all($pattern, $buffer, $xml_rates);
array_shift($xml_rates);
for ($i = 0; $i < count($xml_rates[0]); $i++)
{
$exchange_rate[$xml_rates[0][$i]] = $xml_rates[1][$i];
}
$conn = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db($this->mysql_db, $conn);
foreach($exchange_rate as $currency => $rate)
{
if ((is_numeric($rate)) && ($rate != 0))
{
$sql = "SELECT * FROM " . $this->mysql_table . " WHERE currency='" . $currency . "'";
$rs = mysql_query($sql, $conn) or die(mysql_error());
if (mysql_num_rows($rs) > 0)
{
$sql = "UPDATE " . $this->mysql_table . " SET rate=" . $rate . " WHERE currency='" . $currency . "'";
}
else
{
$sql = "INSERT INTO " . $this->mysql_table . " VALUES('" . $currency . "'," . $rate . ")";
}
$rs = mysql_query($sql, $conn) or die(mysql_error());
}
}
}
}
/* Create the currency exchange table */
function createTable()
{
$conn = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_pass);
$rs = mysql_select_db($this->mysql_db, $conn);
$sql = "CREATE TABLE " . $this->mysql_table . " (currency char(3) NOT NULL default '', rate float NOT NULL default '0', PRIMARY KEY(currency)) ENGINE=MyISAM";
$rs = mysql_query($sql, $conn) or die(mysql_error());
$sql = "INSERT INTO " . $this->mysql_table . " VALUES('EUR',1)";
$rs = mysql_query($sql, $conn) or die(mysql_error());
$this->downloadExchangeRates();
}
}
이고 ...... "개체가 없습니다"있다가 계속 경우 메신저 통화 conv.php
이라는 다른 파일의 함수.
<?php
include 'CurrencyConverter.php';
$x = new CurrencyConverter('localhost','root','','converterTest','currency');
echo $x->convert($a, $b, $c);
모든 도움을 주시면 감사하겠습니다. '변환'기능은 'CurrencyConverter.php'인 경우
https://localhost/atwd/test/white%20hat/conv.php?amnt=10&from=GBP&to=USD
다음 '변환'기능이 기본 파일에있는 경우
먼저 매개 변수를 가져 와서 url 매개 변수를 가져 오는 것이 좋습니다. 두 번째로 숙제에 태그를 붙이십시오. 셋째, 사용중인 전체 코드를 게시하십시오. 원인이 아니라 생각할 수있는 코드 단편은 아닙니다. – jka6510
exchange_rates 란 무엇입니까? – Poonam
여기에서 문제가 발생하는지 확인하기 위해'var_dump ($ _ GET [ 'amn']); '을 시도 했습니까? –