我只是想尝试使用注册表单创建会员区。但是,它没有提交。我经历过一切,但我仍然无法弄清楚这一点。似乎没有错误(除了它不起作用!)
我在本地运行。
config.php文件
<?php session_start();
$connection = mysql_connect('localhost', 'root', '******');
mysql_select_db("members",$connection);
$mail_webmaster = 'email@gmail.com';
$url_root = 'http://localhost/getmanaging/';
$url_home = 'index.php';
$design = 'default';
?>
Sign_up.php页面:
<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Sign up</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Members Area" /></a>
</div>
<?php
//We check if the form has been sent
if(isset($_POST['username'], $_POST['firstname'], $_POST['surname'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['site_location'], $_POST['role']) and $_POST['username']!='')
{
//We remove slashes depending on the configuration
if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['firstname'] = stripslashes($_POST['firstname']);
$_POST['surname'] = stripslashes($_POST['surname']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['passverif'] = stripslashes($_POST['passverif']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['site_location'] = stripslashes($_POST['site_location']);
$_POST['role'] = stripslashes($_POST['role']);
}
//We check if the two passwords are identical
if($_POST['password']==$_POST['passverif'])
{
//We check if the password has 6 or more characters
if(strlen($_POST['password'])>=6)
{
//We check if the email form is valid
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{
//We protect the variables
$username = mysql_real_escape_string($_POST['username']);
$firstname = mysql_real_escape_string($_POST['firstname']);
$surname = mysql_real_escape_string($_POST['surname']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$site_location = mysql_real_escape_string($_POST['site_location']);
$role = mysql_real_escape_string($_POST['role']);
//We check if there is no other user using the same username
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
if($dn==0)
{
//We count the number of users to give an ID to this one
$dn2 = mysql_num_rows(mysql_query('select id from users'));
$id = $dn2+1;
//We save the informations to the databse
if(mysql_query('insert into users(id, username, firstname, surname, password, email, site_location, role, signup_date) values ('.$id.', "'.$username.'", "'.$firstname.'", "'.$surname.'", "'.$password.'", "'.$email.'", "'.$site_location.'", "'.$role.'", "'.time().'")'))
{
//We dont display the form
$form = false;
?>
<div class="message">You have successfuly been signed up. You can log in.<br />
<a href="connexion.php">Log in</a></div>
<?php
}
else
{
//Otherwise, we say that an error occured
$form = true;
$message = 'An error occurred while signing up.';
}
}
else
{
//Otherwise, we say the username is not available
$form = true;
$message = 'The username you want to use is not available, please choose another one.';
}
}
else
{
//Otherwise, we say the email is not valid
$form = true;
$message = 'The email you entered is not valid.';
}
}
else
{
//Otherwise, we say the password is too short
$form = true;
$message = 'Your password must contain at least 6 characters.';
}
}
else
{
//Otherwise, we say the passwords are not identical
$form = true;
$message = 'The passwords you entered are not identical.';
}
}
else
{
$form = true;
}
if($form)
{
//We display a message if necessary
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//We display the form
?>
<div class="content">
<form action="sign_up.php" method="post">
Please fill the following form to sign up:<br />
<div class="center">
<label for="username">Username: </label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="firstname">First Name: </label><input type="text" name="firstname" value="<?php if(isset($_POST['firstname'])){echo htmlentities($_POST['firstname'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="surname">Surame: </label><input type="text" name="surname" value="<?php if(isset($_POST['surname'])){echo htmlentities($_POST['surname'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="password">Password<span class="small">(6 characters min.): </span></label><input type="password" name="password" /><br />
<label for="passverif">Password<span class="small">(verification): </span></label><input type="password" name="passverif" /><br />
<label for="email">Email: </label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="site_location">Site Location: </label><input type="text" name="email" value="<?php if(isset($_POST['site_location'])){echo htmlentities($_POST['site_location'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="role">Role: </label><input type="text" name="role" value="<?php if(isset($_POST['role'])){echo htmlentities($_POST['role'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<input type="submit" value="Sign up" />
</div>
</form>
</div>
<?php
}
?>
<div class="foot"><a href="<?php echo $url_home; ?>">Go Home</a>
</body>
</html>
答案 0 :(得分:1)
如果你的文件名是sign-up.php
,那么你的问题就在于这一行:
<form action="sign_up.php" method="post">
将其更改为:
<form action="sign-up.php" method="post">
答案 1 :(得分:0)
我认为问题可能来自您的查询插入用户(ID ... 。表名后没有间隔,但我无法确定。您应该设置错误才能工作
如果有任何错误,您可以在or die(mysql_error());
的每一行之后添加mysql_query
进行转储。
//We count the number of users to give an ID to this one
mysql_query('select id from users order by id dest limit 1')
认为这种获取最后一个用户ID的方式更好。
另外我认为,当你插入数据库时,你应该使用INSERT INTO table SET id=1, name=Ivan, role=admin
而不是INSET INTO table (...) VALUES(...)
,因为这样可以清楚地看到你插入了什么,并且很容易改变一些值。
action =“sign_up.php” shuold action =“sign-up.php”
答案 2 :(得分:0)
您的“网站位置”字段名称错误(name =“email”)因此isset返回始终为false,因此永远不会执行php块。