PHP - Bir sayfadan uzun çıkmamış bir dize geçmek için?

5 Cevap php

I would like to pass a long string to a second page. Normally I pass short strings as variables

www.example.php?var=something&var2=somethingelse

Ben ikinci bir sayfaya uzun bir cümle geçer ve virgül ve kesme ile tire anlaşma ile tüm beyaz boşlukları değiştirmek zorunda değil istiyorum Tho bu durumda.

Is there a simple way to do this that Im missing? Do I have to re-query the database?

Teşekkürler

5 Cevap

urlencode veya http_build_query kullanın. Sonra mesajı çözmesi gerek yok.

base64 bir şifreleme değil, ve hemen her programcı nokta ve dönüştürebilirsiniz. Sen sayfadan sayfaya mesaj göndererek bazı güvenli yöntemi olarak bu röle olmamalıdır.

Eğer sadece untampered olmak istiyorsanız, siz de sunucu için gizli bir tuz ile, dize bir karma birlikte gönderebilirsiniz.

$salt = 'longsecretconstanttexthere'; 
$url .= '?' . http_build_query(array('text' => $str, 'hash' => md5($str . $salt));

Reciveing ​​sonu:

$str = $_GET['text'];
if ($_GET['hash'] !== md5($str . $salt)) {
  //not the original string
}

Gizli bir yöntem için, bir anahtar ile $ _SESSION metin veya db saklayın. Bir sonraki sayfada bu anahtar gönderir.

Taban 64 kodlamak ve diğer sayfa GET param aldığında sonra tekrar çözmek

$str = "I'm an obnoxious string, meh meh"
$str = base64_encode($str);

** Echo link **

Daha sonra alıcı sayfada

$str = base64_decode($_GET['str']);

$ _SESSION dizisini kullanabilirsiniz

Söz dize uzunluğuna bağlı olarak, veritabanı yöntemi, seans veya yerine GET veri göndermek için POST kullanarak bakmak isteyebilirsiniz.

GET sınırları vardır ve genellikle büyük miktarlarda veri geçmek anlamına gelmez, sen yeterince uzun, eğer dize kesilmiş olur durumların içine koşma sona erebilir.