-1

プラグインのログイン ページを設計しました。完全に機能し、ユーザーの資格情報を確認しますが、ユーザーが承認されている場合、px_member234.php ページに移動できません。

最初のページは px_myplugin234.php で、認証に使用される include(px_login234.php) を使用して px_login234.php ファイルを開きます。ヘッダーが機能しないのはそのためだと思います。他のオプションはありますか?

<form method="post" action="">
    ....
 </form>

 authorizer(){
  ........
  if(user_is_authorized)
    {
       //go to member.php page
       header ("Location:px_member234.php");  << does not work

    }
 }

以下も使用しましたが、機能しません

  echo '<script type="text/javascript">window.top.location="px_member234.php";</script>'; 
  echo '<script type="text/javascript">window.location="px_member234.php";</script>'; 
4

4 に答える 4

2

これは、ヘッダーの前に HTML コンテンツをエコーし​​ているためです。

PHP が実際の出力を確認すると、すべてのヘッドを apache (クライアントに送信する) にフラッシュする必要があります。PHP がヘッダーを送信して出力を開始した後は、ヘッダーを追加することはできません。

header('Location: ...')コンテンツをまったく出力する前に、コードをリファクタリングして呼び出す必要があります

于 2013-02-14T23:11:05.703 に答える
2

ヘッダーリダイレクトを使用できます。これを使用するには、ヘッダー コマンドの前に何も出力されないようにする必要があります。ヘッダーが既に送信されている場合、このコードは機能しません

header("Location:member.php");

あなたの例では、認証コードはページの上部にある必要があります。ヘッダー関数呼び出しの前に出力を防止できない場合でも、html ページにメタ リダイレクト ヘッダーを追加するか、JavaScript を使用して新しいwindow.location

于 2013-02-14T23:10:06.077 に答える
1

ページに記載されている他の出力の前に関数を呼び出すだけでなく、 と URLheader()の間にスペースを残す必要があります。Location:

あなたが持っているもの:

header("Location:member.php");

何が機能しますか:

header("Location: member.php");


アップデート

HTTP/1.1 Header Field Definitionに従って、相対 URI ではなく完全な URI を含めてみてください。

php.netから:

HTTP/1.1 は » Location: への引数として絶対 URI を必要とします: スキーム、ホスト名、絶対パスを含みますが、一部のクライアントは相対 URI を受け入れます。通常$_SERVER['HTTP_HOST']$_SERVER['PHP_SELF']dirname()を使用して、相対 URI から絶対 URI を自分で作成できます。

于 2013-02-14T23:18:32.613 に答える
0

フォームのマークアップに、次を追加できます

<form method="post" action="?noheader=true">.  

?noheader=true は、Wordpress がヘッダーを出力しないようにします。ここで詳細を確認できます: http://www.lessthanweb.com/blog/wordpress-and-wp_redirect-function-problem

また、wordpress 開発では、他のプラグインとうまく連携できるようにするフックが含まれているため、php ヘッダー関数よりも wp_redirect が好まれます。

ユーザーをリダイレクトする場所の絶対 URL を取ることに注意してください。プラグインを作成しているので、 get_option('siteurl') を使用してルート URL を取得できます。

<?php 
     wp_redirect(get_option('siteurl').'px_member234.php');
     exit;
?>
于 2013-02-14T23:10:17.540 に答える