2017-02-20 12 views
0

だから私は何度も検索し、うまくいかないさまざまなソリューションを見つけました。PHPのmySQLの成功/失敗のリダイレクトページ

データベースにデータを挿入する登録ページがあります。これは動作します。挿入が成功したかどうかに応じて、2ページのうちの1ページにリダイレクトする必要のあるif/elseステートメントがあります。今は、フォームが提出された後に空白のページが表示されます。

<?php 

$hostname="xxxxxxxxxxxxxxxxxxxxx"; 
$username="xxxxxxxxxxxx"; 
$password="xxxxxxxxx"; 
$database="xxxxxxxxxxxxx"; 



$db = new mysqli($hostname, $username, $password, $database); 
if ($db->connect_error){ 
    die("Connection failed: " . $db->connect_error); 
    } 

$pw = $_POST['pw']; 
$UIN = $_POST['UIN']; 

$sql = "INSERT INTO studentLogin (pw, UIN) VALUES ('$pw', '$UIN')"; 

if ($db->query($sql) === TRUE) { 
    header('Location: http://my_url/success.php.php?msg=WELCOME STUDENT'); 
    exit(); 
} else { 
    header('Location: http://my_url/failure.php.php?msg=You must be a student to register for the student discussion page'); 
    exit(); 
} 

$db->close(); 

?> 
+0

最初に、エラーレポート '<?php ini_set()をオンにしてください(このページが表示されていないことを考慮して、確かに問題があるかどうかを知ることはできません) 'display_errors'、1); error_reporting(-1) 'です。また、既に** MySQLi **を使用していますので、プリペアドステートメントを使用してSQLインジェクションを防止してみませんか?そして、 'failure.php.php'と二重拡張子' .php.php'とは何ですか? – Darren

+0

有効なURLにリダイレクトしてもよろしいですか?また、真剣にSQLインジェクションの危険性があります。準備されたステートメントを使用して保護します。 – miken32

+2

あなたはおそらくヘッダーの前に出力していると思っています。 –

答えて

-1

URLにはスペースを使用できません。スペースをパーセントでエンコードされた "%20"に変更する必要があります。 this page.にエンコード率に関する情報があります。「+」記号を使用してスペース文字を記号で表すこともできます。

また、エラーを有効にすることを検討してください。

+0

URLにはどのようなスペースがありますか?私にはスペースがありません。 –

+0

@ Fred-ii-おそらくgetパラメータ 'msg'のものは? – nogad

+0

これはURLではないので、GETメソッド '?msg'を使って別のページにエコーされているメッセージです。これは、そのファイルに '$ _GET'がある場合に与えられます。彼らは今、完全に有効です。 –

関連する問題