2011-08-22 51 views
0

有什麼辦法可以重寫下面的代碼,以便它可以在運行PHP 5.2.x的環境中運行?它工作得很好的運行在版本5.3.5(DEV),但我的共享主機環境(產品)運行5.2和拋出這個錯誤:PHP代碼在ver。 5.2,而不是5.3

Parse error: syntax error, unexpected T_FUNCTION in /home/myperf7/ public_html/inc/store-address.php on line 1

這裏是有問題的代碼:

<?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(); } 

?> 

這如何在商店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> 

感謝這麼這麼這麼這麼多!

回答

0

看起來你可能有一些非空白字符在你的function之前。

您的PHP代碼似乎適用於5.2和5.3。

+0

嗨,感謝您審查代碼。但是php中的最後一個「p」和函數中的「f」之間只有空白。但是,如果我刪除了一些空白,而是使第一行代碼爲'<?php function storeAddress(){',那麼我會得到一個新錯誤:'解析錯誤:語法錯誤,意外$ end' – mark

+0

它可能有看起來像是一個空白的東西,事實並非如此。 '意外的$ end'通常意味着你留下了一個未關閉的支架,但是我找不到任何關於你的代碼的信息 – seppo0010

+0

除了未關閉的支架之外,還有什麼可能導致'意外的$ end'? – mark

0

我能看到的唯一可能是錯誤的是$api->errorMessage。嘗試取出整個,如果聲明:

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; 
} 

然後看看你是否得到一個錯誤。

1

發生此問題的原因是Netbeans將我的PHP文件全部保存在一行中,直到我在普通的舊記事本中打開我的代碼之前,我一直沒有選擇該問題。即使在Notepad ++中打開Netbeans保存的文件,代碼也會像平常一樣顯示爲縮進和斷行。但是在經典的記事本中,所有代碼都在一行中,這意味着腳本一旦達到第一個「//」註釋就會中斷。

感謝大家的幫助!

+4

我想你的共享主機環境是Windows服務器。 – xdazz

+0

有換行符,但它們是Unix樣式的換行符。記事本可能是唯一不理解它們的編輯器。 在Windows上,您的文件應該是Windows風格的。在NetBeans中可能有一個設置。 – MaxVT

+0

雅,我整理了Netbeans的設置,所以一切都很好!謝謝! – mark