Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 注册表单(HTML、PHP和MySQL)在出现错误或缺少值后重定向_Javascript_Php_Html_Mysql_Forms - Fatal编程技术网

Javascript 注册表单(HTML、PHP和MySQL)在出现错误或缺少值后重定向

Javascript 注册表单(HTML、PHP和MySQL)在出现错误或缺少值后重定向,javascript,php,html,mysql,forms,Javascript,Php,Html,Mysql,Forms,我对HTML、PHP、CSS等的开发还不熟悉 我需要做这个小的注册和登录表格。我还没有详细介绍面向对象的PHP,我正在以最简单的方式工作,因为这项任务需要在短时间内完成,而在过去的两天里,我只对这些语言进行了编码和实验 我已经有了一个有效的注册和登录表单,当它们被提交时,信息会被发布到另一个php文件中。然后验证数据是否已输入,以及电子邮件是否尚未使用。我需要的是,当电子邮件已经被使用,并且某个字段为空时,它会自动返回到注册/登录表单,并显示一条包含相应错误的消息 我知道这可能是以另一种方式完成

我对HTML、PHP、CSS等的开发还不熟悉

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

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

我知道这可能是以另一种方式完成的,但最后期限真的很近,所以我需要一个与我已有的解决方案一起工作的解决方案

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

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

如果JavaScript更适合这种操作,那么也可以例外,并且希望指出这一点,尽管php解决方案更受欢迎,因为我目前获得的php知识比JavaScript知识更多


谢谢,如果您能提供任何帮助或指导,我们将不胜感激

有很多不同的方法可以做到这一点。如果在提交表单时,您在另一个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">
比如,

if($from_fullname == "")
    {
        $submission_status = '<div class="vpb_info" align="left">Please enter your fullname in the required field to proceed. Thanks.</div>';
    }
if($from\u fullname==“”)
{
$submission_status='请在必填字段中输入您的全名以继续。谢谢';
}
并将其添加到要显示错误的页面中

 <p> <?php echo $submission_status; ?></p>

您可以使用

  • (A)
  • B) 回显元数据HTTP-EQUIV=“刷新” CONTENT=“seconds;URL=\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;
}

听起来像是http重定向(http redirect)()应该能帮到你。你可以用它在你的错误条件下重定向

更新


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

这些将帮助您开始注册或注册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中的
。您可以使用header('Location:login.php');将一个页面重定向到另一个页面。好的,我找到了关于的信息,但是我可以发送信息吗?例如,login.php只是一个区分一个错误和另一个错误的数字,而login.php会相应地向用户显示一条消息吗?您可以发送类似标题的信息('Location:login.php?error=101');您可以使用$\u GET捕获错误,在if-else中求值并回显一些消息。谢谢,我会尝试的!我试过了,到现在为止效果都不好,它告诉我这个东西没有找到!我不认为C适用,因为我需要的是,一旦注册或登录表单被提交,就会被带到下一个php,除非所有内容都经过验证(每个字段都已填写,电子邮件也未被使用),否则它不会显示任何内容。选项A我已经看到了你给我的链接,但老实说,我不明白它到底是如何工作的。我不理解的部分是[,bool$replace=true[,int$http\u response\u code]])部分,你能给我举个小例子吗?在你的其他php脚本上,一旦你进行了验证,如果验证失败,你将使用选项a。。我认为,你不知道如何验证用户。。。如果这是正确的,你最好在这里发布你的代码。更新后的帖子,请尝试一下,如果可以的话。是的,我会谢谢你。如果你说的是JavaScript验证,不,我不知道怎么做。我所做的验证是以一种非常原始的方式进行的。不,我是说php,但是你可以使用JS。嗨,谢谢。是的,这很好,但是这能向YOUR_FORM_PAGE.php发送一个错误的信号吗,然后错误会显示在YOUR_FORM_PAGE.php中?执行此操作的最佳方法是在用户提交时将其重定向到同一表单页面,这可以通过将页面上的隐藏提交按钮设置为value=1,然后将表单操作设置为表单页面,然后从“如果(isset($\u POST[“submitted”])&&&$\u POST[“submitted”]==1)”,则可以从他们的邮件中显示任何错误消息。
<?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

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" );
        }


}

?>