-3

我知道要使 header(Location) 工作,必须先发送没有输出。问题是我已经检查了很多次代码,但找不到实际作为输出发送的内容,从而阻止了我的标头(位置)工作。

任何人都可以发现错误吗?

    <div id="content">
        <h2>Lägg till</h2>
        <p>Fyll i fälten och klicka på Lägg till för att skapa en ny kontakt i listan.</p>
        <?php
            $editid = $_GET['contact_id'];
            $query = "SELECT *, Persons.p_id FROM Persons INNER JOIN Pictures ON (Pictures.p_id = Persons.p_id) WHERE Persons.p_id = " . $editid;
            $result = mysql_query($query);

            while ($row = mysql_fetch_array($result)) {
                $name = $row['name'];
                $address = $row['address'];
                $birthday = $row['birthday'];
                $picture = $row['source'];
                $p_id = $row['p_id'];

            }
        ?>  

        <form action="" id="addressForm" method="post">
            <ul>
                <li><label for="name"><strong>Namn</strong></label><input type="text" name="name" id="name"/></li>
                <li><label for="address"><strong>Adress</strong></label><input type="text" name="address" id="address"/></li>

                <li><label for="year"><strong>Födelsedag</strong></label>
                <select id="year" name="year">
                    <option value="2013">2013</option>
                    <option value="2012">2012</option>
                    <option value="2011">2011</option>
                    <option value="2010">2010</option>
                    <option value="2009">2009</option>
                    <option value="2008">2008</option>
                    <option value="2007">2007</option>
                    <option value="2006">2006</option>
                    <option value="2005">2005</option>
                    <option value="2004">2004</option>
                    <option value="2003">2003</option>
                    <option value="2002">2002</option>
                    <option value="2001">2001</option>
                    <option value="2000">2000</option>
                    <option value="1999">1999</option>
                    <option value="1998">1998</option>
                    <option value="1997">1997</option>
                    <option value="1996">1996</option>
                    <option value="1995">1995</option>
                    <option value="1994">1994</option>
                    <option value="1993">1993</option>
                    <option value="1992">1992</option>
                    <option value="1991">1991</option>
                    <option value="1990">1990</option>
                </select>
                <select name="month">
                    <option value='1'>1</option>
                    <option value='2'>2</option>
                    <option value='3'>3</option>
                    <option value='4'>4</option>
                    <option value='5'>5</option>
                    <option value='6'>6</option>
                    <option value='7'>7</option>
                    <option value='8'>8</option>
                    <option value='9'>9</option>
                    <option value='10'>10</option>
                    <option value='11'>11</option>
                    <option value='12'>12</option>
                </select>
                <select name="day">
                    <option value='1'>1</option>
                    <option value='2'>2</option>
                    <option value='3'>3</option>
                    <option value='4'>4</option>
                    <option value='5'>5</option>
                    <option value='6'>6</option>
                    <option value='7'>7</option>
                    <option value='8'>8</option>
                    <option value='9'>9</option>
                    <option value='10'>10</option>
                    <option value='11'>11</option>
                    <option value='12'>12</option>
                    <option value='13'>13</option>
                    <option value='14'>14</option>
                    <option value='15'>15</option>
                    <option value='16'>16</option>
                    <option value='17'>17</option>
                    <option value='18'>18</option>
                    <option value='19'>19</option>
                    <option value='20'>20</option>
                    <option value='21'>21</option>
                    <option value='22'>22</option>
                    <option value='23'>23</option>
                    <option value='24'>24</option>
                    <option value='25'>25</option>
                    <option value='26'>26</option>
                    <option value='27'>27</option>
                    <option value='28'>28</option>
                    <option value='29'>29</option>
                    <option value='30'>30</option>
                    <option value='31'>31</option>
                </select>
                </li>
                <li><label for="picture"><strong>Bild (URL)</strong></label><input type="text" name="picture" id="picture"/></li>   
                <li><input type="submit" id="submit" name="submit" value="Lägg till"/></li>
            </ul>
        </form>
        <?php
            if(isset ($_POST['submit']))
            {
                $editname = mysql_real_escape_string(htmlspecialchars($_POST['name']));
                $editaddress = mysql_real_escape_string(htmlspecialchars($_POST['address']));
                $editpicture = mysql_real_escape_string(htmlspecialchars($_POST['picture']));

                $year = $_POST['year'];
                $month = $_POST['month'];
                $day = $_POST['day'];

                if ($month < 10)
                {
                    $month = "0$month";
                }
                if ($day < 10)
                {
                    $day = "0$day";
                }
                $editbirthday = $year . "-" . $month . "-" . $day;

                if (!empty($name) && !empty($address)){
                    $update = "UPDATE Persons SET name = '$editname', address = '$editaddress', birthday = '$editbirthday' WHERE p_id = '$editid'";
                    $result = mysql_query($update);

                    $query = "SELECT * FROM Persons WHERE p_id = '$editid' LIMIT 1";
                    $result = mysql_query($query);
                    while ($row = mysql_fetch_array($result)) {
                        $p_id = $row['p_id'];

                        $update = "UPDATE Pictures SET source = '$editpicture' WHERE p_id = '$editid'";
                        $result = mysql_query($update);
                        header('Location: index.php');
                    }
                }
            }
        ?>
    </div>
4

4 回答 4

2

请记住,输出可能是:

  • <?php之前或之后的空格?>
  • UTF-8 字节顺序标记
  • 错误消息或通知
  • print,echo
  • 代码前的原始<html>区域<?php

所以你达到了这个列表的最后一点......

于 2013-07-28T16:29:11.093 回答
0

您必须将标题放在任何 HTML 输出之上。在这种情况下,您可以将其放在文档的顶部。因此,只需将所有 PHP 放在顶部即可。

将下面的整个 if 语句放在 PHP 文件的顶部。我认为这不会引起任何问题。

if(isset ($_POST['submit']))

我希望这有帮助

于 2013-07-28T16:28:59.480 回答
0

你已经有输出了。必须在发送任何输出之前设置标头。

“请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是通过 PHP。”

请参阅有关它的文档。希望这可以帮助。

于 2013-07-28T16:29:42.680 回答
-1
  • 没有输出
  • 没有空格
  • 保存没有 BOM 的文件

编码 - 记事本++

于 2013-07-28T16:40:39.730 回答