GET, PHP ve işareti

2 Cevap php

Ben MySQL başlık ve bir açıklama gönderme ve fotoğraf yükleyebilirsiniz bir sayfaya kullanıcı yönlendirme, yeni bir fotoğraf galerisi oluşturur basit bir formu var.

Ampersan denklemi girene kadar her şey iyi çalıştı. Bilgiler daha sonra veritabanına girişi gönderen bir PHP sayfası bir jQuery kalıcı iletişim gönderilir. Ajax başarıyla tamamlandıktan sonra, kullanıcı bunu yükleyerek ne albümü sayfasını anlatmak için bir GET URL ile yükleme sayfasına gönderilir -

$.ajax ({
    type: "POST",
    url: "../../includes/forms/add_gallery.php",
    data: $("#addGallery form").serialize(),
    success: function() {
        $("#addGallery").dialog('close');
        window.location.href = 'display_album.php?album=' + title;
    }
});

Başlık bir işareti varsa, yükleme sayfasında Başlık alanı düzgün görüntülenmez. GET işareti kaçmak için bir yolu var mı?

Teşekkürler

2 Cevap

Genel olarak size URL'lerin parça olarak geçerken tamamen alfanümerik değil URL-encode şey isteyeceksiniz.

URL-kodlama olarak, & %26 ile değiştirilir (nedeniyle 0x26 = 38 = ASCII kod &).

Javascript Bunu yapmak için, işlevini kullanabilirsiniz encodeURIComponent :

$.ajax ({
    type: "POST",
    url: "../../includes/forms/add_gallery.php",
    data: $("#addGallery form").serialize(),
    success: function() {
        $("#addGallery").dialog('close');
        window.location.href = 'display_album.php?album=' + encodeURIComponent(title);
    }
});

Bu escape has the disadvantage that + kodlanmayan ve bir alan olarak serverside deşifre edilecektir ve bu nedenle kaçınılmalıdır Not (source).

Eğer PHP seviyesinde bu serverside yapmak isterseniz, fonksiyon urlencode kullanmanız gerekir.

window.location.href = 'display_album.php?album=' + encodeURIComponent(title);

Javascript escape fonksiyonu bu karakterleri kodlamak değil: * @ - _ +. /. Eğer gibi bir başlık var ise, artı işareti bir alan olarak yorumlanır ve PHP "bu" gibi değişken alacaksınız "Bu o +".

Ayrıca aşağıdaki karakterleri kodlar encodeURIComponent Kullanımı: /? : @ & = + $ #