0

php/msql を介して安全なログインを作成する最初の試みを行っていますが、順調に進んでいます。私はここのチュートリアルに従っています: http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQLそして驚くべきことに、私のページに関連するすべてが機能していて、データベース。このコードを調べてみると、すべてがどのように組み合わされているかについての理解が深まりました。

私が抱えている問題は、提供された登録ページの例が完全ではないか、少なくとも私のような初心者が理解できる方法ではないことです. 以下は、登録ページの例として投稿したものです。私が迷子にならないように、誰かがそれを少し埋めることができますか? ユーザーがアカウントを作成できるように、これを中心にフォームを作成する必要があると思いますが、//ここでデータベーススクリプトに挿入を追加する部分と、投稿したものからフォーム変数をプル/配置する場所については、これまでのところ混乱しています.

// The hashed password from the form
$password = $_POST['p']; 
// Create a random salt
$random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
// Create salted password (Careful not to over season)
$password = hash('sha512', $password.$random_salt);

// Add your insert to database script here. 
// Make sure you use prepared statements!
if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)")) {    
   $insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt); 
   // Execute the prepared query.
   $insert_stmt->execute();
}

いつものように、どんな助けも大歓迎です。前もって感謝します。

4

2 に答える 2

0

フォームに関するあなたの推測は正しいです。ユーザー名、メールアドレス、パスワードを尋ねる「NEW ACCOUNT FORM」があります。おそらく、そのphpコードの早い段階で、次のようなものが必要です。

$username = $_POST['username';
$email = $_POST['email'];

つまり、「NEW ACCOUNT FORM」で送信された値を含む $_POST 配列から値を取得します。インサート部分に関しては、

if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)"))

$insert_stmt に有効な値が代入されている場合にこの条件が true の場合、データベースへの接続が確立されていない場合などは null になると思います。

$insert_smtp は、挿入クエリの「テンプレート」として何かを持つようになりましたが、パラメーターがありません。「?」シンボルは、後で送信するパラメーターを表します。

命令

$insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt);

「?」でマークされたパラメーターをバインドします。「テンプレート」にあります。

ユーザー名、電子メール、パスワードを INSERT ステートメントに直接入れない理由は、SQL インジェクション攻撃を引き起こす可能性のある SQL ステートメントが含まれる可能性があるためです。「bind_param」を介してパラメーターを渡すことにより、関数は、変数を挿入する前に変数をクリーンアップします。

命令

$insert_stmt->execute();

最後に、データベースに対してクエリを実行します。

于 2013-10-03T11:20:29.707 に答える
0

コードを少し変更して、適切に取得できるようにします

 // The hashed password from the form

 $password = $_POST['p']; 

 // Create a random salt

 $random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));

// Create salted password (Careful not to over season)

 $password = hash('sha512', $password.$random_salt);


//insert query to insert values in to the databse table


 $sql = "INSERT INTO members (username, email, password, salt) VALUES($username,$password,, ?)";

 //for executing the query


 mysql_query($sql) or die("!query);
于 2013-10-03T04:48:44.420 に答える