Bir dize değişkeni bir URL olduğunda PHP nasıl parse_url olabilir?

2 Cevap php

Ben kuşkusuz bir PHP acemi am, bu yüzden biraz yardıma ihtiyacım var.

Benim site için bir öz-tasarlanmış ortaklık programı oluşturma ve izleme için kendi bağlantısını bir subId eklemek için bir ortaklık için seçeneğiniz var duyuyorum. Girilirse ne üzerinde kontrole sahip olmadan, farklı senaryoları test edilmiş ve tam bir URL (yani "http://example.com") girildiğinde bir hata buldum.

Benim PHP ben dizeden hiçbir sorun değişkeni yakalayabilir. Benim sorunum atıfta URL almak ve (diğer kullanımlar için konak yele almak için atıfta URL ayrıştırmak gerekir çünkü) bunu ayrıştırmak zaman geliyor. Aşağıdaki kodu:

$refURL = getenv("HTTP_REFERER");

$parseRefURL = parse_url($refURL);

WORKS bağlantı gelen (örneğin):

http://example.com/?ref=REFERRER'S-ID&sid=www.test.com

HATA zaman ("sid =" sonra "http://" eklenmesini haber) linki edilir gelen:

http://example.com/?ref=REFERRER'S-ID&sid=http://www.test.com

Burada uyarı mesajı:

Warning: parse_url(/?ref=REFERRER'S-ID&sid=http://www.test.com) [function.parse-url]: Unable to parse url in /home4/'directory'/public_html/hosterdoodle/header.php on line 28

Herhangi birisi bir değişken bir URL yere karar verebilirsiniz zaman atılır olmaktan ayrıştırma-url işlevi tutmak için nasıl bir fikir? (Ben aslında ile hata atmak olacağını noktaya kadar bu sorunu test değişkeninde ":/" gibi küçük)

2 Cevap

Aşağıdaki kod bölümü:

$url = "http://example.com/?ref=REFERRER'S-ID&sid=http://www.test.com";
$data = parse_url($url);
var_dump($data);

Benim için iyi çalışıyor (PHP 5.3.2), ve aşağıdaki çıktıyı verir:

array
  'scheme' => string 'http' (length=4)
  'host' => string 'example.com' (length=11)
  'path' => string '/' (length=1)
  'query' => string 'ref=REFERRER'S-ID&sid=http://www.test.com' (length=41)


Are you sure that you're passing a full URL to parse_url ?

Ben bu kod bölümünü kullanırsanız:

$url = "/?ref=REFERRER'S-ID&sid=http://www.test.com";
$data = parse_url($url);

Ben senin gibi aynı uyarı alıyorum:

Warning: parse_url(/?ref=REFERRER'S-ID&sid=http://www.test.com) 
[function.parse-url]: Unable to parse URL

Tam bir URL geçen zaman değil ama bu ...

Neden str_replace http:// dışarı şerit kullanarak $refURL sterilize değil?