1

サイトにユーザー作成フォームがありますが、関連する MySQL テーブルに新しいユーザー データを追加できません。なぜデータが追加されないのか、よくわかりません。また、何が問題なのかを教えてくれるようなエラーもスローしていません。

現在、次のユーザー作成フォームがあります。

<form name="adduser_form" action="process/adduser_process.php" method="post">
    Username:<input id="username" type="test" name="username" />
    Email:<input id="email" type="text" name="email" />
    Password:<input id="password" type="password" name="password" />
    <input id="add_usr" type="button" value="Add User" onclick="formhash(this.form, this.form.password);" />
</form>

「ユーザーの追加」ボタンをクリックすると、formhash JS はハッシュされたパスワードを作成し、フォームを adduser_process.php に送信します。

function formhash(form, password) {
    var p = document.createElement("input");
    form.appendChild(p);
    p.name = "p";
    p.type = "hidden";
    p.value = hex_sha512(password.value);
    password.value = "";
    form.submit();
}

adduser_process.php は次のように機能します (意図的にタグを省略しています):

include '../includes/lgn_connect.php';
include '../includes/functions.php';
sec_session_start(); 

$password = $_POST['p']; 

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

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

if($insert_stmt = $mysqli->prepare("INSERT INTO users (username, email, password, salt) VALUES (?, ?, ?, ?)")) {
$insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt); 

$insert_stmt->execute();
}
4

1 に答える 1

2

最初の間違いは、ユーザー名でtestはなくタイプを設定したことですtext

<input id="username" type="test" name="username" />     //should be
<input id="username" type="text" name="username" />

()2 番目の間違いは if 条件に関するもので、条件に余分なものを追加していません。

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

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

3番目の間違いはsec_session_start();、セッションを開始するための機能ではありません。

session_start();
于 2012-10-09T02:18:38.003 に答える