2012-01-21 29 views
0

私はそのヘッダに問題があります。 ページが処理されると、私は終了()します。関数 "header"が機能しません

if($validate=='true') { 
     $_SESSION['nome'] = $nome; 
     $_SESSION['cognome'] = $cognome; 
     $_SESSION['email'] = $email; 
     $_SESSION['telefono'] = $telefono; 
     $_SESSION['cellulare'] = $cellulare; 
     $_SESSION['password'] = $password; 
     $_SESSION['societa'] = $societa; 
     $_SESSION['pi'] = $pi; 
     $_SESSION['cf'] = $tax; 
     $controllor = md5(uniqid(rand(), TRUE)); 

     ob_start(); 
      header("Location: index.php?nav=8&controllor=".$controllor); 
     ob_end_flush(); 
     exit(); 


    } 

上記の変数はすべて正しく入力され、$ validateは 'true'に等しくなります。

+0

出力が発生する前に 'ob_start()'を使用する必要があります。 'header()'と同じように。 – mario

答えて

1

まず、出力バッファリングを使用することは避けるべきである適切なコードを書く避けるために、それは潜在的にこれからあなたを救った可能性があります。

第2に、ヘッダーエラーメッセージを回避するために出力バッファリングを使用する方法が間違っています。 最初に出力バッファリングを開始する必要があります。

問題を解決するためのエラーメッセージもコードもありませんが、出力バッファリングを削除し、ヘッダー機能()を使用して機能をブラウザに出力する前に移動してください。

+0

私はob_start()を置くことを解決しました。上に次に: ヘッダー( "場所:google.it"); ob_end_flush()、exit(),. あなたのアドバイスをいただきありがとうございます。 –

1

ロケーションヘッダーは絶対URIを使用する必要があります。とにかく

http://php.net/manual/en/function.header.php

すでにヘッダを送信したかどうかを確認:

http://www.php.net/manual/en/function.headers-sent.php

をまた、あなたは、この場合にはのob_startまたはob_endを使用する必要がありません。

+1

URLは絶対的なものである必要はありません。使用しているhttp-バージョンでは表示されません。[こちらの記事も参照](http://stackoverflow.com/a/8944464/1158170) – rauschen

0

$ validateはtrueに等しいので、私はこの解決策を提案する、そうでなければ私はしません

あなたはこのJavascriptであなたのヘッダ()を置き換えることができます。

echo "<script>location.href=index.php?nav=8&controllor='$controllor'</script>"; 
+0

私は使用したくないユーザーがJavaScriptを無効にしている可能性があります。 –

関連する問題