-1

ユーザーログインを行うためのSQLを学ぼうとしていましたが、言語をより理解し、例から学ぶためにオンラインで入手したオープンソースを手に入れました。

ローカル ホストがわかりません。つまり、テーブル(名前付きユーザー)に追加しようとしましたが、3つの詳細のみを追加しました:

Name      | Data Type | Default Value | Is Primary Key? | Is Identity? | Allow Nulls
Localhost | nvarchar  | Null -------- | No ------------ | No --------- | Yes
user      | nvarchar  | Null -------- | No ------------ | No --------- | Yes
pass      | nvarchar  | Null -------- | No ------------ | No --------- | Yes

--- はコードの一部ではなく、表の順序のためだけです:)。

とにかく、ここに私のコードがあります:

<?php

// Edit your mssql info here
// BEGIN MSSQL INFO
$CONFIG['host'] = "localhost";
$CONFIG['user'] = "sa";
$CONFIG['pass'] = "server";
// END MSSQL INFO

//----------------------------- DO NOT EDIT ANYTHING BELOW HERE !!!!! ------------------------------------

$CONFIG['conn']  = mssql_connect( $CONFIG['host'], $CONFIG['user'], $CONFIG['pass']);

function anti_injection($sql) {
   $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
   $sql = trim($sql);
   $sql = strip_tags($sql);
   $sql = addslashes($sql);
   return $sql;
}
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Test</title>
    </head>
    <body>
    <?php
    if(isset($_GET['action']) && ($_GET['action'] == "login")){

        $user = anti_injection($_POST['user']);
        $pass = anti_injection($_POST['pass']);
        $crypt_pass = md5($pass);

        $result1 = mssql_query("SELECT * FROM account.dbo.user_profile WHERE user_id = '".$user."'"); 
        $count1 = mssql_num_rows($result1); 

        $result2 = mssql_query("SELECT user_pwd FROM account.dbo.user_profile WHERE user_id = '".$user."'"); 
        $row2 = mssql_fetch_row($result2); 

        if($count1 == '0') {
            echo '<br>This game account is not found in the database.';
        }
        elseif($row2[0] != $crypt_pass) {
            echo '<br>Wrong password. Try again.';
        }
        elseif($_GET['login'] != 'login' && $count1 == '0') {
            echo '<br>Login Error, Please login again.';
        } else {

        // Begin secure content 
            $_SESSION['user'] = $user;
            echo "<h3>Welcome, ".$_SESSION['user']."</h3>";
            echo "<br>";
            echo "Your content here";
        // Dont forget to and your session
        // session_destroy();
        // End secure content
        }
    } else {

    echo '<h2>Login here</h2><br /> 
        <form name="" action="'.$_SERVER['php_self'].'?action=login" method="post"> 
            Name: <input type="text" name="user" maxlength="16"><br /> 
            Password: <input type="password" name="pass" maxlength="16"> <br />
            <input type="submit" value="Login!"> 
        </form>';
    }
    ?>
    </body>
</html>

先ほど言ったように、テーブルとコードを接続する方法がよくわかりません。

説明できますか?

4

1 に答える 1

1

mysql_real_escape_string()( manual ) を使用して、SQL インジェクションから保護します

データベースへの接続は変数に保存されます。このようにクエリに追加する必要があります

$result1 = mssql_query("Your Query", $CONFIG['conn']);
$count1 = mssql_num_rows($result1);
于 2013-04-05T21:58:05.667 に答える