0

なぜこれが私を連絡先ページに移動させないのか疑問に思っていますか?

    <?php session_start(); ?>


    <?php

    function setSessions($page){
        switch($page)
        {
            case "contact":
                $_SESSION['contact_name'] = $_GET['name'];
                $_SESSION['contact_address'] = $_GET['address'];
                $_SESSION['contact_phone'] = $_GET['phone'];
                header('Location:contact.php');
                exit;
                break;
            case "employment":
                break;
            case "position":
                break;
            default:
                break;
        }

    }




    $current_page = $_REQUEST['page'];
    setSessions($current_page);


    ?>

私はそれがコンタクトケースで起こっていると確信しています。助けてくれてありがとう

-編集:NVM、動作します。ありがとう!

4

6 に答える 6

2

を呼び出す前に出力を送信することはできませんheader()

削除する必要があります:

<html>

echo "i got in here";

参照:

于 2013-02-05T03:16:33.920 に答える
1

これが理由です:

 <html>

ブラウザに何かを出力した場合、header()を呼び出すことはできません。このhtmlタグの上にリダイレクトコードを移動し、そのエコーを削除すると、問題がないはずです。

于 2013-02-05T03:15:44.340 に答える
1

将来の参照用に、ヘッダーが呼び出される前の空白のhtmlスペースも、これが機能しなくなります。(2行目と3行目)

于 2013-02-05T03:29:43.360 に答える
0

header()を使用する前に、これまでに何も出力することはできません。switchステートメントのechoステートメントは出力と見なされ、コードを台無しにするものです。

于 2013-02-05T03:16:32.510 に答える
0

エミッションはPHPでヘッダーを送信します。ヘッダーを送信すると、それ以上送信できなくなります。空白でもこれを行いますが、文字列<html>が出力されます。あなたはそれをすることはできません。

より良い解決策は、出力したいものをすべて構築するまで、それを行わずにすべての排出量を節約することです。

より悪い解決策は、出力バッファリングを使用することです。スクリプトの開始時ですが、ob_start()。その後、ヘッダーは通常どおり機能します。

于 2013-02-05T03:16:47.997 に答える
0

$current_page問題は、 ;の正しい値を取得していないことです。その値をエコーすると、空であることがわかります。したがって、あなたがする必要があるのは、この関数を使用してここで現在のページ値を取得する必要があるということです。

function getMyurl(){

  $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

  echo $url;

}

now $current_page=getMyurl();

getMyurlはWebサイトまたはアプリケーションの完全なURLを返すことを知っておく必要があるため、連絡先が書かれている場合は変更して、ケース「yourwebsite/contact」に置き換える必要があります。

これでうまくいくはずです

于 2013-02-05T03:35:37.320 に答える