-1

私の登録ページの何が問題なのか誰か説明してもらえますか? データベース接続は問題ありませんが、テーブルを確認すると、新しいユーザーはいません。

私のHTML

<form action="register.php" method="post">
<input type="text" name="username" placeholder="username"><br/>
<input type="password" name="password" placeholder="password"><br/>
<input type="text" name="email" placeholder="E-mail"><br/>
<input type="submit" value="Submit">
</form>

私のPHP

<?php

$user_name = "mah user name";
$password = "mah password";
$database = "Peoples";
$server = "mysql6.000webhost.com";

$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
$username = test_input($_POST["username"]);
$email = test_input($_POST["email"]);
$password = $_POST["password"];
$registered=0;

if ($db_found) {

$SQL = "INSERT INTO users (username,password,email,registered) VALUES ($username, $password, $email,$registered)";

$result = mysql_query($SQL);

mysql_close($db_handle);

print "Records added to the database";

}
else {

print "Database NOT Found ";
mysql_close($db_handle);

}

function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

コードが多すぎる場合は申し訳ありません。?>

4

2 に答える 2

0

私は以前にこれらの問題を抱えていました.MySQLエラーはPHPエラーとして表示されず、ページに出力されないため、通常は少し考える必要があります. 個人的には、PHP で MySQLi を使用します。これは、いくつかの点で優れたサポートを提供するためです。詳細が必要な場合は、Google 検索を実行してください。SQL では、クエリでテーブルとデータベース名を ` 文字 (1 キーの左) でラップする必要がある場合があります。 Windows キーボード上)

代わりに次のコードを使用してみてください。

<?php
    // Init databse connection
    $db_handle = new mysqli("mysql6.000webhost.com","username","password","Peoples") or die("Database connection error");

    // check connection
    if ($db_handle->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }

    // Strip function for query string
    function test_input($data){
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

    $username = test_input($_POST["username"]);
    $email = test_input($_POST["email"]);
    $password = $_POST["password"];
    $registered=0;

    // Try insert query, sometimes wrapping the table name in ` characters solves the issue - only use on database and table names not values
    if($result = $db_handle->query("INSERT INTO `users` (username,password,email,registered) VALUES ('$username','$password','$email','$registered');")) {
        echo 'Records added to the database';
        // free result set
        $result->close();
    }
    else {
        echo 'Database NOT Found';
    }

    $db_handle->close();
?>

また、unset($var); を設定することをお勧めします。ですが、正直なところ、トラフィックが少ないと予想される場合は、特に心配する必要はありません。

データベースにユーザーデータを保持している場合、生のパスワードを保持すると人々が動揺する可能性があり、データが盗まれた場合に備えて実際にそうすべきではなく、すべてのユーザーに理由を説明する必要がありますログインするすべてのものに使用したいユーザー名とパスワード。

以下を使用する必要があります。

$password = hash('sha256',$_POST['password']);

そして、その文字列、または好みの他のハッシュ バリアントを保存します。ユーザーがログインしようとすると、提供されたパスワードを再度ハッシュし、データベースに保存されているハッシュと照合する必要があります。

最後に、一部のユーザーは、オンラインでパスワードを入力する場合、ドメインに SSL 暗号化を使用することを好むかもしれません。慣れていない場合は、Google 検索を行ってください。これ以上の質問については、できる限りお答えします :)

于 2013-09-21T02:22:42.690 に答える