亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用表單而不是 Angular http 客戶端時,對 PHP 的 POST 請求不會檢索任何數據

使用表單而不是 Angular http 客戶端時,對 PHP 的 POST 請求不會檢索任何數據

PHP
蠱毒傳說 2021-06-18 18:00:54
我正在使用 angular http 客戶端與數據庫交互,一切正常,但是當我嘗試使用表單將數據發布到同一個鏈接時,我發現數據未定義。我試圖編碼、解碼值,因為我知道在發出任何 POST 請求和發送數據之前,我需要執行 angular.toJSON 方法,但這不起作用。這是我的 index.php,我從表單收到一個 POST 請求。if (empty($action)) {    if ((($_SERVER['REQUEST_METHOD'] == 'POST')) &&              (strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false)) {        $input = json_decode(file_get_contents('php://input'), true);        $action = isset($input['action']) ? $input['action'] : null;        $subject = isset($input['subject']) ? $input['subject'] : null;        $data = isset($input['data']) ? $input['data'] : null;    }case 'createNote':        // if I die() here, it prints the die()        if(!empty($data)) {            // if I die() here, $data is undefined.            $data = json_decode($data);            $user = $data[0];            $comment = $data[1];            $film_id = $data[2];            $lastupdated = date("Y-m-d H:i:s");            $sql = "INSERT INTO nfc_note (user, film_id, comment, lastupdated)                     VALUES (:user, :film_id, :comment, :lastupdated)";        }        break;我用來發送 POST 請求的表單<form action="index.php" method="POST">    <input type="hidden" name="action" value="create">    <input type="hidden" name="subject" value="note">    <input type="hidden" name="data" value="<?php echo "['username','content', 1]"; ?>">    <input type="submit" value="Submit"></form>如上所述,當我使用 angular 的 http 并傳遞如下參數時,它會起作用:this.createNote = function (data) {    var defer = $q.defer(),    data = {        action: "create",        subject: "note",        data: angular.toJson(data)    };    $http        .post(urlBase, data)        .success(function (response) {            defer.resolve({                data: response.data            });        })        .error(function (error) {            defer.reject(error);        });    return defer.promise;};使用表單時不起作用。任何我不知道的建議或錯誤?
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

我遇到了類似“使用表單而不是 angular http 客戶端時,對 PHP 的 POST 請求不會檢索任何數據”之類的問題。通常使用 php 流來檢測從 Angular 到 PHP 的數據


$data = file_get_contents('php://input');

但是當使用 fortify 掃描代碼時,它會檢測到 xss 漏洞,我必須更改方法。


以這種方式解決了這個問題,我希望對某人有所幫助。:-)


角度:


$http({

method: 'POST',

url: '<?php echo base_url(); ?>admin/saveTemplateEmail',

headers: {'Content-Type': 'application/json'},

data: {templateEmail:$scope.selectedTipology}}).then(function (response) {.....}

PHP:


$data = file_get_contents('php://input');

$post_val = json_decode($data, true);

我把它改成了以下


角度:


$http({

method: 'POST',

url: '<?php echo base_url(); ?>admin/saveTemplateEmail',

headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},

data: jQuery.param({templateEmail:$scope.selectedTipology})}).then(function (response) {.....}

PHP:


$post_val = $_POST;


查看完整回答
反對 回復 2021-06-19
  • 2 回答
  • 0 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號