web-dev-qa-db-ja.com

POST Formメソッドなし(PHP)

フォームを使用せずにPOSTメソッドを使用して、あるページから別のページにデータを渡す方法はありますか?.

Getと同様に、?送信するものは何でも。投稿のために何かできますか?.

また、セッションを使用するといわれる別のスレッドも読んだ。ただし、セッションはCookieとしてユーザーのコンピューターに保存され、Cookieは安全ではありません。

それを行う他の方法はありますか?最初のページで何かを記述してから、それを2番目のページに渡します。

また、POSTメソッドがどのように機能するのか、そしてどのようにデータを渡すのかについて、誰かが私に説明できたら良いと思います。

12
Arjun Bajaj

これにはjQueryを使用する必要があります。そのajax()関数を使用できます。以下のリンクにアクセスして、機能の一覧とともにその完全な説明を読んでください。

これはあなたのためのサンプルコードです:

<hmtl>
    <head>
        <script type="http://code.jquery.com/jquery-1.5.1.min.js"></script>
    </head>
    <body>
        <div class="my-fake-form">
            <input id="posting-value-1" type="text" />
            <a id="submit-form-link" href="#submit">Submit this Div!</a>
        </div>
    </body>
</html>

Ajaxコード:

function fake_form_submit ()
{

    var post = $('input#posting-value-1').val();

    $.ajax({
    'url': 'your-php-file.php',
    'type': 'POST',
    'dataType': 'json', 
    'data': {post: post},
    'success': function(data)
     {
         if(data.finish)
         {
            $("div.my-fake-form").attr("innerHTML","Form Submited!");
         }
         else
         {
            $("div.my-fake-form").attr("innerHTML","Form Not Submited!");   
         }
     },
     beforeSend: function()
       {
            $(document).ready(function () {
                $("div.my-fake-form").attr("innerHTML","Loading....");
            });
       },
        'error': function(data)
        {
          $(document).ready(function () {
            $("div.my-fake-form").attr("innerHTML","ERROR OCCURRED!");
          });
        }
      });
}

$(document).ready(function () {
    $('a#submit-form-link').click(function (e) {
       e.preventDefault();
       fake_form_submit();
    });
});

PHP:

<?php
$post = $_POST['post'];

//Do Something with the value!

//On Succes return json encode array!
echo json_encode(array("finish" => true));
?>

AJAXドキュメント
AJAX関数のドキュメント
AJAXチュートリアル

8
Jack Billy

セッションを使用するだけです。

Cookieへのセッションの保存は、セッションのIDに制限された上記の回答で示されています。セキュリティを重視する場合は、CookieをHTTP Cookieとしてのみ送信するように構成することもできます。

リクエストするページで、必要なセッションのKey-Valueペアを設定します。要求されたページで、以前に設定したセッションキーを要求します(最初に存在するかどうかを確認します)。 php.iniでは、セッションCookieをHTTPのみとして使用することを選択できるため、セキュリティが強化されます。

さらに:AJAXまたは上記のcURLを使用するのと同じくらい簡単にデータを投稿できます。

5
Iwan Luijks

サーバー側では cURL 拡張を使用してこれを実現できます。チュートリアル: こちら サーバー側のソリューションを探しているのか100%わかりませんか?

1

ajaxリクエストを使用してPOSTリクエストをサーバーに送信するか、サーバー側のcURLを使用できます。

1
Headshota

ブラウザからPOSTしてリンクのように見せたい場合は、javascriptが必要です。

submit()関数を使用できます。たとえば http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml を参照してください。

しかし、GETのように動作させたい場合は、GETを使用しないでください。

0
BiAiB

POSTページからの送信リクエストの場合、 JQuery.post を使用して実行できます(この場合、ライブラリを使用)または cURL (php)

0
Carbos

1つの方法は、JavaScriptを使用して非表示のフォームを送信することです。 HTML:

<button id="my-button">Go to other page</button>
<form id="my-form" method="POST" action="/other-page" style="display: none">
  <input type="hidden" name="param1" value="value1">
  <input type="hidden" name="param2" value="value2">
</form>

JavaScript(jQuery):

$("#my-button").click(function(e) {
    $("#my-form").submit();
});

リンク(<a>タグ)の代わりにボタンなど.

これにより、ブラウザが別のページに移動します。現在のページに留まり、一部のデータをバックグラウンドで投稿する場合は、jQueryまたは同様のライブラリでajax関数を使用します。

0
Lassi