0

HTML、PHP、CSSなどの開発は初めてです。

この小さな登録とログイン フォームを実行する必要があります。オブジェクト指向 PHP の詳細には触れていません。このタスクは短時間で完了する必要があるため、最も単純な方法で作業しています。また、この 2 日間でこれらの言語をコーディングして実験しただけです。

私がすでに持っているのは、登録フォームとログインフォームが機能していて、それらが送信されると、情報が別のphpファイルに投稿されます。データが入力されたこと、および電子メールがまだ使用されていないことを確認します。私が必要とするのは、電子メールがすでに使用されている場合、およびフィールドが空のままの場合、自動的に登録/ログインフォームに戻り、それぞれのエラーを含むメッセージが表示されることです.

これが別の方法で行われた可能性があることは知っていますが、締め切りが非常に近いため、既に持っているものと連携するソリューションが必要です.

類似の質問がすでにある場合は申し訳ありませんが、解決策を検索するために間違ったキーワードを使用している可能性があります。

現在使用しているキーワードはリダイレクト、「前のページに戻る」です。

JavaScriptがこの種の操作により適している場合、それも例外であり、これを指摘してほしい.

ありがとう、適切な解決策への助けや指示は大歓迎です。

4

4 に答える 4

0

登録またはサインアップ用の php ファイルと、私が一度作成したログイン用の php ファイル (個人情報は偽造されています) を用意します。

SignUp.php

<?php 

session_start();

$name = $_REQUEST['name'] ;
$userpassword = hash('sha512',$_REQUEST['password'] );
$signature = $_REQUEST['signature'] ;
$image = $_REQUEST['image'];
$email = $_REQUEST['email'] ;
$emailreplies = $_REQUEST['emailreplies'] ;




if (!isset($_REQUEST['name'])) {
    header( "Location: MotesBlog.php" );
}else{

$username="root";
$password="root";
$database="MotesBlog";

mysql_connect("localhost",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

    $query=sprintf("SELECT Name FROM users WHERE Name LIKE '%s';",
                   mysql_real_escape_string($name));
    $query=mysql_query($query);

    if(mysql_num_rows($query)){

        $query = sprintf("SELECT Email FROM users WHERE Name='%s';",
                                 mysql_real_escape_string($name));
        $query=mysql_query($query);

        $_SESSION['NameTaken'] = true;
        $_SESSION['UsedName'] = $name;
        $_SESSION['UsedEmail'] = mysql_result($query,0);
        header("Location: SignUp.html");
    }else{

    $query=sprintf("SELECT Email FROM users WHERE Email LIKE '%s';",
                   mysql_real_escape_string($email));
    $query=mysql_query($query);

    if(mysql_num_rows($query)){

        $_SESSION['EmailTaken'] = true;
        $_SESSION['UsedEmail'] = $email;
        header("Location: SignUp.html");
    }else{

        $query = sprintf(" INSERT INTO users VALUES (
        NULL , '%s', '%s' , '%s', '%s', '%s', CURRENT_TIMESTAMP , 0, $emailreplies);",
        mysql_real_escape_string($name),
        $userpassword,
        mysql_real_escape_string($signature),
        mysql_real_escape_string($image),
        mysql_real_escape_string($email));

        mysql_query($query);


        $query = sprintf("SELECT JoinDate FROM users WHERE Name='%s';",
                         mysql_real_escape_string($name));

        $vcode=md5(mysql_result(mysql_query($query),0));

        mysql_close();


        require_once "Mail.php";

        $from = "PocketWoods Hunting Hall<pwoods@email.com>";
        $to = $email;
        $subject = "Welcome to Motes Blog";
        $body = "<html>
                 <body>Thank you for your time. <br/>
                 To ensure a human made this account and not an 
                 automated process please click the link below:<br>
                 <a href=\"http://site.com/MotesBlog/verifyaccount.php?vcode=".$vcode."&name=".$name."\">
                 Activate Account
                 </a>
                 </body>
                 </html>";  

        $host = "mail.root.com";
        $username = "root@root.com";
        $password = "root";

        $headers = array (  'From' => $from,
                            'To' => $to,
                            'Subject' => $subject,
                            'MIME-Version' => "1.0",
                            'Content-type' => "text/html; charset=iso-8859-1");
        $smtp = Mail::factory('smtp',
                array ( 'host' => $host,
                        'auth' => false,
                        'username' => $username,
                        'password' => $password));

        $mail = $smtp->send($to, $headers, $body);


        header("Location: success.html");
        }
    }
}
?>

ログイン.php

<?php

session_start();



$username="root";
$password="root";
$database="MotesBlog";

mysql_connect("localhost",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$user_name = $_REQUEST['name'];
$user_password = $_REQUEST['password'];

if (!isset($_REQUEST['name'])) {
    header( "Location: MotesBlog.php" );
}else{

    if(isset($_SESSION['User'])){
        if( ($_SESSION['CreatedTime'] + 3600) < time() ){

            $_SESSION['Expired'] = true;
        }
        unset($_SESSION['User']);
    }




    $query = sprintf("SELECT Password FROM users WHERE Name='%s';",
    mysql_real_escape_string($user_name));
    $query=mysql_query($query);

    if(mysql_num_rows($query)){
        $real_password=mysql_result($query,0);

        $query = sprintf("SELECT Email FROM users WHERE Name='%s';",
        mysql_real_escape_string($user_name));

        $query=mysql_query($query);
        $email = mysql_result($query,0);

        if($real_password == hash('sha512',$user_password)){



            $query = sprintf("SELECT Validated FROM users WHERE Name='%s';",
            mysql_real_escape_string($user_name));
            $query=mysql_query($query);

            mysql_close();

                if(mysql_result($query,0)){

                    $_SESSION['User'] = $user_name;
                    $_SESSION['CreatedTime'] = time();
                    setcookie("User", $_REQUEST['name'], time() + 60*60*24*365);

                    header( "Location: MotesBlog.php" );

                }else{

                    $_SESSION['resend_name'] = $user_name;
                    $_SESSION['resend_email'] = $email;
                    $_SESSION['NotValidated'] = true;

                    header( "Location: MotesBlog.php" );

                    }
            }else{

                $_SESSION['WrongPW'] = true;
                $_SESSION['UsedEmail'] = $email;
                header( "Location: MotesBlog.php" );
            }
        }else{
            $_SESSION['WrongName'] = true;
            header( "Location: MotesBlog.php" );
        }


}

?>
于 2013-10-25T00:47:04.860 に答える