使用准备好的语句的PHP注册脚本 [英] PHP Registration script using prepared statements

查看:38
本文介绍了使用准备好的语句的PHP注册脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下注册代码,它可以正常工作,但实际上并没有将输入的信息插入到我的表中.一切运行无误,并且显示"echo'end';".正在显示.

I have got the following registration code, it SEEMS to be working but it isn't actually inserting the entered information into my table. It all runs with no errors showing up, and the "echo 'end';" is displaying.

修改,更新代码: 现在出现此错误

警告:mysqli_stmt :: bind_param():类型中的元素数 定义字符串与中的绑定变量数不匹配 第19行的C:\ xampp \ htdocs \ ppa \ test.php

Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in C:\xampp\htdocs\ppa\test.php on line 19

这是哪一行:

$insert_stmt->bind_param($email, $password, $random_salt, $user);

PHP:

   <?php
include "includes/db_connect.php";

if (isset($_POST['email'], $_POST['p'])) {
    $email = $_POST['email'];
    //Default user perms
    $perms = "user";

    $password = hash('sha512', $_POST['p']); //Need to add JavaScript to hash password before it gets here
    //Create random salt
    $random_salt = hash('sha512', uniqid(mt_rand(1, getrandmax()), true));

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

    //Add insert to database script
    //Use prepared statements!
    if ($insert_stmt = $mysqli->prepare("INSERT INTO users (email, password, salt, perms) VALUES (?, ?, ?, ?)")) {
        $insert_stmt->bind_param($email, $password, $random_salt, $perms);
        $insert_stmt->execute();
    }
    echo "Email: ".$email."<br />";
    echo "Password: ".$password."<br />";
    echo "Random Salt: ".$random_salt."<br />";
    echo "Permissions: ".$perms."<br />";
}
?>

这是我的db_connect.php页面

This is my db_connect.php page

<?php
define("HOST", 'localhost');
define("USER", 'ppa_user');
define("PASSWORD", 'password');
define("DATABASE", 'ppa');

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

if ($mysqli->connect_errno) {
    //No database found, redirect to setup
    $url = "http://".$_SERVER['HTTP_HOST'].'/ppa/setup.php';
    header('Location: '.$url);
}
?>

推荐答案

为了解决该问题,请确定OP需要使用以下代码:

In order to close this question as being answered, have come to the conclusion the OP needed to use the following code:

$insert_stmt->bind_param("ssss", $email, $password, $random_salt, $perms);

这篇关于使用准备好的语句的PHP注册脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆