0

簡単な紹介です... 私は自分のコンピューターからホストされているローカル Web サイト用のデータベース システムを作成しようとしています。

PHP でこのログオン スクリプトを使用していますが、この質問の下部に示されているエラーに遭遇しました。

これを Debian OS で実行しており、Apache2 および MySQL と共に PHP5 をインストールしています。Apache と PHP の両方でエラー ログが見つかりません。

'$_POST['Anything']' を取得しようとすると、空の文字列が返されます。

これは私のコードです:

<?php
ob_start();
$host="localhost";
$username="MySQLUser";
$password="*************";
$db_name="test";
$tbl_name="members";
mysql_connect("$host", "$username", "$password") or die("Cannot connect"); 
mysql_select_db("$db_name")or die("Cannot select DB");
$myusername=$_POST["vuser"]; 
$mypassword=$_POST["vpass"]; 
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$mypassword = md5(md5(md5(md5(md5(md5($mypassword)))))); // This is for tests.
$sql="SELECT * FROM $tbl_name WHERE Username='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
    session_register("vuser");
    session_register("vpass"); 
    header("location:login_success.php");
} else {
    echo "Wrong Username or Password";
}
ob_end_flush();
?>

私も変わりました

echo "ユーザー名またはパスワードが間違っています";

echo "間違ったユーザー名またはパスワード、$mypassword と $myusername、$_POST['vuser'] と $_POST['vpass']";

また、vuser、vpass は空白で表示されます。ユーザー名とパスワードをエコーし​​て、読み取れるようにします。基本的にはテスト用です。 (これは壊れる前です)

私が何かをした後、私は何をしたのか分かりません...これは私が受け取るものです: 受信画像

私が求めているのは、なぜ $_POST がデータを表示しないのか、エラー ページの問題は何なのかということです。

4

2 に答える 2

1

現在テストできないため不明です。少し忙しいですが、以下のクエリのように、ユーザー名とパスワードを囲む単一引用符を削除してみてください:

$sql="SELECT * FROM $tbl_name WHERE Username=$myusername and Password=$mypassword";

または以下を使用します。

$sql="SELECT * FROM $tbl_name WHERE Username='". $myusername ."' and Password='" . $mypassword . "'";
于 2013-09-30T19:23:28.703 に答える
0

Ok..

"session_register"は使用しないでください。php.net によると、この関数はPHP 5.3.0 で非推奨になり、PHP 5.4.0 で削除されました。

<?php

// initialize session
session_start();

define('DB_HOST', 'my.host.com');
define('DB_USER', 'youruser');
define('DB_PASS', 'yourpass');
define('DB_NAME', 'dbname');

// connect 
mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Cannot connect");
mysql_select_db(DB_NAME) or die("Cannot select DB");


function clean($value)
{
    if (get_magic_quotes_gpc()) {
        $value = mysql_real_escape_string(stripslashes($value));
    } else {
        $value = mysql_real_escape_string($value);
    }
    return $value;
}


$user = isset($_POST['vuser']) ? trim($_POST['vuser']) : null;
$pass = isset($_POST['vpass']) ? trim($_POST['vpass']) : null;

if (!$user || !$pass) {
    echo 'Wrong username or password';
    die;
}

$user = clean($user);
$pass = clean($pass);

$sql = sprintf("select * from members where username = '%s' and password = '%s'", $user, $pass);

$query = mysql_query($sql);

if ($query) {

    $data = mysql_fetch_array($query, MYSQL_ASSOC);

    if (sizeof($data) > 0) {
        // save sessions...
        // redirect...
        // user ok
        die;
    }

}

echo 'Incorrect!';
die;
于 2013-09-30T19:42:08.543 に答える