2012-01-17 9 views
1

私はphpファイルを指すフォームを持っています。すべてのphpファイルは、ユーザーを特定のページ。私はそれが動作するように取得するように見えるではないと私が間違っているの何イム確認することはできません。私はcan not get header( "Location:http://www.google.com/"):

<form method="post" action="processRegister.php"> 
    User Name: <input type="text" name="userName" maxlength="32"><br> 
    Password: <input type="password" name="userPassword" maxlength="32"><br> 
    <input type="submit"> 
</form> 

processRegister.php

<?php 
// processRegister.php 
////////////////////// 
header("Location: http://www.google.com/"); 
/* 
// First include the class definition 
include('UserClass.php'); 

// Next, create an instance of the class 
$newUser = new User; 

// Call the registerUser() method, passing in the required variables 
if ($newUser->registerUser($userName, $userPassword)) { 
    header('Location: www.google.com'); 
} 
else { 
    header('Location: www.yahoo.com'); 
} 
*/ 
?> 
+1

このエラーは何ですか? header()コマンドの前にデータが送られましたか? –

+2

'<?'を '<?php'に変更してみてください。 – ceejayoz

+0

これはタイプミスか問題ですか?あなたのフォームは 'process_register.php'を使っていますが、あなたが与えたファイル名は' processRegister.php'です。 – ughoavgfhw

答えて

4

は場所を変更するheader()を使用した後、この意志をexit呼び出しを使用します不要な処理を防ぐだけでなく、cの後に終了しない場合と同様に潜在的なセキュリティホールを防ぎますページが処理され、通常の方法でブラウザに送信されます。許可されていないユーザーをログインページにリダイレクトする場合など、機密コンテンツは引き続き送信され、ユーザーはそれを取得できます。

0

ああ、私はあなたの記事をあまりにも速く読んで、それが2つの異なるページにあったことを認識しませんでした。私の修正はあなたを修正するつもりはありません。

これを試してください。ヘッダーの後ろにフラグがあります。我々はそれが機能しない理由のより良い理解を持っていますよりも、だからではなく、ただ

header("Location: http://www.google.com/"); 

は「フラグ1を」それは

header("Location: http://www.google.com/"); 
echo "Flag1"; 

それも印刷されない場合します。 (PHPで)header後、ページの最上部に

+0

出力があるのはなぜ明らかですか? – user1082764

+0

フラグFlag1も印刷されません。私は私が持っているテストサイトでそれをテストするので、それは私の短いスクリプトthoの外の何かだと思うし、うまく動作します。私は問題を見つけることができないようです。 – user1082764

+0

ヘッダーの前に[echo "flag0";]を置くと、おそらくそのページに到達しているかどうかがわかります。 "flag0"を印刷しなくても、前のページに何か問題があることがわかります。 processRegister.phpにリンクするPasteBinにページ全体をアップロードできますか?私はちょうど両方のコードをそのままコピーし、サーバー上で実行したところ、魅力的に機能しました。ヘッダーが動作しないようにするフォームを含むページに問題があると確信しています。 –

0

使用exit()ライトob_start(); 最も重要なのは、O ob_startです!これは、コードの開始位置を示します。

<?php 
ob_start(); 
// processRegister.php 
////////////////////// 
header("Location: http://www.google.com/"); 
/* 
// First include the class definition 
include('UserClass.php'); 

// Next, create an instance of the class 
$newUser = new User; 

// Call the registerUser() method, passing in the required variables 
if ($newUser->registerUser($userName, $userPassword)) { 
    header('Location: www.google.com'); 
} 
else { 
    header('Location: www.yahoo.com'); 
} 
*/ 
exit(); 
?> 
0

ソースファイルのエンコーディングは良好ですか? UTF-8の場合は、BOMによって問題が発生する可能性があるため、UTF-8 without BOMに変更する必要があります。