-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 バイト オーダー マーク
  • エラーメッセージまたは通知
  • printecho
  • コードの前の生<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 に答える