尝试注册示例用户时出现 pdo 注册页面错误
pdo registration page error when trying to register a sample user
您好,我正在创建用户注册页面。我相信我已经尝试了一切,当我尝试测试注册页面时,它只是重新加载同一页面。当我点击提交
按钮,不会进入我的数据库,也不会显示 "your account has been created"。我什至尝试过使用已弃用的 MySQL 代码,但它也失败了。请记住,这只是一组简单的代码,根本没有使用 CSS 进行样式化。
这是代码...
<?php
include("/scripts/connectionfile.php");
if(isset($_POST['submit'])) {
$email = $_POST ['email'];
$username = $_POST['username'];
$password = md5($_POST['password']."ALS52KAO089");
$confpassword = md5($_POST['conpassword']."ALS52KAO089");
}
if(isset($email, $username, $password, $confPassword)){
if(strstr($email, "@")){
if($password == $confPassword){
$query = $dbc->prepare("SELECT * FROM users WHERE username = ? OR email = ?");
$query = $query->execute(array(
$username,
$email
));
$count = mysql_num_rows($query);
if($count == '0'){
$query = $dbc->prepare("INSERT INTO users SET username = ?, email = ?, password = ?");
$query = $query->execute(array(
$username,
$email,
$password
));
if($query){
echo "Your account has been created, you may now login!";
}
}else{
echo "A user already exist with that name.";
}
}else{
echo "Your passwords do not match!";
}
}else{
echo "Invalid email address!";
}
}
?>
<form action="" method="POST">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Email:</td>
<td><Input type="text" name="email"></td>
</tr>
<tr>
<td>Password:</td>
<td><Input type="password" name="password"></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><Input type="password" name="conpassword"></td>
</tr>
</table>
<input type="submit" name="submit" value="Register">
</form>
这是我的连接码
<?php
$user ="root";
$pass = "";
$dbc = new PDO("mysql:host=localhost;dbname=users", $user, $pass);
?>
尝试我在下面概述的更改:
<?php
include("/scripts/connectionfile.php");
if(isset($_POST['submit'])) {
function get_user_count($username = false,$email = false,$con = false)
{
if($username != false && $email != false && $con != false) {
$query = $con->prepare("SELECT COUNT(*) as count FROM users WHERE username = ? OR email = ?");
$query->execute(array($username,$email));
$result = $query->fetch(PDO::FETCH_ASSOC);
if($result['count'] == 1)
return true;
}
return false;
}
// Use a better validate
$creds['email'] = (filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))? $_POST['email']:false;
// Check it's not empty
$creds['username'] = (!empty($_POST['username']))? $_POST['username']:false;
// You should be using a proper encryption. md5 is not good enough, even with a salt
$creds['password'] = (!empty($_POST['password']))? md5($_POST['password']."ALS52KAO089"):false;
$creds['conpassword'] = (!empty($_POST['conpassword']))? md5($_POST['conpassword']."ALS52KAO089"):false;
if(!in_array(false,$creds)) {
// You were trying to match $conpassword and $conPassword
// Notice the P in confp and confP
if($creds['password'] == $creds['conpassword']){
if(get_user_count($creds['username'],$creds['email'],$dbc) == false){
// Your statement is a mix of insert and update
$query = $dbc->prepare("INSERT INTO users (`username`,`email`,`password`) VALUES (?,?,?)");
// Swicht $query to $result
$result = $query->execute(array($creds['username'],$creds['email'],$creds['password']));
if($result)
$error = "Your account has been created, you may now login!";
}else
$error = "A user already exist with that name.";
}else
$error = "Your passwords do not match!";
}else
$error = "Invalid email address!";
echo $error;
}
?>
<form action="" method="POST">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Email:</td>
<td><Input type="text" name="email"></td>
</tr>
<tr>
<td>Password:</td>
<td><Input type="password" name="password"></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><Input type="password" name="conpassword"></td>
</tr>
</table>
<input type="submit" name="submit" value="Register">
</form>
您好,我正在创建用户注册页面。我相信我已经尝试了一切,当我尝试测试注册页面时,它只是重新加载同一页面。当我点击提交 按钮,不会进入我的数据库,也不会显示 "your account has been created"。我什至尝试过使用已弃用的 MySQL 代码,但它也失败了。请记住,这只是一组简单的代码,根本没有使用 CSS 进行样式化。 这是代码...
<?php
include("/scripts/connectionfile.php");
if(isset($_POST['submit'])) {
$email = $_POST ['email'];
$username = $_POST['username'];
$password = md5($_POST['password']."ALS52KAO089");
$confpassword = md5($_POST['conpassword']."ALS52KAO089");
}
if(isset($email, $username, $password, $confPassword)){
if(strstr($email, "@")){
if($password == $confPassword){
$query = $dbc->prepare("SELECT * FROM users WHERE username = ? OR email = ?");
$query = $query->execute(array(
$username,
$email
));
$count = mysql_num_rows($query);
if($count == '0'){
$query = $dbc->prepare("INSERT INTO users SET username = ?, email = ?, password = ?");
$query = $query->execute(array(
$username,
$email,
$password
));
if($query){
echo "Your account has been created, you may now login!";
}
}else{
echo "A user already exist with that name.";
}
}else{
echo "Your passwords do not match!";
}
}else{
echo "Invalid email address!";
}
}
?>
<form action="" method="POST">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Email:</td>
<td><Input type="text" name="email"></td>
</tr>
<tr>
<td>Password:</td>
<td><Input type="password" name="password"></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><Input type="password" name="conpassword"></td>
</tr>
</table>
<input type="submit" name="submit" value="Register">
</form>
这是我的连接码
<?php
$user ="root";
$pass = "";
$dbc = new PDO("mysql:host=localhost;dbname=users", $user, $pass);
?>
尝试我在下面概述的更改:
<?php
include("/scripts/connectionfile.php");
if(isset($_POST['submit'])) {
function get_user_count($username = false,$email = false,$con = false)
{
if($username != false && $email != false && $con != false) {
$query = $con->prepare("SELECT COUNT(*) as count FROM users WHERE username = ? OR email = ?");
$query->execute(array($username,$email));
$result = $query->fetch(PDO::FETCH_ASSOC);
if($result['count'] == 1)
return true;
}
return false;
}
// Use a better validate
$creds['email'] = (filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))? $_POST['email']:false;
// Check it's not empty
$creds['username'] = (!empty($_POST['username']))? $_POST['username']:false;
// You should be using a proper encryption. md5 is not good enough, even with a salt
$creds['password'] = (!empty($_POST['password']))? md5($_POST['password']."ALS52KAO089"):false;
$creds['conpassword'] = (!empty($_POST['conpassword']))? md5($_POST['conpassword']."ALS52KAO089"):false;
if(!in_array(false,$creds)) {
// You were trying to match $conpassword and $conPassword
// Notice the P in confp and confP
if($creds['password'] == $creds['conpassword']){
if(get_user_count($creds['username'],$creds['email'],$dbc) == false){
// Your statement is a mix of insert and update
$query = $dbc->prepare("INSERT INTO users (`username`,`email`,`password`) VALUES (?,?,?)");
// Swicht $query to $result
$result = $query->execute(array($creds['username'],$creds['email'],$creds['password']));
if($result)
$error = "Your account has been created, you may now login!";
}else
$error = "A user already exist with that name.";
}else
$error = "Your passwords do not match!";
}else
$error = "Invalid email address!";
echo $error;
}
?>
<form action="" method="POST">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Email:</td>
<td><Input type="text" name="email"></td>
</tr>
<tr>
<td>Password:</td>
<td><Input type="password" name="password"></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><Input type="password" name="conpassword"></td>
</tr>
</table>
<input type="submit" name="submit" value="Register">
</form>