PHP - Veri sonra "?"

7 Cevap

Ben başlığı çok net olmadığını biliyoruz. Ben PHP için yeni değilim, bu yüzden bu tür bir şey için isim olabilir, ben elimden olarak anlatmaya çalışacağım. PHP kullanarak Bazen bir URL, verilerin ardından soru işareti, orada olacak. Özür dilerim, bu çok noobish olduğunu biliyorum, ama ben bir öğretici ya da bir şey aramak için ne denir emin değilim. İşte ne demek olduğunu:

http://www.website.com/error%5Fmessages.php?error%5Fid=0

Nasıl (bu örnekte bir numara) sayısı ne bağlı olarak farklı metin görüntülemek için yapılandırabilirsiniz yok

Biri bunu nasıl bu denir söyle ve misiniz? Ben bir kaç gün PHP ile çalışan oldum ve ben kayboldum. Bu çok yeni olduğumu anlamak için çok çok teşekkür ederim.

7 Cevap

"Data" querystring URL, ve GET variables o HTTP isteği kodlar söyledi.

İşte sorgu dizeleri hakkında daha fazla bilgi bulunuyor: http://en.wikipedia.org/wiki/Query_string

PHP sizi $_GET "süper küresel" değişkeni ile bu erişebilirsiniz:

// http://www.website.com/error%5Fmessages.php?error%5Fid=0
// %5F is a urlencoded '_' character, which your webserver will most likely
// decode before it gets to PHP.
// So ?error%5Fid=0 reaches PHP as the 'error_id' GET variable
$error_id = $_GET['error_id'];
echo $error_id; // this will be 0

QueryString & karakteri ile ayırarak birden fazla GET değişkenleri kodlamak. Örneğin:

?error_id=0&error_message=Something%20bad%20happened

  • error_id => "0"
  • error_message => "Something bad happened"

Bu örnekte de alanlarda %20 olarak kodlanmış olduğunu görebilirsiniz.

İşte "yüzde kodlama" ile ilgili daha fazla bilgi bulunuyor: http://en.wikipedia.org/wiki/Percent-encoding

Soru işaretinden sonra veriler "sorgu dizesi" denir. Genellikle aşağıdaki biçimde verileri içerir:

param1=value1&param2=value2

Yani, anahtar-değer çiftleri listesi, ampersanı (&) karakteri ile ayrılmış her bir çift. Karakter kodunu temsil eden iki onaltılık karakter tarafından takip yüzde işareti (%) kullanarak: değerlere özel karakterler geçmek için, onlar URL-kodlama biçimi kullanılarak kodlanan gerekir.

PHP, sorgu dizesi yoluyla geçirilen parametreleri otomatik olarak süper küresel değişkeni kullanarak komut yayılır $_GET:

echo $_GET['param1']; // will produce "value1" for the example above.

Ham, işlenmemiş sorgu dizesi QUERY_STRING sunucu değişkeni alınabilir:

echo $_SERVER['QUERY_STRING'];

Bu sorgu dizesi denir.

PHP sizi superglobal $_GET üzerinden kendi veri erişebilirsiniz

Örneğin:

http://www.example.com/?hello=world

<?php

// Use htmlspecialchars to prevent cross-site scripting attacks (XSS)
echo htmlspecialchars($_GET['hello']);

?>

Eğer kullanabileceğiniz bir URL eklemek için bir sorgu dizesi oluşturmak istiyorsanız http_build_query() :

$str = http_build_query(array('hello' => 'world'));

Daha önce tarif edildiği üzere, ? sonra veri (ya da veri GET) sorgu dizesi, ve $_GET değişkeni kullanılarak erişilebilir. $_GET değişken sorgu dizesi olarak isim = değer çiftlerini içeren bir dizidir.

İşte $_GET bir breif açıklaması ve bunun bir örnek kullanımı:

http://www.w3schools.com/php/php_get.asp

Veriler ayrıca, vb şifreleri için kullanılan, ($_POST değişken bulundu) POST veri olarak bir PHP komut dosyası sunuldu olabilir, ve URL saklanmaz. $_REQUEST değişkeni POST ve GET verileri içermektedir. POST ve GET veri genellikle kullanıcı tarafından bir web formu girmeden kaynaklanan (ancak veriler de sizin örnekte olduğu gibi, bir adrese bir bağlantı doğrudan gelebilir GET). PHP web formları kullanma hakkında daha fazla bilgi burada bulunabilir:

http://www.w3schools.com/php/php_forms.asp

onun adı "sorgu dizesi"

ve $ _SERVER yoluyla almak ["QUERY_STRING"] olabilir

veya olabildiğince $ _GET döngü

Bu durumda error_id, sen böyle bir şey ile kontrol edebilirsiniz

echo $_GET['error_id'];

Aradığınız terim GET. Yani php sen ['deðiþken_adý'] $ _GET GET değişkenleri erişmek gerekir, örneğin, Örneğin size 0 değerini içerecek $ _GET ['error_id'] verdi. Daha sonra farklı bilgileri geri yankı mantık bu kullanabilirsiniz.

Soru işaretinden sonra biraz bir Query String denir. Biçimi, genellikle mutlaka her zaman olmasına rağmen, çiftleri bir ve işareti ile ayrılır (&) ve değerini bir eşittir işareti (=) ile adından ayrılır anahtar-değer çiftleri: ?var1=value1&var2=value2&... . Çoğu web programlama ortamlarının bu formatta ad-değer çiftlerini erişmek için kolay bir yol sağlar. Örneğin, PHP, bu anahtar-değer çiftleri bir ilişkisel dizi olan, bir superglobal var. Sizin örnekte, error_id üzerinden erişilebilir olacaktır:

$_GET['error_id']

Adını nedeni sorgu dizesi değişkenleri genellikle bir HTTP GET isteği ile ilişkili olan "GET". POST istekleri ise istemleri POST değişkenleri içeremez GET, çok GET değişkenleri içerebilir.

Sorunuzun geri kalanı için olduğu gibi, çeşitli şekillerde, hata kimliği basit varlık anahtarlama bir dizi metin sorunu yaklaşım olabilir:

$error_id = isset($_GET['error_id']) ? $_GET['error_id'] : 0;
switch($error_id) {
    case 1:
        echo "Error 1";
        break;
    default: 
        echo "Unknown Error";
        break;
}

ve daha karmaşık yolları bir dosya, veritabanı ya da ne var dan hata mesajı bakarak içerir.