PHP注册码不起作用

时间:2012-01-02 20:58:57

标签: php mysql ajax jquery

如果密码匹配,用户名或电子邮件尚未使用,则下面的代码用于将值插入MySQL数据库。此代码在另一页上从ajax调用。当它被调用时,页面将我重定向到register.php,而不是由ajax在后端完成。有没有人看到任何可能导致此问题的问题?它没有给我任何错误,只是一个空白的白页。

$user = strip_tags(htmlspecialchars($_POST['user'], ENT_QUOTES));
$pass = strip_tags(htmlspecialchars($_POST['pass'], ENT_QUOTES));
$cpass = strip_tags(htmlspecialchars($_POST['cpass'], ENT_QUOTES));
$age = strip_tags(htmlspecialchars($_POST['age'], ENT_QUOTES));
$email = strip_tags(htmlspecialchars($_POST['email'], ENT_QUOTES));
$country = strip_tags(htmlspecialchars($_POST['count'], ENT_QUOTES));
$lang = strip_tags(htmlspecialchars($_POST['lang'], ENT_QUOTES));
$mdpass = md5($pass);
$mdcpass = md5($cpass);
$created = Date("Y-m-d");


$result = mysql_query("SELECT username,email FROM tableName WHERE username = '$user'");
while ($row = mysql_fetch_array($result)) 
{
if ($row['username']>0) {
    echo 'nvuname';
} 
elseif ($row['email']>0)
{
    echo 'nvemail';
}
else
{
    if ($mdpass == $mdcpass && $age>>14) 
    {
        mysql_query("INSERT INTO tableName (username, pword, email,created,admin,rnumenab,autoreload,country,mailenab,updates,lang) VALUES ($user, $mdpass, $email, $created,'0','1','1',$country,'1','0',$lang)");
        echo 'success';
    }
}

JavaScript的:

$("#regsubmit").click(function() {
    var action = $("#mainReg").attr('action');
    var form_data = {
        user: $("#user-reg").val(),
        pass: $("#pass-reg").val(),
        cpass: $("#cpass-reg").val(),
        email: $("#email").val(),
        age: $("#age").val()
    };
    $.ajax({
        type: "POST",
        url: action,
        data: form_data,
        success: function(result)
        {
            if(result=='success') {
                $('#register-action').animate({
                    opacity : '-=1',
                    bottom : '-=60%'
                    }, 600);
                $('#register-action-bckgnd').hide();
                $('.message').fadeOut(600);
            } else {
                $('.regerror').fadeIn(600);
            }
        }
    });
    return false;
});

谢谢,如果您发现任何问题,请告诉我们。非常感谢你!

另外:如何清理输入,以便不包含HTML标签或者strip_tags是否这样做?感谢。

编辑:它现在可以正常工作并提交页面不会重新加载,但它总是会返回错误而不是成功,即使我确定我使用的是打开的电子邮件,用户名。事实证明我有('$ age')而不是('#age')。想法?

2 个答案:

答案 0 :(得分:1)

虽然我没有看到你的javascript,但当ajax调用导致空白页面时,通常意味着页面正常发布而不是(仅...)由ajax发布。

您需要添加类似

的内容
event.preventDefault();

return false;

到你的javascript点击/提交功能。

编辑:在没有看到html的情况下,您使用的是点击处理程序,虽然该点击处理程序可能会返回false,但这并不意味着表单无法正常提交。我会将javascript附加到表单submit-handler而不是提交。

答案 1 :(得分:1)

尝试使用普通按钮代替提交按钮,例如

<button id="regsubmit">register</button>

而不是:

<input type="submit" id="regsubmit" value="register" />

或者您可以执行$("form-seletor").submit(function(){ return false; });

之类的操作