【发布时间】:2014-01-29 05:06:48
【问题描述】:
帮助,我已经被这个问题困扰了一段时间了。我关注的这个 php 注册码不起作用。提交表单后,代码应该写入 sql 数据库,但不会。请帮忙。谢谢。 php进程的文件名为registration-process2.php
<?php
require_once('functions.inc');
if (!isset($_POST['submit']))
{
die(header("Location: register.php"));
}
$_SESSION['formAttempt'] = true;
if (isset($_SESSION['error'])) {
unset($_SESSION['error']);}
$_SESSION['error']=array();
$required = array("lname","fname","email","password1","password2");
//Check required fields
foreach ($required as $requiredField) {
if (!isset($_POST[$requiredField])||$_POST[$requiredField]=="") {
$_SESSION['error'][] = $requiredField." is required.";
}
}
if (!preg_match('/^[\w .]+$/',$_POST['fname'])) {
$_SESSION['error'][]="First Name must be letters and numbers only.";
}
if (!preg_match('/^[\w .]+$/',$_POST['lname'])) {
$_SESSION['error'][]="Last Name must be letters and numbers only.";
}
if (!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
$_SESSION['error'][]="Invalid e-mail address";
}
if($_POST['password1'] != $_POST['password2']) {
$_SESSION['error'][]="Passwords don't match";
}
//final disposition
if(count($_SESSION['error']) > 0) {
die(header("Location: register.php"));
} else {
if(registerUser($_POST)) {
unset($_SESSION['formAttempt']);
die(header("Location: success.php"));
} else {
error_log("Problem registering user: {$_POST['email']}");
$_SESSION['error'][]="Problem registering account";
die(header("Location: register.php"));
}
}
function registerUser($userData) {
$mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
if($mysqli->connect_errno) {
error_log("Cannot connect to MySql: ".$mysqli->connect_error);
return false;
}
$email=$mysqli->real_escape_string($_POST['email']);
//check for an existing user
$findUser="SELECT id from Customer where email = '{$email}'";
$findResult=$mysqli->query($findUser);
$findRow=$findResult->fetch_assoc();
if (isset($findRow['id']) && $findRow['id'] != "") {
$_SESSION['error'][]="A user with that e-mail address already exists";
return false;
}
$lastName=$mysqli->real_escape_string($_POST['lname']);
$firstName=$mysqli->real_escape_string($_POST['fname']);
$cryptedPassword=crypt($_POST['password1']);
$password=$mysqli->real_escape_string($cryptedPassword);
$query="INSERT INTO customer (email,create_date,password,last_name,first_name) VALUES ('{$email}',NOW(),'{$password}','{$lastName}','{$firstName}')";
if($mysqli->query($query)) {
$id=$mysqli->insert_id;
error_log("Inserted {$email} as ID {$id}");
return true;
} else {
error_log("Problem inserting {$query}");
return false;
}
} //end function registerUser
?>
和 html 代码。
<form id="userForm" method="POST" action="register-process2.php">
【问题讨论】:
-
请具体说明您卡在哪里。你在
$_POST数组中获取数据吗?