Ajax表单提交需要PHP变量

时间:2014-12-07 06:38:16

标签: javascript php jquery ajax forms

我提交表单时需要一个静态函数调用Token::generate();

正如您可以看到使用我的方法创建令牌的变量$token。 然后,您会看到将var添加到表单的变量$hidden

问题在于,如果用户登录失败,那么表单将会清除,以便他们可以输入上次尝试中创建的错误信息。

如果用户尝试再次使用该令牌,则无法使用令牌,因为该令牌已被使用。

我应该创建一个只生成令牌的php文件吗?然后我可以使用ajax来获取获取令牌的get请求吗?

会有更好的方法吗?

if ($user->isLoggedin()) {
            echo '<span class="profile-link"><a class="titles red-links" href="/' . $user->data()->username . '">' . $user->data()->username . '</a></span>';
        } else {
            $token = Token::generate();
            $hidden = '<input type="hidden" name="token" value="' . $token . '">';
            ?><script>
            jQuery(document).ready(function(){
                document.body.style.paddingTop="3px";
                $('a[href^="#fallr-"]').click(function(){
                    var id = $(this).attr('href').substring(7);
                    methods[id].apply(this,[this]);
                    return false;
                });
                var methods = {  
                    login : function(){
                        var login = function(){
                            var username = $(this).children('form').children('input[type="text"]').val();
                            var password = $(this).children('form').children('input[type="password"]').val();
                            var remember = $(this).children('form').children('input[name="remember"]').val();
                            var token = $(this).children('form').children('input[name="token"]').val();
                            if(username.length < 1 || password.length < 1 || token.length < 1){
                                alert('Invalid!\nPlease fill all required forms');
                                console.log(token)
                            } else {
                                var data = {
                                    username: username,
                                    password: password,
                                    remember: remember,
                                    token: token,
                                }
                                $.ajax({
                                    type: "POST",
                                    url: "login.php",
                                    data: data,
                                    dataType: "text",
                                    cache: false,
                                    success: function(data){
                                        console.log('here');
                                        if(data === 'login_success') {
                                            window.location.href = '/members/';
                                        } else {
                                            $('#error').append(data);
                                            $('form#login')[0].reset();
                                            $('form#login').children('input[name=username]').on('click', function() {
                                                $('#error').html('');
                                            });
                                        }
                                    },
                                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                                        alert(textStatus);
                                        alert(errorThrown);
                                    }
                                });
                            }
                        }                        
                        $.fallr.show({
                            icon        : 'secure',
                            width       : '400px',
                            content     : '<h4 class="titles">Login</h4>'
                                        + '<span id="error"></span>'
                                        + '<form id="login">'
                                        +     '<input placeholder="Username" name="username" type="text"/'+'>'
                                        +     '<input placeholder="Password" name="password" type="password"/'+'>'
                                        +     '<input type="checkbox" name="remember" type="remember"/'+'> Remember Me'
                                        +     '<?php echo $hidden; ?>'
                                        + '</form>',
                            buttons : {
                                button1 : {text: 'Submit', onclick: login},
                                button4 : {text: 'Cancel'}
                            }
                        });             
                    }
                };
            });
            </script>
            <a href="#" class="titles red-links">Register</a><span class="titles red">&nbsp;|&nbsp;</span><a href="#fallr-login" class="titles red-links">Login</a>

0 个答案:

没有答案