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

「サイトの場所」フィールドの名前が間違っているため ( name="email" )、isset は常に false を返すため、php ブロックは実行されません。

于 2013-02-08T11:56:29.330 に答える
0

users(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 に答える