Soru - Cevap Bölümü
/ Kategori: Programlama
01/03/2005 - 21:37:24 cevap (5) Okunma : 8362 Bu yazıyı 0 kişi tuttu.
url'den geçirilen bilgide türkçe karakter sorunu
merhaba, sunucu taraflı doğrulama özellikli bir kayıt sayfası oluşturdum. Her şey tıkır tıkır.
aynı sayfayı başka adla kaydedip, kullanıcının bilgilerini değiştirmesi için bazı değişiklikler yaptım. Örneğin kullanıcı adı ve şifre ile kayıt sayfası çağrılıyor ve o kullanıcıya ait bilgiler veritabanından çekilip kayıt sayfasında görüntüleniyor. Kullanıcı değişiklikleri şartlara uygun yaparsa yine sorun yok. ilgili kayıt güncelleniyor. Ancak şartlardan biri ya da bir kaçı olumsuzsa kontrol sayfası kayıt sayfasından aldığı bilgileri url aracılığı ile geri kayıt sayfasına gönderiyor. ve sorun burada başlıyor. (ben sayfayı düzeltmek için bazı değişiklikler yaptıkça) bazen türkçe karakter içeren bilgiler kayıt sayfasına bozuk dönüyor. (örneğin ad alanındaki eşref bilgisi kontrol sayfasından e_ref şeklinde dönüyor.) bazen de aşağıdaki hata mesajı ile karşılaşıyorum:
Parameter 1 of function IsDefined, which is now "g�", must be a syntactically valid variable name.
hatanın işaret ettiği kod bölümü ise:
<cfset a_ad = #form.ad#>
<cfif len(#form.ad#) lt 3>
<cfset add = 0>
<cfelse>
<cfset add = 1>
</cfif>
Aslında url’den geçirilen bilgiler bozuma uğramasa bütün bu sorunlar olmayacak. Bunu sağlamanın bir yolu var mı? Lütfen yardım.
Cevaplar
( Faydalı Cevapları Göster )
merhaba, session değişkenlerini kullanınca türkçe sorunu ortadan kalktı. Ama meteikosun önerdiği kodlar url değişkenleri için işe yaramadı. Sanırım benim cf ayarlarında bir sorun var.
tek bir sorun kaldı ki o da e-posta adresinin görünüp görünmemesini sağlayan bir checkbox(cb) sorunu. kontrol sayfasında yazdığım kod aşağıda:
<cfif #form.onay_ePosta# eq 'on'>
<cfset session.kayit1.onay_ePosta = 1>
<cfelse>
<cfset session.kayit1.onay_ePosta = 0>
</cfif>
kontrol sayfası şartlara uymayan verilerin olması durumunda verileri kayıt sayfasına döndürüyor. dolayısıyla checkbox’ın değeri kayıt sayfasında onaylanmışsa onaylanmış olarak, onay kaldırılmışsa da kaldırılmış olarak döndürülüyor. Buraya kadar sorun yok. Sorun verilerin tamamının şartlara uygun olması ve update kod bloğunun çalışması sırasında oluşmakta.
Hataya ilişkin raporlar aşağıda:
Error Executing Database Query. …onay_ePosta = 1’ sorgu ifadesi içindeki Sözdizimi hatası (eksik işleç)
The error occurred in ..\kayitKontrol2.cfm: line 141
141 : onayePosta = #session.kayit1.onayePosta# 142 : </cfquery> 143 : </cfif>
Yardımcı olursanız minnettar kalırım.
Ne yalan söyleyeyim sorunu anlayamadım ancak, 1,0 yerine True ve False’ı kullanması tavsiye ederim kolay gele
ColdFusion MX sürümlerindeki <cflocation> etiketinde bir sorun bulunuyor. Bu sorun nedeniyle içerisinde Türkçe karakterli bir metin içeren bir url stringini cflocation’da kullandığınızda karakterler bozulabiliyor. Aynı sorun ColdFusion 7’de de olabilir (ki var galiba, az önce denedim). Yanlış hatırlamıyorsam <cflocation> etiketi verdiğiniz url stringini geriye-uyumluluk nedeniyle otomatik olarak utf-8’e dönüştürmüyor… Bu işlemi elle yapmalısınız.
Yani:
<cflocation url="ikinci_sayfa.cfm?param1=ıişŞğĞ" />
ifadesi Türkçe karakterlerin bozulmasına neden oluyor. Doğru kullanım ise
<cflocation url="ikinci_sayfa.cfm?param1=#URLEncodedFormat('ıişŞğĞ','utf-8')#" />
URLEncodedFormat fonksiyonunu zaten bu tür url üretimlerinde (<cflocation>‘da <a href=’‘ ../> etiketinde vb) mutlaka kullanılmalıdır. Çünkü url stringleri Türkçe karakter haricinde başka karakterlerde de problem çıkarabilirler (örn. boşluk karakteri)
URLEncodedFormat‘ın aslında opsiyonel olan ikinci argümanı olan UTF-8 encoding değerinin setEncoding ile belirlediğiniz URL encoding’iyle aynı olmasına özen gösteriniz.
Normal şartlarda setEncoding’i kullanmanız gerekmez ve dolayısıyla CF varsayılan olarak UTF-8 kullanır, fakat (özellikle CF 6.1 kullanıyorsanız) URLEncodedFormat fonksiyonunda ikinci argüman ile UTF-8’i belirtmeniz gerekir! (bu cümleye dikkat).
Söylenebilecek bazı şeyler daha var, ancak talep oluncaya kadar burda kesiyorum. kolay gelsin.
Etkinlikler
Toplantı
Kahraman ve need4code.com Projesi Connect Toplantısı
Kahraman ve need4code.com Projesi Connect Toplantısı
Selam arkadaslar,
Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori:
Toplantı
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 358 (0 kayıtlı, 358 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız









:) aslında tam olarak anlamadım sorunu ancak şöyle bir çözüm getireyim istedim. Bilgileri URL den göndermek yerine SESSION faaliyet alanında saklarsan sanırım sorunun olmayacaktır. bu tür bilgi güncellemesi olan bir uygulama yaptığımı hatırlıyorum, ve bu tür bir sorunla karşılaşmadım. sayfanın başlangıcında
şeklide bir tanımlama yap. eğer içinden çıkamazsan. tam olarak neler yapıldığını anlatırsan sana daha ayrıntılı olarak yardımcı olmak isterim.