以编程方式运行操作而不是使用按钮

时间:2017-03-22 09:15:26

标签: javascript php html css html5

我希望在我的网站上的用户注册后出现一个包含欢迎消息等的框。但是,只要点击一个按钮就可以显示它,我希望它在电子邮件,密码,用户名等发送到数据库时发生。所以,而不是这样做:

 <button onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Login</button>

我有什么方法可以通过编程方式完成此操作吗?我也尝试过:

<script>
self  = function(id01)
</script>

但它无法正常工作。关于我应该尝试/做什么的任何提示?

这是我将信息发送到我的数据库的方式:

//if no errors have been created carry on
    if(!isset($error)){


        $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT);


        $activasion = md5(uniqid(rand(),true));


        try {


            $stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
            $stmt->execute(array(
                ':username' => $_POST['username'],
                ':password' => $hashedpassword,
                ':email' => $_POST['email'],
                ':active' => $activasion
            ));
            $id = $db->lastInsertId('memberID');

            //send email
            $to = $_POST['email'];
            $subject = "Registration Confirmation";
            $body = "<p>Thank you for registering at Game World.</p>
            <p>To activate your account, please click on this link: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p>
            <p>Regards Site Admin</p>";

            $mail = new Mail();
            $mail->setFrom(SITEEMAIL);
            $mail->addAddress($to);
            $mail->subject($subject);
            $mail->body($body);
            $mail->send();

            //redirect to index page
            header('Location: index.php?action=joined');

?>

2 个答案:

答案 0 :(得分:0)

你可以通过多种方式实现你想要的结果,js警报,jquery弹出。引导模态。

选项1:

使用jquery和jquery ui

<!-- latest stable  jquery -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>

<!-- latest stable jquery ui -->

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<?php

    if(isset($_GET['action']) && !empty($_GET['action'])){

        $action = $_GET['action'];

        if($action == "joined"){?>

            <div id="modal" style="display: none;">
                This is pop up, add message.
            </div>
            <script type="text/javascript">
                 $(document).ready(function () {

                         $("#modal").dialog();

                 });
             </script>
    <?php

        }else{

            //action != joined do something
        }

    }else{

        //$GET NOT set do something
    }

选项2: 使用Bootstrap

<!-- latest stable  jquery -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>

<!-- Bootstrap links -->
<?php

    if(isset($_GET['action']) && !empty($_GET['action'])){

        $action = $_GET['action'];

        if($action == "joined"){?>


            <div class="modal fade" id="success">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-body">
                            <div class="alert alert-block alert-success">
                                <h4>Welcome</h4>
                                <p>Add Message</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        <script type="text/javascript">
            $('document').ready(function(){
              $('#success').modal('toggle'); });
        </script>

    <?php

        }else{

            //action != joined do something
        }

    }else{

        //$GET NOT set do something
    }

选项3

Js警告

<?php

    if(isset($_GET['action']) && !empty($_GET['action'])){

        $action = $_GET['action'];

        if($action == "joined"){?>
        <script type="text/javascript">

            alert('welcome');
        </script>

    <?php

        }else{

            //action != joined do something
        }

    }else{

        //$GET NOT set do something
    }

第一个选项,您需要根据您的设计需要设置pop / div的样式。

正如您所看到的,您需要首先检查网址中的操作是否已加入,这意味着他们已成功注册,然后显示弹出窗口

答案 1 :(得分:0)

您可以使用服务器端语言PHP使用$_GET['action']$_REQUEST['action']正确返回标题 - index.php?action=joined

在数据库插入页面上创建逻辑,检查查询是否成功。成功时,它会将您路由到标题重定向,否则返回错误消息并退出脚本。

这样的事情:

$query = 'INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)';

$stmt = $db->prepare($query);
$stmt->execute(array(
    ':username' => $_POST['username'],
    ':password' => $hashedpassword,
    ':email' => $_POST['email'],
     ':active' => $activasion
));
//Check to see if your $stmt is set, will return true if successful else it will return false
if($stmt){
    $id = $db->lastInsertId('memberID');

    //send email
    $to = $_POST['email'];
    $subject = "Registration Confirmation";
    $body = "<p>Thank you for registering at Game World.</p>
        <p>To activate your account, please click on this link: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p>
        <p>Regards Site Admin</p>";

    $mail = new Mail();
    $mail->setFrom(SITEEMAIL);
    $mail->addAddress($to);
    $mail->subject($subject);
    $mail->body($body);
    $mail->send();

        //redirect to index page
    header('Location: index.php?action=joined');
}else{
echo 'Sorry but there was an issue with the INSERT.';
exit();
}

在index.php上使用if/else语句或switch来检查$_GET['action'] (isset)是否==为您的值'joined' }}。然后创建一个变量来保存欢迎消息并显示它,否则将变量声明为null或者发布备用消息。

index.php页面的顶部:

$message = "";
if(isset($GET['action']) && $GET['action']=="joined"){
    //place your Welcome message here
    $message .= "<h2>Welcome and thank you for signing up!</h2>";

}else{
    $message .= "<h2>Some other message</h2>"; 
    //Or you could go with empty quotes or declare $message NULL
}

然后在你的变量$ message的HTML调用中使用类似的东西:

<?=$message?><?php echo $message; ?>

<body>
    <div id='wrapper'>
        <header>Some header</header>
        <nav id='nav'>
          <ul>
            <li class="nav-item">
               <a href="#">BUTTON 1</a>
            </li>
            <li class="nav-item">
               <a href="#">BUTTON 2</a>
            </li>
          </ul>
        </nav>
        <div id="content">
            <?=$message?>
            <div id="heading">Some Page Heading</div>
            <div id="">
                <p>
                Some page content.
                </p>
            </div>
        </div>
    </div>
</body>

我不是最熟练的PHP,但这可能是我如何处理这样的服务器端请求。 ***请记住,您要求更新服务器页面,而不是按下按钮等客户端操作。

希望这有帮助。