Eğer bir POST isteği ile bir GET tarzı url gidersem ne olur?

3 Cevap php

Diyelim ki display.php adında bir sayfa var ve kullanıcı display.php?page=3 bakıyorsunuz diyelim. Ben kullanıcı bir POST isteği ile oylama gibi bir eylem yapmak ve sonra tekrar onlar vardı sayfaya getirmek için izin istiyorum. Yani, display.php?page=3 sayfası bilgisi de komut dosyası için kullanılabilir olacağını bir POST isteği yaparsanız?

3 Cevap

Basit bir cevabı 'evet'. Bir POST formu için başvuru URL olarak bir GET tarzı URL kullanabilirsiniz. PHP POST de var ve form gönderildiğinde olağan yollarla kendisine bilgi mevcut GET olacaktır.

Bu should bunu söylemek değil, ama işe yarayacaktır.

PHP, size özel küresel dizileri istek değişkenleri alabilirsiniz:

$_GET['page'] (for GET requests)
$_POST['page'] (for POST requests)
$_REQUEST['page'] (for either)

Eğer "Post sonra yönlendir" arıyor gibi geliyor, ben ayrı dosyalar halinde display.php ve vote.php ayıran öneririm. Oy şuna benzer:

<?php
//vote.php
$page_number = (int)$_REQUEST['page'];
vote_for_page($page_number); //your voting logic
header('Location: display.php?page=' . $page_number); //return to display.php

Körü körüne kabul sağlıksız form verileri uygulaması için tehlikeli olabilir unutmayın.

Edit: Bazıları hem davalarını $ _REQUEST kullanmak için kötü formu düşünün. Tehlike Bir POST beklediğiniz bir GET alırsanız bir hata işaret isteyebilirsiniz olmasıdır. Tipik görüntüleme için ayrılmıştır GET ve POST (create / güncelleme / silme işlemleri) değişiklikleri yapmak için ayrılmıştır. Bu gerçekten bir sorun olup olmadığını uygulamanıza bağlıdır.

Evet GET dizi bağımsız olarak daima talep yönteminin URL parametreleri ile doldurulur. Bu gibi basit bir sayfa ile deneyebilirsiniz:

<form action="test.php?a=b" method="post">
    <input name="a"/>
    <input type="submit"/>
</form>
<pre>
POST:
<?php print_r($_POST); ?>
GET:
<?php print_r($_GET); ?>
</pre>