0

我只是想用注册表单创建一个会员区。但是,它没有提交。我已经经历了一切,但我仍然无法弄清楚这一点。似乎没有错误(除了它不起作用!)

我在本地运行这个。

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>
4

3 回答 3

1

如果您的文件名sign-up.php不是,那么您的问题可能出在这一行:

<form action="sign_up.php" method="post">

将其更改为:

<form action="sign-up.php" method="post">
于 2013-02-08T11:47:56.883 回答
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的方式更好。


另外我认为,当您插入 db 时,您应该使用INSERT INTO table SET id=1, name=Ivan, role=admin than INSET INTO table (...) VALUES(...),因为这样可以清楚地看到您插入了什么,并且可以轻松更改一些值。


action="sign_up.php"应该是action="sign-up.php"

于 2013-02-08T11:47:14.943 回答
0

您的“站点位置”字段名称错误( name="email" )因此 isset 返回始终为 false,因此永远不会执行 php 块。

于 2013-02-08T11:56:29.330 回答