1

登録が成功した後にページをリダイレクトすると、コードはすべて正常に機能しますが、ヘッダー機能が機能せず、ページがリダイレクトされません。ページはリダイレクトされません。私のコードは以下のとおりです

  <?php
error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL ^ E_WARNING);

//include("lib/local_config.php");
include("lib/config.php");


$activation=md5(uniqid(rand(), true));

if(isset($_POST["tb_submit"]))
{
    $fname=$_POST["tb_fname"];
    $email=$_POST["tb_email"];
    $pass=$_POST["tb_pass"];
    $repass=$_POST["tb_repass"];
    $contact=$_POST["tb_contact"];

    $select_email=mysql_query("select email from user_reg where email='$email'");
    $rows=mysql_fetch_row($select_email);
    $e_id=$rows[0];

    if(!$email==$e_id && $pass==$repass)
    {
        $insert="insert into user_reg ( fname ,email ,password ,contact,Activation)    values      ('$fname' , '$email' , '$pass' ,'$contact' ,'$activation')";
        $insert_query=mysql_query($insert);

        if(mysql_affected_rows($connect) == 1)
        //if(mysql_affected_rows() == 1)
        {
            $to = $_POST['tb_email'];
            $subject = "Fundu App Creator - Registration confirmation mail ";
            $message = <<<DEMO
                      <html>
                      <head>

                      <link href='http://www.fundumobi.com/app/templatemo_style.css' type='text/css'  
                       rel='stylesheet' />
                     <link href='http://www.fundumobi.com/app/styles/frm.css' rel='stylesheet' 
                       type='text/css' />
                     <style type='text/css'>

                     .style1 {
                    font-size: 14px;
                    font-style: italic;
                    font-weight: bold;

                      }
                      .style2 {color: #FFFFFF}

                       </style>
                      </head>
                     <body>
                     <table width='50%' border='0' align='center'>
                     <tr>
                      <th height='100' bgcolor='#006784'>
                      <div id='site_logo'></div>    </th>
                     </tr>
                    <tr>
                    <td height='247'><div >
                      <div align='center' class='style1'>
                        <p>Your Registration is successful !!!! </p>
                        <p>Now Please click the following Button to complete the registration process:</p>
                        <p>&nbsp;</p><br/>
                        <div ><a href='http://www.fundumobi.com/app/activation.php?act=$activation'>      
                       <img src='images/button66535179.png'/></a></div>
                      </div></td>
                     </tr>
                     <tr>
                       <td height='64' bgcolor='#006784'><div 
                      align='center'>www.funduappcreator.com</div>    </td>
                     </tr>
                    </table>
                    </body>
                    </html>
                    DEMO;

            $from = "contact@fundumobi.com";

            mail($to, $subject, $message, 'From:'.$from);
            header("location:mesg.php");
        }
        else
        { // If it did not run OK.
            header("location:index.php?er=2");
        }
    }
}

?>
4

6 に答える 6

3

コンテンツを出力した後にヘッダーを送信することはできません。ここでは、PHP タグの前に空白を出力しています。

  <?php
^^ remove this whitespace

エラーログを確認すると、次のことがわかります。

警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています

于 2012-11-28T07:40:48.903 に答える
1

出力バッファを使用してみてください

<?php ob_start() ?>

このコードの先頭に

于 2012-11-28T07:41:48.187 に答える
1

exit;リダイレクト コードの後に​​ が必要です。このコメントを参照してください。

于 2012-11-28T07:41:11.403 に答える
0

問題を検出するには、headers_sent 関数を使用します。 http://php.net/manual/en/function.headers-sent.php

ヘッダーが送信されたかどうか、または送信された場所を確認します。

ヘッダー ブロックが既に送信されると、 header() 関数を使用してヘッダー行を追加することはできません。この関数を使用すると、少なくとも HTTP ヘッダー関連のエラー メッセージが表示されないようにすることができます。別のオプションは、出力バッファリングを使用することです。

// An example using the optional file and line parameters, as of PHP 4.3.0
// Note that $filename and $linenum are passed in for later use.
// Do not assign them values beforehand.
if (!headers_sent($filename, $linenum)) {
    header('Location: http://www.example.com/');
    exit;

// You would most likely trigger an error here.
} else {

    echo "Headers already sent in $filename on line $linenum\n" .
          "Cannot redirect, for now please click this <a " .
          "href=\"http://www.example.com\">link</a> instead\n";
    exit;
}

あなたのコードのために:

<?php
error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL ^ E_WARNING);

//include("lib/local_config.php");
include("lib/config.php");


$activation=md5(uniqid(rand(), true));

if(isset($_POST["tb_submit"]))
{
    $fname=$_POST["tb_fname"];
    $email=$_POST["tb_email"];
    $pass=$_POST["tb_pass"];
    $repass=$_POST["tb_repass"];
    $contact=$_POST["tb_contact"];

    $select_email=mysql_query("select email from user_reg where email='$email'");
    $rows=mysql_fetch_row($select_email);
    $e_id=$rows[0];

    if(!$email==$e_id && $pass==$repass)
    {
        $insert="insert into user_reg ( fname ,email ,password ,contact,Activation)    values      ('$fname' , '$email' , '$pass' ,'$contact' ,'$activation')";
        $insert_query=mysql_query($insert);

        if(mysql_affected_rows($connect) == 1)
        //if(mysql_affected_rows() == 1)
        {
            $to = $_POST['tb_email'];
            $subject = "Fundu App Creator - Registration confirmation mail ";
            $message = <<<DEMO
                      <html>
                      <head>

                      <link href='http://www.fundumobi.com/app/templatemo_style.css' type='text/css'  
                       rel='stylesheet' />
                     <link href='http://www.fundumobi.com/app/styles/frm.css' rel='stylesheet' 
                       type='text/css' />
                     <style type='text/css'>

                     .style1 {
                    font-size: 14px;
                    font-style: italic;
                    font-weight: bold;

                      }
                      .style2 {color: #FFFFFF}

                       </style>
                      </head>
                     <body>
                     <table width='50%' border='0' align='center'>
                     <tr>
                      <th height='100' bgcolor='#006784'>
                      <div id='site_logo'></div>    </th>
                     </tr>
                    <tr>
                    <td height='247'><div >
                      <div align='center' class='style1'>
                        <p>Your Registration is successful !!!! </p>
                        <p>Now Please click the following Button to complete the registration process:</p>
                        <p>&nbsp;</p><br/>
                        <div ><a href='http://www.fundumobi.com/app/activation.php?act=$activation'>      
                       <img src='images/button66535179.png'/></a></div>
                      </div></td>
                     </tr>
                     <tr>
                       <td height='64' bgcolor='#006784'><div 
                      align='center'>www.funduappcreator.com</div>    </td>
                     </tr>
                    </table>
                    </body>
                    </html>
DEMO;

            $from = "contact@fundumobi.com";

            mail($to, $subject, $message, 'From:'.$from);
            if (!headers_sent($filename, $linenum)) 
            {
                header("location:mesg.php");
            }
            else
            {
                echo "Headers already sent in $filename on line $linenum\n" .
                  "Cannot redirect, for now please click this <a " .
                  "href=\"http://www.example.com\">link</a> instead\n";
                exit;
            }
        }
        else
        { // If it did not run OK.
            header("location:index.php?er=2");
        //use exit after redirection request
        exit;
        }
    }
}

?>

ps :「DEMO;」もご覧ください。コード内の位置、それは行頭にあるはずですよね?. リダイレクト後に exit を使用します。前の空白を削除します

于 2012-11-28T07:58:39.557 に答える
-1

これを試してみてくださいこれは確かにうまくいくでしょう

<script type="text/javascript">
<!--
   window.location="http://www.newlocation.com";
//-->
</script>
于 2014-01-09T13:41:05.353 に答える