2014-10-17 61 views
0

我有一个表单中的标志。 当用户输入错误的密码或电子邮件的PHP代码是检查它 和ajax给他一些警告一些div id宽度一些淡入淡出效果。PHP ajax重定向

但问题是,当用户把正确的电子邮件和密码我需要他 重定向到索引页面,而不是它显示了淡入淡出效果div内的索引页面。

我如何将用户重定向到索引页?

HTML代码:

<form action="./sign_in.php" method="post" id="form_sign_in"> 
     <input type="text" name="sign_in_email" id="sign_in_email"> 
     <input type="text" name="sign_in_pass" id="sign_in_pass"> 
     <input type="submit" name="connect" id="connect" value="Go"> 
</form> 

登录功能:

function sign_in_func($user_email, $user_pass) { 

$user_email = mysql_real_escape_string($user_email); 
$user_pass = mysql_real_escape_string($user_pass); 

$query = "SELECT user_id FROM users WHERE user_email = '{$user_email}' AND user_pass = '{$user_pass}' limit 1"; 

$result = mysql_query($query); 
$count = mysql_num_rows($result); 

if ($count == 1) { 

    while ($row = mysql_fetch_array($result)) { 

     $_SESSION['user_id'] = $row['user_id']; 

     return TRUE; 
    } 
} else { 

    return FALSE; 
} 

符号为PHP代码:

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

    $user_email = $_GET['sign_in_email']; 
} else { 

    echo 'Email is required <br>'; 

} 

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

    $user_pass = $_GET['sign_in_pass']; 
} else { 

    echo 'Pass is required <br>'; 
} 


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

    if (sign_in_func($user_email, $user_pass)) { 

     header("location: ../../index.php"); 
    } else { 

     echo 'Wrong email or password'; 
    } 
} 

Ajax代码

$('#form_sign_in').submit(function(){ 

var sign_in_email = $('#sign_in_email').val(); 
var sign_in_pass = $('#sign_in_pass').val(); 

$.ajax({ 
    url: 'scripts/php/sign_in.php', 
    data: { sign_in_email: sign_in_email, sign_in_pass: sign_in_pass }, 
    success: function(data){ 
     $('#signInFeedback').html(data); 

     $('#signInFeedback').fadeIn('slow', function(){ 
      $('#signInFeedback').fadeOut(5000); 
     }); 

    } 
}); 
return false; 

});

+1

的可能重复[?我怎样才能让jQuery的/的JavaScript重定向页面(http://stackoverflow.com/questions/503093/how-can-i-make-a-redirect-page-in-jquery-javascript) – 2014-10-17 21:52:34

回答

1

在PHP中,你可以有一个success键值设为truehtml按键,无论你将显示,如果success是不正确的数组,然后你就可以呼应JSON编码,并解析它的时候才返回你的JS代码。

例子:

//at top of code 
$ret = []; 

if (isset($_GET['sign_in_email']) && !empty($_GET['sign_in_email']) && isset($_GET['sign_in_pass']) && !empty($_GET['sign_in_pass'])) { 
    if (sign_in_func($user_email, $user_pass)) { 
     $ret['success'] = true; 
    } else { 
     $ret['success'] = false; 
     $ret['html'] = 'Wrong email or password'; 
    } 
} 
echo json_encode($ret); 

然后,在你的JS:

success: function(data){ 
    var jsonData = JSON.parse(data); 
    if(jsonData.success) 
     window.location = 'your_redirect_url.php'; 
    else{ 
     $('#signInFeedback').html(jsonData.html); 

     $('#signInFeedback').fadeIn('slow', function(){ 
      $('#signInFeedback').fadeOut(5000); 
     }); 
    } 

} 
+0

感谢它的工作!但如果用户输入错误的电子邮件或通过,他会得到以下消息:{“success”:false,“html”:“错误的电子邮件或密码”}, – 2014-10-17 22:16:41

+0

如何仅给他留言错误的电子邮件或密码? – 2014-10-17 22:17:10

+0

立即尝试,我更新了代码。 – 2014-10-17 22:18:01