2011-08-16 59 views
0

我有一個index.html文件,我想在加載時運行一些jQuery。基本上,我想檢查用戶是否已經基於某些會話變量登錄。要發佈到php文件的jQuery

所以index.html的將包含一些jQuery的,它使用$(document).ready(function(){ });

在這個功能我想剛剛火autheticate.php進行檢查,看是否$ _SESSION [「用戶」]設置,如果是則將重定向到主頁,否則將重定向到登錄頁面...

如何在jQuery中發佈而無需html表單?我只是想張貼到網址...

編輯:

基於@ jondavidjohn的答案,我改變了我的web應用程序,以便它使用的index.php檢查會話:

<?php 

session_start(); 

if(isset($_SESSION['username'])){ 
    //go to home page 
    header('Location: ...home.html'); 
}else{ 
    //go to login page 
    header('Location: ...login.html'); 
} 

?> 

回答

4

它肯定是可以使用JavaScript這樣做,但不保證在所有...

您需要在爲$_SESSION['user']服務器級別進行檢查之前,你甚至內容發送到瀏覽器...

我的答案是做檢查/用PHP重定向的事情之前被髮送給瀏覽器,就不會那麼複雜,更安全......

原因的JavaScript解決方案是不安全的,你是依靠居住在客戶控制下的技術來控制對保護區的訪問。

+0

+1爲正確的方式來處理此問題。 –

0

您可以使用$ .post(url,params),其中url是一個字符串,params是您的發佈數據的散列。

0
$.post("/authenticate.php",null,function(data){ 

    // do something based on response returned 
    if($data){alert("authenticated");} 
    else 
     alert("not authenticated"); 
    }); 

在你的PHP文件

if(isset($_SESSION['user'])) 
{  
echo true; 
} 
else 
return false; 
-1

爲什麼用AJAX請求打擾?既然你正在構建與PHP的頁面,只需要PHP嵌入一些變量在JavaScript塊:

<script type="text/javascript"> 
    var is_logged_in = <?php echo $_SESSION['logged_in'] ? 'true' : 'false' ?>; 
</script> 

This'd節省您的HTTP往返檢索數據,你已經有了可用。

+2

他說他正在處理一個html文件。所以他不能嵌入它。 –

+1

我不會推薦這種方式,因爲如果你不知道你在做什麼,那麼javascript是高度可利用的,並且不是很好的安全性。 – Starx

+1

@Vince:做'mv index.html index.php'很簡單。 –

0

使用$.post()通過AJAX將數據發佈到頁面。這樣做不會允許PHP腳本重定向用戶,您必須通過Java JavaScript重定向它們。

$.post('/path/to/page.php', {userID: 5}, function(data){ 
    // Use window.location to redirect 
}); 

或者,您可以創建一個「假」<form>元素,並張貼。

var $form = $('<form/>').attr({ 
    method: 'post', 
    action: '/path/to/page.php' 
}); 
var $input = $('<input/>').attr({ 
    name: 'userID', 
    type: 'text' 
}).val('5'); 
$input.appendTo($form); 
$form.submit(); 

我建議你接受@ jondavidjohn的建議,並在頁面發送到瀏覽器之前讓PHP重定向用戶。這更安全。