簡體   English   中英

jQuery 發布到 php 文件

[英]jQuery to post to php file

我有一個 index.html 文件,我想在加載時運行一些 jQuery 文件。 本質上,我想根據一些 session 變量檢查用戶是否已經登錄。

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

在這個 function 中,我只想觸發 autheticate.php 來檢查是否設置了 $_SESSION['user'] ,如果是,它將重定向到主頁,否則它將重定向到登錄頁面......

如何在沒有 html 表格的情況下在 jQuery 中發帖? 我只想發帖到 url...

編輯:

根據@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');
}

?>

使用 javascript 肯定可以做到這一點,但它根本不安全......

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

我的回答是在將任何內容發送到瀏覽器之前使用 PHP 進行檢查/重定向,這將更簡單,更安全......

javascript 解決方案不安全的原因是您依賴於駐留並由客戶端控制的技術來控制對受保護區域的訪問。

您可以使用 $.post(url, params),其中 url 是一個字符串,params 是一個 hash 與您的帖子數據。

    $.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;

使用$.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 重定向用戶。 這樣安全多了。

為什么要打擾 AJAX 請求? 由於您使用 PHP 構建頁面,因此只需讓 PHP 在 JavaScript 塊中嵌入一些變量:

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

這將為您節省一個 HTTP 往返來檢索您已經可用的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM