Bir sorgu dizesi yerine oturumları nasıl kullanılır

4 Cevap

PHP Kullanımı .. Ben şu anda bir veritabanından veri gezinmek ve kapmak için bir sorgu dizesi kullandığı inşa edilmiş küçük bir uygulaması var. Veritabanındaki anahtar dize aynı zamanda ve bu artık kabul edilebilir değildir. Bunu değiştirmek gerekiyor. Ben db anahtarı gizlemek ve bunun yerine bir oturum kullanmak istiyorum ama bunu nasıl emin değilim. Aslında, mümkünse eğer oturumlarını kullanmak istiyorum sorgu dizesinde başka değişkenler de vardır.

page.php? var1 ve var2 & id = 1

Bu benim dize gibi görünüyor. Ben veritabanında sonuçları döngü yaşıyorum ve her satır id verdik böylece kullanıcı istediği satırı tıklattığında, ama ben bir seans ile bunu nasıl emin değilim ne zaman.

Herkes herhangi bir fikir var mı?

Teşekkürler

EDIT: I'm developing an email type system where senders and recipients are getting and sending mail. Each piece of mail that is stored on the server will have its own unique key. Currently, I am using that number to retreive the message but the problem is that I don't want people to change the number and read other people's mail. I can probably use a GUID for this or even some sort of hash but I really hate long query strings. I was just thinking it would be so much cleaner if there was a way to "hide" the id all together.

4 Cevap

UPDATED (Again ... Yeah, I know.)

Bir $ _GET parametresi ile belirli bir veri setine erişim sağlayan uygulamayı kullanıyor olur herhangi bir kullanıcı için çok daha erişilebilir.

UPDATED

Özel rekor anahtarı saklamak için, muhtemelen sonrası verileri kullanmak istediğiniz için gidiyoruz, ve gerçekten bir bağlantısı gibi bakmak istiyorsanız, her zaman o bölümü için CSS kullanabilirsiniz.

Dürüst olmak gerekirse, diğer insanların postayı okuyarak insanları durdurmak için en iyi yolu sadece X kişi (id) Y-posta erişmek mümkün olduğunu söylüyor bir ilişki tablo sahip gereğidir. Yani ya da e-posta 'sahibi' kim diyor bir alan var.

Aslında kullanıcılar yine POST parametrelerine erişim elde edebilir ve kolayca kendi POST parametreleri sahte olabilir. Bu da adlandırma düzeni bilselerdi kimse gerçekçi başkasının e-posta erişimi anlamına gelir.

İdeal bir sistemde, bir Sender, ve bir alıcı (Alıcı virgülle ayrılmış değerler olabilir) olacaktır. Sadece bu sütunlardan birinin üzerinde insanlar e-posta erişimi için izin verilmelidir.


How To Use Sessions (From Earlier)

İlk session_start () çağrı ile başlamak ve daha sonra önceki komut değişkenlerin için o kontrolünden sonra. Bunlar mevcut değilse, bunları oluşturmak. Böyle bir durumda, onları yakala ve bunları kullanmak.

session_start();

if(!isset($_SESSION['db_key']))
{
    $_SESSION['db_key'] = // generate your database key
}
else
{
    $db_key = $_SESSION['db_key'];
}

Oturumlar $ _SESSION dizi saklanır. $ _SESSION Kullanmak istediğinizde, session_start aramak için () FIRST ve sonra ondan istediğiniz şey atamak veya kapmak gerekir.

Eğer verileri yok etmek istediğinizde,) (session_destroy diyoruz;

Ayrıca Sessions üzerine php.net 'in bölümünü kontrol

Sizin soru bana çok açık değil, ama ben böyle anlıyorum:

Sen sayfada görüntülenen ediliyor ne karar vermek için bazı değişkenleri gerekir. Bu değişkenler URL aktarılmaktadır. Şimdiye kadar çok iyi, gayet normal. Şimdi bu değişkenleri gizlemek ve oturumda bunları kaydetmek istiyor?

Şu anda, her sayfa benzersiz bir URL var: Bu düşünün.

http://mysite.com/page?var1=x&var2=y

benzersiz bir sayfa görüntüler. Eğer yukarıdaki URL'yi ziyaret ettiğinizde, size aynı sayfayı alırsınız.

Ben doğru anlamak eğer, için soruyorsun, bir URL gibi kullanmak için

http://mysite.com/page

without variables, yet still get different pages? That's certainly possible, but that means you'll need to keep track of what the user is doing on the server. I.e. "user clicked on 'Next Page', the last time I saw him he was on page X, so he should now be on page Y, so when he's requesting the site the next time, I'll show him page Y."

Bunu yapmak için bir sürü iş var, ve kullanıcı geri düğmesini kullanmak başlarsa işler hızla garip alabilirsiniz. Ben bunun iyi bir fikir olduğunu sanmıyorum.

Eğer URL dışarı hassas bilgileri almak gerekiyorsa, (sağlamalarının) bir şekilde bunları karartmak veya kendileri tarafından herhangi bir anlamı yok alternatif değerleri kullanın.

Tamamen kullanıcı birkaç sayfa üzerinden veri birikimi varsa, Sessions Açıkçası gitmek için yoludur, elbette uygulanmasına bağlıdır. Eğer app ne yapıyor biraz daha açıklayıcı olabilir?

Edit:

ama sorun ben insanların sayısını değiştirebilir ve diğer insanların postayı okumak istemiyorum ki

Birincil endişe güvenlik ise, bu yine de bunu yapmak için yanlış bir yoldur. Bilinmezlik aracılığıyla güvenlik olacak iş değildir. Bir kullanıcı sadece doğru id tahmin değil ona güvenerek değil, ona göstermeden önce bilgi belli bir parça görmek için izin olup olmadığını açıkça kontrol etmeniz gerekir.

Php üzerinde $ _SESSION nasıl kullanılacağı hakkında bazı örnekler vardır.

Registering a variable with $_SESSION

S $ _GET veya $ _POST yerine bunu kullanmak için oturumları kullanarak sorun, bunu oturumda saklayabilirsiniz böylece kullanıcının giriş okumak için bir yol gerekir, ve bir sayfa yenileme tetiklemek için bir yol gerekir olmasıdır. Geleneksel araçları (Javascript kullandığınız sürece) varsayılan GET köprüler, veya formlar, POST için varsayılan yoluyla olmaktadır.

Belki ajax burada size yardımcı olacaktır. Kullanıcı bir forma bilgi veya bir onay kutusunu girin sonra, bu sayfayı yenileyin veya içeriği ile doldurmak için olsun, PHP bilgi eklemek ve geri bilgi göndermek için bir istek göndermek için JS kullanın.

Umarım bu yardımcı olur