1

正如标题所说..

这是我在 register.php 中的代码

if (empty($_POST) === false && empty($errors) === true) {
    $register_data = array(
        'username'      => $_POST['username'],
        'password'      => $_POST['password'],
        'first_name'    => $_POST['first_name'],
        'last_name'     => $_POST['last_name'],
        'signup'        => 'now()',
        'email'         => $_POST['email'],
        'email_code'    => md5($_POST['username'] + microtime())
    );

    register_user($register_data);
    header('Location: register.php?success');
    exit();

这是我的用户函数文件中处理注册的部分。

function register_user($register_data) {
array_walk($register_data, 'array_sanitize');
$register_data['password'] = md5($register_data['password']);

$fields = '`' . implode('`, `', array_keys($register_data)) . '`';
$data = '\'' . implode('\', \'', $register_data) . '\'';

mysql_query("INSERT INTO `users` ($fields) VALUES ($data)");
email($register_data['email'], 'Activate your account', "Hello " . $register_data['first_name'] . ",\n\nYou need to activate your account, so use the link below:\n\nhttp://www.site.com/activate.php?email=" . $register_data['email'] . "&email_code=" . $register_data['email_code'] . "\n\n - admin");
}

任何提示将不胜感激。

4

2 回答 2

1

现在我查看了代码,正如我在评论中所说:您正在引用您的函数调用。now()是一个为您提供日期时间的函数调用;'now()'根本不是一种日期时间。您需要想办法在执行 delimited 时不将该特定字段与其他字段捆绑在一起implode。更好的是,使用更好的方式来访问数据库:mysqli 或 PDO 都是更好的选择。

于 2013-07-17T06:34:56.393 回答
0

确保您的implode语句结果正确,例如,如果您要插入usernamesignup字段,则查询必须是

INSERT INTO `users` (username, signup) VALUES ('abcd', now()) 

它应该

 INSERT INTO `users` (username, signup) VALUES ('abcd', 'now()' ) 
于 2013-07-17T06:37:59.110 回答