通过php脚本在外部文件中执行Javascript

时间:2011-10-05 08:13:59

标签: php javascript curl

我一直在尝试创建一个基本上是移动短代码消息的php文件。由于页面上的任何输出都会自动显示在移动短信中,因此我无法在页面上使用任何html。但我在页面上输出文本之前执行一些谷歌分析JavaScript代码时遇到问题。我创建了一个外部文件并在那里编写了javascript,并尝试通过curl执行该文件,但curl不执行javascript。所以我的主要文件SMSapi.php的代码是这样的:

<?php
    if(isset($_GET['mobile'])){
        $number = $_GET['mobile'];
    }

    if(isset($_GET['text'])){
        $data = $_GET['text'];
    }

    $brand = "mybrand";
    $event = "MyEvent";
    $deal = "MyDeal";

    $url = "http://myurl.com/sms.php";

    $post_string = "brand={$brand}&event={$event}&deal={$deal}";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $success = curl_exec($ch);

    curl_close($ch);

    echo "Your discount code is XYZ123";
?>

sms.php代码如下:

<?php 

if(isset($_POST) && !empty($_POST['event']) && !empty($_POST['brand']) && !empty($_POST['deal'])):
    $event = urldecode($_POST['event']);
    $brand = urldecode($_POST['brand']);
    $deal = urldecode($_POST['deal']);
?>
<html>
    <head>
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-MyNum']);
        _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
    _gaq.push(['_trackEvent', '<?php echo $event; ?>', '<?php echo $brand; ?>', '<?php echo $deal; ?>']);
</script>
</head>
</html>
<?php endif ?>

主SMS api文件向sms.php文件发出curl请求,当文件执行时,html和javascript作为文本返回,而不执行任何执行。因此,javascript会显示在短信中。

有没有办法通过php实现外部网址及其中的所有javascripts?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我认为这是一个在SMS提供商的电话上运行的脚本,而您却想在Google Analytics中记录此事件。

首先,我认为通过登录数据库而不是分析可以更容易地实现这一点。由于javascript正在运行服务器端,因此除了该事件之外,您将不会获得任何额外信息。

如果您确实需要运行Google代码,那么您需要尝试搜索“服务器端javascript google analytics”。解决方案将高度依赖于您运行的服务器平台以及可以安装的内容。

可能对您的PHP有用的一个有趣的链接是:

http://code.google.com/p/serversidegoogleanalytics/

但我没有使用它,所以不知道它的效果如何。