web-dev-qa-db-fra.com

POST sans méthode de formulaire (PHP)

Est-il possible de passer des éléments d'une page à une autre à l'aide de la méthode POST sans utiliser de formulaires?.

Comme dans get, vous pouvez simplement ajouter un ? avec tout ce que vous voulez envoyer. Pouvez-vous faire quelque chose pour le post. 

J'ai aussi lu un autre fil qui disait d'utiliser des sessions. Mais les sessions sont enregistrées sur l'ordinateur de l'utilisateur en tant que cookies, et les cookies ne sont pas sécurisés.

Alors, y a-t-il un autre moyen de le faire? Comme décrire quelque chose dans la première page et ensuite passer à la deuxième page.

Aussi, il serait bon que quelqu'un puisse m'expliquer comment fonctionne la méthode POST? Et comment transmet-il les données?

12
Arjun Bajaj

Vous devriez utiliser jQuery pour cela. vous pouvez utiliser la fonction ajax() dans celle-ci. Visitez le lien ci-dessous et lisez-en la description complète avec la liste des fonctions pour vous aider. Mais voici encore un exemple de code pour vous ---

CODE HTML ::::::::

<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 CODE ::::::::

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 CODE ::::::

<?php

    $post = $_POST['post'];

    //Do Something with the value!

    //On Succes return json encode array!

      echo json_encode(array("finish" => true));

?>

LIENS ::::::

* AJAX DESCRIPTION LIEN

* AJAX LIENS DES FONCTIONS

* AJAX LIEN D'APPRENTISSAGE

8
Jack Billy

Il suffit d'utiliser des sessions.

Le stockage des sessions dans un cookie est comme indiqué par les réponses ci-dessus limitées à l'ID de la session. Les cookies peuvent même être configurés pour être envoyés sous forme de cookies HTTP uniquement, si vous êtes soucieux de la sécurité.

Sur la page demandeuse, définissez la paire clé-valeur de session souhaitée. Sur la page demandée, demandez la clé de session précédemment définie (vérifiez si elle existe en premier). Dans votre fichier php.ini, vous pouvez choisir d'utiliser les cookies de session en tant que HTTP uniquement, pour une sécurité accrue.

De plus, l'enregistrement des données peut être aussi simple que d'utiliser AJAX ou cURL, comme décrit ci-dessus.

5
Iwan Luijks

Côté serveur, vous pouvez y parvenir avec cURL extension. Tutoriel: ici Je ne suis pas sûr à 100% que vous recherchiez une solution côté serveur?

1
Wesley van Opdorp

vous pouvez utiliser des requêtes Ajax pour envoyer POST requêtes au serveur. ou cURL du côté serveur.

1
Headshota

Vous aurez besoin de javascript si vous voulez POST depuis le navigateur et lui donner l'apparence d'un lien:

vous pouvez utiliser la fonction submit (). voir http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml par exemple.

mais si vous voulez qu'il agisse comme GET, pourquoi ne pas utiliser GET?

0
BiAiB

Pour envoyer une demande dans POST à partir d'une page, vous pouvez le faire avec JQuery.post (dans ce cas, vous devez utiliser la bibliothèque) ou cURL (en php)

0
Carbos

Une solution consiste à utiliser JavaScript pour soumettre un formulaire invisible. 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();
});

Vous pouvez également utiliser un lien (balise <a>) au lieu d'un bouton, etc.

Cela obligera le navigateur à passer à l’autre page. Si vous souhaitez rester sur la page en cours et simplement publier des données en arrière-plan, utilisez les fonctions ajax de jQuery ou de bibliothèques similaires.

0
Lassi