PHP POST veri ile başka bir web sayfasını açmak

8 Cevap php

Ben PHP için yeni ve ben kötü bir uygulama olabilir bir şey yapmak için çalışıyorum ve iyi imkansız olabilir. Ben temelde sadece bilgimi sınamak ve PHP neler yapabileceğini görmek için birlikte bir şeyler hack ediyorum.

Ben veri toplayan bir form ile bir web sayfası var. Bu işleme bir demet yapan bir PHP komut dosyası sunuldu - ama aslında önemli bir şey göstermez. Ne istediğiniz işlem yapılır kez, komut sonra sonuçları görüntülenir başka bir sayfa açmak için tarayıcı söyler olmasıdır.

Ben header('Location: page.php'); kullanabilirsiniz biliyorum ama ben bu ile POST verileri sağlamak için nasıl çalışmak olamaz. Bunu nasıl yapabilirim? Alternatif olarak, başka bir sayfa açmak için tarayıcı anlatmak için başka bir yol var mı?

EDIT: Ne yanıtları alıyorum o possible, çeşitli kesmek kullanarak bunu yapmak için ama ben sadece bir dosya işleme ve görüntü kod olması daha iyi olurdu olmasıdır. Ben mutlu değilim; Bu her şeyden daha bir deneme oldu.

8 Cevap

Bu işlem yapıldıktan sonra başka bir sayfayı çağırmak için gerçekten gerekli midir? Herhalde aşağıdakileri yapın ediyorum:

<form method="post" action="display.php">
...
</form>

display.php:

if ($_POST) {
    require_once(process.php);
    process($_POST);
    display_results;
}

sonrası isteği işlemek için gerekli kodu içeren process.php ile.

Alternatif olarak, kendiniz tarafından belirtilen bir sayfaya işleme sonuçlarını geçmek için cURL kütüphanesi gibi bir şey kullanabilirsiniz. Eğer olsa sonra ne konum gerçekten bilmiyorum.

Sen mesela oturumda bu verileri saklamak olabilir mesajı kolları ilk dosyada

session_start();
$_SESSION['formdata'] = $_POST; //or whatever

o zaman gibi bir sonraki sayfada okuyabilirsiniz

session_start();
print_r($_SESSION['formdata']);

(ancak yorumlarına göre bu kötü bir fikir): veya GET aracılığıyla geçebileceği

header('Location: page.php?' . http_build_query($_POST)); 

Eğer kötü niyetli bir kullanıcının değişkenleri değiştirebilir gibi page.php ek işleme / doğrulama yapmak emin olun yoksa. Ayrıca bir sonraki sayfada iletilen bütün yazı gerek olmayabilir

Edit

Ben sizin olsun yoluyla gönderebilirsiniz veri büyüklüğü ile sınırlı olarak ikinci seçenek, muhtemelen kötü ve kullanıcıların daha açıkçası verileri işlemek gibi muhtemelen daha az güvenli olduğunu düşünüyorum net yapmak gerekir.

Sen kirli iş çevrenizde olarak JavaScript kullanabilirsiniz:

<form id="redirect_form" method="post" action="http://someserver.com/somepage.php">
    <input type="hidden" name="field_1" value="<?php echo htmlentities($value_1); ?>">
    <input type="hidden" name="field_2" value="<?php echo htmlentities($value_2); ?>">
    <input type="hidden" name="field_3" value="<?php echo htmlentities($value_3); ?>">
</form>
<script type="text/javascript">
    document.getElementById('redirect_form').submit();
</script>

(Komut aşağıdaki formu olmalı)

Keyfi bir sayfaya kullanıcının tarayıcı yönlendirme ve bir POST isteği gönderdiği yolu yok. Yani herhangi bir bağlantı size olacakları hakkında ipucu her türlü olmadan keyfi bir siteye herhangi bir form gönderme yapmak için neden olabilir biraz güvenlik riski olacaktır.

Kısacası, bu mümkün değil

AFAIK bu genellikle iki aşamalı bir işlem olarak yapılır:

  1. Form.php üzerine, script process.php verileri POST
  2. Process.php komut verileri işler şey ama kendisi verir asla, her zaman ("Konum: asdasd") başlığını çağıran bir success.php veya failure.php sayfasına yönlendirmek için (eğer varsa)

Bir komut ve sonuçlar için sadece farklı çıkış HTML hepsini yapın.

<?php  if($doingForm)  {   ?>

html for form here

<?php } else { ?>

html for results

<? } ?>

Bu sorun, bir süredir beni tartışmalı oldu. Benim özel CMS bazı oldukça karmaşık işleme, yükleme ve manipülasyon yapar, ve bu yüzden bazen veri GET dönüştürmek için uygun değildir oldukça uzun hata ve bilgi mesajları, ouputs, ve ben her zaman veri INSERT yeniden sorunu önlemek istedim, ama var henüz yeterli bir çözüm bulunamadı.

Ben bu konuda gitmek için doğru yolu, her olası durum için mesaj diziler yaratmak olduğuna inanıyorum - her mesaj ya da görüntülemek istediğiniz ebil hata, ve sonra sadece uzun daha işlemek için çok daha kolay hata / mesaj numarasına göndermek gerekir veri dizeleri, ama ben biraz sıkıcı ve hantal bulmak gibi ben her zaman uzak şahsen yüzleşmekten kaçınıyor bir şey var. Açıkçası, bu muhtemelen sadece benim parçası üzerinde tembellik edilir.

I quite like the SESSION variable storage solution, but this raises the question of how do you ensure the SESSION data is properly destroyed? As long as you ensure you are only sending information (messages/errors) and not data that should/could be stored (and thus potentially sensitive) this should be an avoidable problem.


I hope i got your qestion right. You might try this:

  1. Bu gibi bakmak için form ayarlayın:

form method="POST" action="process_data.php"

2. Then you create the file process_data.php, wich surprisingly processes the data.
And in this file you use header:
For example:

$head = sprintf("page.php?data1=%d?data2=%d",$data1,$data2);
header($head);

Ben yardımcı olabilir umuyoruz.