构建一个MailChimp注册表单,获取PHP解析错误之谜

时间:2011-08-22 21:13:29

标签: php jquery mailchimp

我正在处理从http://apidocs.mailchimp.com/api/downloads/获得的代码 称为“MCAPI简单订阅示例代码” - 使用jQuery的代码。

在本地,PHP版本是5.3.5,它工作得很好。但是当我将它部署到生产版本时,PHP版本是5.2.17,我收到此错误:

  

解析错误:语法错误,/ home / myperf7 /中的意外T_FUNCTION   第1行的public_html / inc / store-address.php

http://myperfectbicycle.com/看到它的实际效果 - 如您所见, 这个错误不只是审美。它可以防止表单收集 电子邮件地址已成功。

知道可能导致什么原因吗?如果需要,我可以提供进一步的phpinfo()详细信息 - 只是不想向所有人发送垃圾邮件。以下是store-address.php的内容:

    <?php

    function storeAddress(){

        // Validation
        if(!$_GET['email']){ return "No email address provided"; } 

        if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
            return "Email address is invalid"; 
        }

        require_once('MCAPI.class.php');
        // grab an API Key from http://admin.mailchimp.com/account/api/
        $api = new MCAPI('XXXXXXX');

        // grab your List's Unique Id by going to http://admin.mailchimp.com/lists/
        // Click the "settings" link for the list - the Unique Id is at the bottom of that page. 
        $list_id = "XXXXXXX";

        if($api->listSubscribe($list_id, $_GET['email'], '') === true) {
            // It worked!   
            return 'Success! Check your email to confirm sign up.';
        }else{
            // An error ocurred, return error message   
            return 'Error: ' . $api->errorMessage;
        }

    }

    // If being called via ajax, autorun the function
    if(isset($_GET['ajax'])){ echo storeAddress(); }

    ?>

此代码的哪些部分在PHP 5.2版中无法正常运行?嗯...

在评论中,有人询问如何包含store-address.php文件;这是它,来自我的index.php页面:

    <form id="signup" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
        <input type="text" value="" name="email" class="email" id="email" placeholder="email address" required="required" />
        <div class="clear">
            <input type="submit" value="Notify me" name="subscribe" class="button"/>
        </div>
        <span id="response"><?php require_once('inc/store-address.php'); if(isset($_GET['submit'])){ echo storeAddress(); } ?></span>
    </form>

1 个答案:

答案 0 :(得分:0)

鉴于错误在第1行,并且在您的网站上查看:

  

解析错误:语法错误,第1行/home/myperf7/public_html/inc/store-address.php中的意外T_STRING

我建议打开你的store-address.php并在文件的第一行查找任意随机字符串,空格,换行符等。此外,在多行上使用storeAddress()响应块可能是个好主意。

<span id="response"><?php 
require_once('inc/store-address.php'); 
if(isset($_GET['submit'])){ 
    echo storeAddress(); 
} 

?></span>

require_once()当然应该在另一条线上。