Hi,
Recently I am try to do some programming work.
I want my Zen Cart store to update tracking information to the online system of our shipping agency.
I got strange problem.
I installed in my local PC:
Apache 2.2.9
PHP 5.2.6
MySQL 5.1.28&4.0.26
I also install a zencart in my local PC.
I ran the following track.php file in my PC:
Everything works fine. I could get reply.PHP Code:<?php
echo "hi";
var_dump(esp_track_result('10465708'));
function esp_track_result($sn){
$url = "http://api.espeedpost.com/track/";
$devid = "EspeedPost";
$appid = "80010616-XXXXXXXXXXXX";
if ($sn != '')
{
$string = array
(
"devid" => $devid,
"appid" => $appid,
"cus_name" => "no",
"cus_value" => $sn,
);
$content = Post($url, $string);
$objXmlToArray=new xmlToArray();
$objXmlToArray->parseString($content);
$data = $objXmlToArray->getTree();
//print_r($data);
$objXmlToArray->free();
//提取查询信息
$result = $data[GetTrackingInformation][Result][value];
if ($result == "Success"){
//echo "The latest status of parcel ".$data[GetTrackingInformation][ParcelNumber][value]." is ".$data[GetTrackingInformation][ParcelInfo][LastStatusContent][value]." at ".$data[GetTrackingInformation][ParcelInfo][LastDateTime][value]."\n";
//echo "AAAAAA";
return $data[GetTrackingInformation][ParcelNumber][value];
}
if ($result == "Failure"){
//echo $data[GetTrackingInformation][Reason][value]."\n";
//echo "BBBBBBB";
return false;
}
}
}
////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
function Post($url, $post = null)
{
$context = array();
if (is_array($post))
{
ksort($post);
$context["http"] = array
(
"method" => "POST",
"content" => http_build_query($post, "", "&"),
);
}
return file_get_contents($url, false, stream_context_create($context));
}
//////////////////////////////////////////////////////
function urlvalue($urlname)
{
$urlvalue = !empty($_POST[$urlname]) ? $_POST[$urlname] : $_GET[$urlname];
return $urlvalue;
}
//////////////////////////////////////////////////////////
class xmlToArray
{
var $parser;
/**
* source encoding
*
* @var string
*/
var $srcenc;
/**
* target encoding
*
* @var string
*/
var $dstenc;
/**
* the original struct
*
* @access private
* @var array
*/
var $_struct = array();
/**
* Constructor
*
* @access public
* @param mixed [$srcenc] source encoding
* @param mixed [$dstenc] target encoding
* @return void
* @since
*/
function xmlToArray($srcenc = null, $dstenc = null)
{
$this->srcenc = $srcenc;
$this->dstenc = $dstenc;
// initialize the variable.
$this->parser = null;
$this->_struct = array();
}
/**
* 释放资源
*
* @access public
* @return void
**/
function free()
{
if (isset($this->parser) && is_resource($this->parser))
{
xml_parser_free($this->parser);
unset($this->parser);
}
}
/**
* 解析XML文件
*
* @access public
* @param string [$file] the XML file name
* @return void
* @since
*/
function parseFile($file)
{
$data = @file_get_contents($file) or die("Can't open file $file for reading!");
$this->parseString($data);
}
/**
* 解析XML字符串
*
* @access public
* @param string [$data] XML data
* @return void
*/
function parseString($data)
{
if ($this->srcenc === null)
{
$this->parser = @xml_parser_create() or die('Unable to create XML parser resource.');
}
else
{
$this->parser = @xml_parser_create($this->srcenc) or die('Unable to create XML parser resource with '. $this->srcenc .' encoding.');
}
if ($this->dstenc !== null)
{
@xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, $this->dstenc) or die('Invalid target encoding');
}
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); // lowercase tags
xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1); // skip empty tags
if (!xml_parse_into_struct($this->parser, $data, &$this->_struct))
{
printf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->parser)),
xml_get_current_line_number($this->parser)
);
$this->free();
exit();
}
$this->_count = count($this->_struct);
$this->free();
}
/**
* 返回解析完毕后的XML数组
*
* @access public
* @return array
*/
function getTree()
{
$i = 0;
$tree = array();
$tree = $this->addNode(
$tree,
$this->_struct[$i]['tag'],
(isset($this->_struct[$i]['value'])) ? $this->_struct[$i]['value'] : '',
(isset($this->_struct[$i]['attributes'])) ? $this->_struct[$i]['attributes'] : '',
$this->getChild($i)
);
unset($this->_struct);
return ($tree);
}
/**
* recursion the children node data
*
* @access public
* @param integer [$i] the last struct index
* @return array
*/
function getChild(&$i)
{
// contain node data
$children = array();
// loop
while (++$i < $this->_count)
{
// node tag name
$tagname = $this->_struct[$i]['tag'];
$value = isset($this->_struct[$i]['value']) ? $this->_struct[$i]['value'] : '';
$attributes = isset($this->_struct[$i]['attributes']) ? $this->_struct[$i]['attributes'] : '';
switch ($this->_struct[$i]['type']) {
case 'open':
// node has more children
$child = $this->getChild($i);
// append the children data to the current node
$children = $this->addNode($children, $tagname, $value, $attributes, $child);
break;
case 'complete':
// at end of current branch
$children = $this->addNode($children, $tagname, $value, $attributes);
break;
case 'cdata':
// node has CDATA after one of it's children
$children['value'] .= $value;
break;
case 'close':
// end of node, return collected data
return $children;
break;
}
}
//return $children;
}
/**
* Appends some values to an array
*
* @access public
* @param array [$target]
* @param string [$key]
* @param string [$value]
* @param array [$attributes]
* @param array [$inner] the children
* @return void
* @since
*/
function addNode($target, $key, $value = '', $attributes = '', $child = '')
{
if (!isset($target[$key]['value']) && !isset($target[$key][0]))
{
if ($child != '')
{
$target[$key] = $child;
}
if ($attributes != '')
{
foreach ($attributes as $k => $v)
{
$target[$key][$k] = $v;
}
}
$target[$key]['value'] = $value;
}
else
{
if (!isset($target[$key][0]))
{
// is string or other
$oldvalue = $target[$key];
$target[$key] = array();
$target[$key][0] = $oldvalue;
$index = 1;
}
else
{
// is array
$index = count($target[$key]);
}
if ($child != '') {
$target[$key][$index] = $child;
}
if ($attributes != '') {
foreach ($attributes as $k => $v) {
$target[$key][$index][$k] = $v;
}
}
$target[$key][$index]['value'] = $value;
}
return $target;
}
}
//////////////////////////////////////////////////////////////////////
?>
However, I upload the code to my server:
Apache version 2.2.26
PHP version 5.2.17
MySQL version 5.5.36-log
The php could not run. I got nothing on my browser. Even the first code replying "hi" seems not work. Nothing replied even error indication.
I also wrote other php files and they all could run.
Any ideal what 's wrong?
Thanks for your time.


Reply With Quote

