【发布时间】:2011-03-23 14:00:36
【问题描述】:
我在运行 MySQL 的 PHP 代码方面需要帮助。
对于我在 MySQL 中的存储过程,我有以下内容:
create procedure register ( out userid int
,in username varchar(30)
,in unencryptedpassword varchar(100)
,in description varchar(100)
,in emailaddress varchar(100) )
begin
declare salt char(25);
declare createdById int;
declare createdDate datetime;
declare lastUpdatedById int;
declare lastUpdatedDate datetime;
set salt = 'abcdefghijklmnopqrstuvwxy';
set createdById = -1;
set createdDate = now();
set lastUpdatedById = -1;
set lastUpdatedDate = now();
insert into Users ( userId
, userName
, encryptedPassword
, description
, emailAddress
, createdById
, createdDate
, lastUpdatedById
, lastUpdatedDate )
values ( null
, username
, password(concat(username, salt, unencryptedpassword))
, description
, emailAddress
, createdById
, createdDate
, lastUpdatedById
, lastUpdatedDate );
set userid = last_insert_id();
commit;
end;
/
对于我的 register.php 页面,我有以下内容:
<?php
$host="localhost";
$db="mydb";
$uname="myuser";
$pword="mypass";
$firstname=$_POST["firstname"];
$lastname=$_POST["lastname"];
$emailaddress=$_POST["emailaddress"];
$newpassword=$_POST["newpassword"];
$mysqli = new mysqli( $host, $uname, $pword, $db );
$res = $mysqli->multi_query( "call register(@userid,$emailaddress,$newpassword,$firstname,$emailaddress)" );
$mysqli->close();
$_SESSION["sessionId"] = 1;
?>
问题是它永远不会被插入到我的数据库中。谁能帮我解决这个问题。
谢谢。
【问题讨论】:
-
您是否使用
mysqli->error()检查错误?此外,当然,为每个用户使用完全相同的盐可以避免首先使用盐的目的,您应该为每个用户随机生成不同的盐。 -
感谢您的提示。如果我为每个用户生成一个随机盐,那么我也应该将盐保存到表中?
-
如果你想使用存储的哈希值,我相信你需要这样做,是的。