php mysql检测用户名_PHP和MySQL – 检查是否已经使用了用户名

作为如何使用预准备语句的示例,您可以使用以下(未经测试的顺便说一句)

在原始代码中,您在输出html代码后发送标题 – 这将导致错误,除非您使用输出缓冲,因此我在生成任何html内容之前移动了所有相关的PHP代码,如果有任何错误输出它们.

我还注意到mysqli连接的参数没有被引用 – 如果这些参数被定义为常量,那么这样就可以了,否则也会产生错误.

继续使用mysqli或pdo – 因为当您采用我试图在此处展示的预准备语句时,您可以更好地保护您的站点免受恶意用户的攻击.

require_once("functions.php");

require_once("db-const.php");

session_start();

if (logged_in() == true) {

redirect_to("profile.php");

}

$errors=array();

if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

if( isset( $_POST['username'], $_POST['password'], $_POST['first_name'], $_POST['last_name'], $_POST['email'] ) ) {

$username = !empty( $_POST['username'] ) ? $_POST['username'] : false;

$mainpass = !empty( $_POST['password'] ) ? $_POST['password'] : false;

$password = !empty( $mainpass ) ? hash('sha256', $mainpass) : false;

$first_name = !empty( $_POST['first_name'] ) ? $_POST['first_name'] : false;

$last_name = !empty( $_POST['last_name'] ) ? $_POST['last_name'] : false;

$email = !empty( $_POST['email'] ) ? $_POST['email'] : false;

if( $username && $password ){

$mysqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME );

if( $mysqli->connect_errno ) {

$errors[]=$mysqli->connect_error;

} else {

/* Assume all is ok so far */

$sql='select username from users where username=?';

$stmt=$mysqli->prepare($sql);

$stmt->bind_param('s',$username);

$stmt->execute();

$stmt->bind_result( $found );

$stmt->fetch();

if( !$found ){

/* username is not alreday taken */

$sql='insert into `users` (`username`,`password`,`first_name`,`last_name`,`email`) values (?,?,?,?,?);';

$stmt=$mysqli->prepare( $sql );

$stmt->bind_param('sssss',$username,$password,$first_name,$last_name,$email);

$stmt->execute();

header("Location: checklogin.php?msg=Registered Successfully!");

} else {

/* username is taken */

$errors[]='Sorry, that username is already in use.';

}

}

}

} else {

$errors[]='Please fill in all details';

}

}

?>

Prospekt Member Area

Register Here

© Kirk Niverba


Username:

Password:

First name:

Last name:

Email:

Already have an account?

if( !empty( $errors ) ){

echo implode( '
', $errors );

}

?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值