-1

フォームのあるログインページがあります。ログイン データは、ユーザーが DB に存在するかどうかを確認するために、php スクリプトに送信されます。成功した場合は、リダイレクトする必要があります。

これが私のコードです:

<?php

$host="localhost:8889"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="TableName"; // Database name
$tbl_name="Users"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);


$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file
  session_register("myusername");
  session_register("mypassword");
  header("location:../main.php");
  die();
}
else {
  echo "Wrong Username or Password";
}
?>

カウントは 1 ですが、リダイレクトは行われません。

このすばらしい回答を読み、次のことを確認しました。

  1. 開始タグの前に空白がなく、別のエコーまたは印刷が発生しています。
  2. オープニングphpタグの後に入れようとしましたob_startが、うまくいきませんでした。

BOMの意味がわかりませんでした。それについて私を助けてもらえますか?

私は過去にまったく同じコードを使用していましたが、それは機能しましたが、現在は mamp を使用していて mac は機能しません。

ありがとう。

編集:

私は人々が言っ​​たことを行い、これらを修正してレポートを有効にした後、問題は次のとおりです。

Call to undefined sesion_register.

そのため、定義されておらず、非推奨であり、現在は機能しているため、変更しました! 皆さんありがとう!

4

3 に答える 3

1

これを試して:

header("Location: http://localhost:8889/main.php");

Location大文字の L を使用する必要があり、絶対 URI を使用することをお勧めします。

編集

このリンクを読んだ後output_buffering、php.ini で有効になっていることを確認することをお勧めします。次にob_start()ob_end_flush()ファイルの上部と下部にそれぞれ と を配置します。

于 2013-11-04T03:32:45.193 に答える
0

まず、変数を使用していません。引用符で実際の値を使用しています。それ以外の:

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

そのはず:

mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
于 2013-11-04T03:34:21.563 に答える
0

場所の「L」を大文字にしてください。これが機能しない場合は、次を試してください。
headers_sent() を使用してエラーを確認できます

// If no headers are sent, send one
if (!headers_sent()) {
    header('Location: ../main.php');
    exit;
}


または、phpでjavascriptを試すことができます

<?php
echo "<script>window.location='../main.php'</script>";
?>

それが役に立てば幸い...

于 2013-11-04T03:40:16.293 に答える