2017-09-11 18 views
0

セッション変数を設定した後、PHPを使用してページを変更しようとしています。私は、関数が正常に呼び出され、変数が設定されていますが、ページは決して私は両方使用を試してみましたheader()関数のPHP呼び出しが機能していません

<?php 
 
     function getID() { 
 
echo $_GET['id']; 
 
session_start(); 
 
header("Location: home.php"); 
 
$_SESSION['id'] = $_GET['id']; 
 

 
} 
 

 
    if (isset($_GET['id'])) { 
 
    getID(); 
 
    } 
 
      ?> 
 

をリダイレクトしない

echo "<a href='index.php?id="; 

      echo $row['id']; 
      echo "'><img src='images/pic_1.jpg' 

このコードから関数を呼び出しています正確なURLとファイル名がありますが、動作しません。ページリダイレクトと$ _SESSION ['id']変数の両方を動作させるにはどうすればよいですか?

+0

ヘッダーの前に$ _SESSION ["id"]を配置する方法はありますか? –

+1

1. _ "このコードから関数を呼び出しています" _。いいえ、あなたはそのコードから_any_関数を呼び出すわけではありません。 2.何かを出力した後、 'header()'関数を使うことはできません。すべての 'header()'コールは、_any_出力(echo、print_r、var_dumpなど)の前にある必要があります。 3. PHPがスクリプトの解析を続行しないようにするには、 'header()' -callの後に 'exit;'を追加する必要があります。 –

+0

セッション変数が実際に設定されていないことを証明するデバッグが十分ではありません。 Javascriptとの関係は完全にはわかりません。そうでなければ証明されない限り;すでに発行されている共通のヘッダーである可能性が高くなります。 – mario

答えて

2

レスポンスヘッダーは、HTTPのレスポンスボディの前に送信する必要があります。 header()の呼び出しの前にコードにecho文(本文の送信を開始)が含まれているため、送信ヘッダーが機能しません。

0

リダイレクトする前に何かを聞いている可能性があります。echoheader()関数は、クライアントにデータを送信する前に関数を実行する必要があります。あなたの場合、その前にIDを受け取っているのはechoです。あなたのPHPログには、他のデータの後にヘッダを送信しようとしたことが伝えられます。

トランジションページを作成したい場合は、例えば、「何とか何とか何とかへのリダイレクト」、そして、あなたはHTMLリダイレクトを使用する必要があります。

<meta http-equiv="refresh" content="1; url=/home.php" /> 

タグ内の1は、1の後にリダイレクトすることを意味します2番目の遅延

+0

ヘッダからwindow.location.href javascalptに変更しました。 – Jake

関連する問題