0

我是 HTML、PHP、CSS 等开发的新手。

我需要做这个小的注册和登录表格。我没有详细介绍面向对象的 PHP,我正在以最简单的方式工作,因为这项任务需要在很短的时间内完成,而且过去两天我只是在编码和试验这些语言。

我已经拥有的是一个有效的注册和登录表单,当它们被提交时,信息会被发布到另一个 php 文件中。然后它会验证数据是否已输入并且电子邮件尚未使用。我需要的是,当电子邮件已被使用并且字段为空时,它会自动返回注册/登录表单并显示一条带有各自错误的消息。

我知道这可能是以不同的方式完成的,但截止日期真的很近,所以我需要一个与我已有的解决方案一起工作的解决方案。

如果已经有类似的问题,我很抱歉,但我可能使用了不正确的关键字来搜索解决方案。

我目前使用的关键字是重定向,“返回上一页”。

如果 JavaScript 更适合这种操作,它也被排除在外,并希望指出这一点,尽管 PHP 解决方案会更受欢迎,因为我目前获得的 PHP 知识比 JavaScript 知识多。

谢谢,任何有关合适解决方案的帮助或指导将不胜感激。

4

4 回答 4

1

有许多不同的方法可以做到这一点。如果在提交表单时您在不同的 php 文件上执行代码,那么您可以在那里有一个 IF 语句,如果用户输入出现错误,则将标题重定向回表单页面,例如:

if($username == "")
{
    header("Location: YOUR_FORM_PAGE.php");
}

希望这可以帮助。

要将执行添加到同一页面,您可以执行此操作。

添加这些按钮;

<input type="hidden" id="submitted" name="submitted" value="1">
<span class="label"></span><input type="submit" class="submit"  value="Submit"><input type="reset" class="submit"  value="Clear">

将表单操作设置为表单页面。将此添加到页面顶部并添加您想要的任何 PHP;

if(isset($_POST["submitted"]) && $_POST["submitted"] == 1)
{

例如;

if($from_fullname == "")
    {
        $submission_status = '<div class="vpb_info" align="left">Please enter your fullname in the required field to proceed. Thanks.</div>';
    }

并将其添加到您希望显示错误的页面;

 <p> <?php echo $submission_status; ?></p>
于 2013-10-25T00:24:47.783 回答
1

您可以使用

  • A) PHP header() 函数
  • B) 回显 META HTTP - EQUIV=" refresh " CONTENT=" seconds; URL = \the-other-url">
  • C) 像这样使用 JS,但是你需要设置一个超时

例子:

if (empty ($_POST ['username']) || empty ($_POST ['password']))
{
    echo "Please enter a username, or password";
    header ("refresh:5; url=back.php");
    exit;
}
于 2013-10-25T00:24:59.293 回答
0

这些将帮助您入门,注册或注册 php 文件和我曾经制作的登录 php 文件(个人信息是伪造的)。

注册.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 回答
0

听起来http-redirecthttp://php.net/manual/en/function.http-redirect.php)应该可以帮助你。您可以使用它重定向您的错误条件。

更新

使用重定向,您可以附加 QueryString 参数,以便您可以使用错误代码和/或消息作为查询字符串参数重定向回 l​​ogin.php 页面。

于 2013-10-25T00:25:24.823 回答