0

これは SO に関する私の最初の質問です。正しくやっているといいのですが。PHP/MySQL プログラミングは初めてです。最近、WAMP を使用してローカル開発環境をセットアップしましたが、多かれ少なかれ機能しています (少なくとも、緑色のアイコンが表示され、WAMP の php 情報画面が表示され、phpMyAdmin が機能し、一部の .php ファイルが適切に機能し、 .css および .inc.php ファイルを適切なディレクトリからダウンロードします。)

私が問題を抱えているのは、header() を使用した php リダイレクトです。

私は多くの異なるオプションを試しましたが、いくつかはここから収集されましたが、どれも機能しません。「要求された URL /localhost/home.php がこのサーバーで見つかりませんでした」というエラーが表示されます。

また、ブラウザーのロケーション バーに localhost/localhost/home.php が表示されますが、その理由がわかりません。

呼び出しプログラム (index.php) からのスニペットの 1 つのバージョンを次に示します。その一部は、SO の回答から得たものです。

if (isset($_SESSION['Authenticated'])) {
    $host  = $_SERVER['HTTP_HOST'];
    $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
    $extra = 'home.php';
    header("Location: http://$host$uri/$extra");
    exit;
    }

元のバージョンも機能しませんでしたが、次のとおりです。

if (!isset($_SESSION['Authenticated'])) {
    $redirect = 'home.php';
    header("Location: $redirect");
    exit;
    }

また、パスのさまざまなバージョンを含め、元のバージョンの $redirect 変数の値を多数試しましたが、役に立ちませんでした。

私のセットアップに関する限り、役に立つと思われる情報を以下に示します。

WAMP サーバー バージョン 2.2 Apache バージョン 2.2.22 PHP バージョン 5.4.3 MySQL バージョン 5.5.24

Relevant line from C:\Windows\System32\Drivers\hosts
127.0.0.1           bke.local       #BKE Test Environment

デフォルトの C:\wamp\www を DocumentRoot として使用しています

Relevant lines from C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf:
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "c:/wamp/www/"
.
.
.
# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf


Relevant lines from C:\wamp\bin\apache\apache2.2.22\conf\extra\httpd.vhosts.conf:
# Use name-based virtual hosting.
NameVirtualHost *:80
#####NameVirtualHost 127.0.0.1:80
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/apache2/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/apache2/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

#<Directory C:/Dev>
#   Order Deny,Allow
#   Allow from all
#</Directory>

ファイルの現在の場所: .php ファイルを C:\wamp\www に .css ファイルを C:\wamp\www\styles に .inc.php ファイルを C:\wamp\www\includes に

この問題があることに気付く前に、多くの Web サイト (すべて同じことを言っていました) からの情報を使用して複数の仮想ホストをセットアップしようとしましたが、それをまったく機能させることができなかったので、変更を削除して行きましたWAMPのデフォルトで。問題が関連していると思われますが、どちらも解決できません。

4

1 に答える 1

0

私はここで手足を出します。

詳細を調べる前に、これは単純な見落としだと思います。

ちょうど試して:

if (!isset($_SESSION['Authenticated']))
{
  header ("Location: home.php");
  exit;
} // this will basically re-direct to home.php if $_SESSION['Authenticated'] is not set

ただし、上記のスニペットを実行する前に、次のことを実行してください。

echo "http://$host$uri/$extra";

header() なしで; ここに問題があるかどうかを確認するだけです。

于 2013-04-04T01:54:48.397 に答える