0

以下は、私のすべてのページの上部に含まれるファイルである header.php の冒頭です。現在、それが含まれているすべてのページがブラウザーで空白になります。何が間違っていたのでしょうか? (ここで x:es に置き換えられたデータベースのログイン資格情報は正しいです。)

session_start();

if (isset($_POST['log_out'])) {
    session_unset();
    session_destroy();
    $_SESSION = array();
}

if (isset($_POST['username']) && isset($_POST['password'])) {

    $salt1 = "ghjfdghpuaqXC"
    $salt2 = "GHLUYKRGrtuuh"
    $password = sha1($salt1 . $_POST['password'] . $salt2);

    $db_hostname = 'xxxxxxxx';
    $db_username = 'xxxxxxxx';
    $db_password = 'xxxxxxxx';
    $db_database = 'xxxxxxxx';

$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

    mysql_select_db($db_database)
        or die("Unable to select database: " . mysql_error());

    $query = "SELECT password FROM users WHERE name = '" . $_POST['username'] . "'";
    $passwordindatabase = mysql_query($query);

    if ($password == $passwordindatabase) {
        $_SESSION['logged_in'] = true;
        $_SESSION['user'] = $_POST['username'];
        unset($_POST['username']);
        unset($_POST['password']);
    }
}
4

3 に答える 3

3

出力を使用するには、パスワードクエリでmysql_fetch_rowまたはmysql_fetch_assocを使用する必要があると思います

$passwordindatabase = mysql_fetch_row(mysql_query($query));
于 2012-05-15T07:03:00.173 に答える
0

台詞

$passwordindatabase = mysql_query($query);

if ($password == $passwordindatabase) {

意味をなさないでください。次を使用する必要があります。

$ passwordindatabaseにはクエリが含まれているだけで、結果は含まれていません。次に、結果を取得した後、次のように正確な結果変数を割り当てる必要があります。

if (mysql_num_rows($passwordindatabase != 0) {
    $row = mysql_fetch_assoc($result);
    $passwordindatabase = $row["password"];
}
于 2012-05-15T07:04:20.313 に答える
0

mysql_queryMySQLリソースを返します。このリソースは、最初に文字列や配列などのPHP値に「変換」する必要があります。

リソース(によって返されるmysql_query)を文字列(パスワード)と比較したいとします。もちろん、それらは決して一致しません。したがって、最初にリソースを文字列に変換する必要があります。複数の列が選択されている将来のクエリでは、最初にそれを配列に変換します。

$resultarray = mysql_fetch_assoc($passwordindatabase);

次に、この配列からパスワードを取得できます。

$resultstring = $resultarray['password'];

補足として、生のPOST結果をデータベースにフィードする前に、のように絶対にエスケープする必要があることを指摘できますか?$_POST['username']mysql_real_escape_string

于 2012-05-15T07:05:14.547 に答える