出现以下错误

时间:2014-04-18 02:04:08

标签: php

第一个错误:严格标准:只应在第15行的/home/user/public_html/ref/hhhhh_hhhhh/index.php中通过引用传递变量

点击提交按钮后:

警告:无法修改标头信息 - 已经发送的标头(/home/user/public_html/ref/hhhhh_hhhhh/index.php:3中的输出)/home/user/public_html/ref/hhhhh_hhhhh/index.php在第28行

<?php       
require_once 'jsonRPCClient.php';
$api_key = 'apikey';
$api_url = 'url';
$client = new jsonRPCClient($api_url);
$campaigns = $client->get_campaigns(
    $api_key,
    array (
        # find by name literally
        'name' => array ( 'EQUALS' => 'test' )
    )
);
$CAMPAIGN_ID = array_pop(array_keys($campaigns));
if(isset($_POST['submit'])) 
{
    $result = $client->add_contact(
    $api_key,
    array (
        'campaign'  => $CAMPAIGN_ID,
        'name'      => 'Test',
        'email'     => 'test@test.test',
    )
    );
$cid = "infod";
$site_url = $cid.".pokemon.com";    
header("Location: http://$site_url") ;
}

?>

1 个答案:

答案 0 :(得分:0)

我从评论中看到你已经将严格的错误报告关闭 - 这不是一件好事 - 基本上你只是隐藏了一个真正的错误,你现在得到一个空白页面并且没有错误帮助你...

第一个错误:

Only variables should be passed by reference in   
/home/user/public_html/ref/hhhhh_hhhhh/index.php on line 15

表示您正在调用函数并通过引用传递非变量。 &#39;通过引用传递&#39;表示该函数获取对原始变量的引用(而不是副本),并且可以对其进行修改,以便对您在调用代码中可以看到的变量进行更改。

所以,如果出现错误,那么第15行似乎就是这样:

$result = $client->add_contact(
    $api_key,
    array (
        'campaign'  => $CAMPAIGN_ID,
        'name'      => 'Test',
        'email'     => 'test@test.test',
    )
);

我猜测add_contact的定义是通过引用获取第二个参数(不确定原因)并且你没有给它一个真实的&#39;变量可以使用,因为你基本上构建了一个将被抛弃的临时数组。

首先尝试构建数组:

$camp_arr = array (
    'campaign'  => $CAMPAIGN_ID,
    'name'      => 'Test',
    'email'     => 'test@test.test',
);

$result = $client->add_contact($api_key, $camp_arr);

您可能还想(稍后)查看$ camp_arr的内容,看看发生了什么。

您的第二个错误意味着标题已经发送,这是因为您在调用header之前输出了一些文字,只要您发送文字就会发送标题并且您无法重新发送这些标题 - 这几乎肯定是由错误消息引起的,它计为输出文本并导致标题被发送。注意,另一个常见原因是在<?php ... ?>块之外有文本或空格。