Fotoğrafları ve albümleri görüntülemek için geçici izin

3 Cevap php

Ben bir galeri web sitesi yapıyorum. Fotoğrafları ve albümleri varsayılan olarak halktan gizli olması gerektiğini, ama isterse sahibi kamu URL paylaşabilirsiniz. Ben de bu kısa URL'ler kullanmak istiyorum.

Bunu yapmak için en iyi yolu anlamaya çalışıyorum. İlk başta ben kısa URL kodu (Zneg8rjK gibi bir şey), ve tam URL ile bir MySQL tablo var sandım (/album/5/). Ne zaman kullanıcı ziyaret bu linki (mysite.com/Zneg8rjK) sadece /album/5 bir karma artı bir tuzdur, ve sonra tam URL onları yönlendirmeleri bir oturum değişkeni ayarlamak olacaktır. Sonra bu sayfada sadece geçerli sayfayı anmak ve onların seansta veya değilse kontrol edebilirsiniz. Sorun yok ... ama o albümde bir fotoğrafın üzerine tıklayın ne olur? Ayırır.

Yani, ben düşündüm sonraki çözüm Ben her albüm ve her fotoğrafın bir gizli anahtarı saklamak, ve sonra /album/5/secretkey gibi bir genel adresi olması gerektiğini oldu. Kısa URL yerine sadece bu işaret olabilir. Ama sonra nasıl albümdeki tüm fotoğrafları görüntülemek için izne kullanıcıya veriyorsunuz? Ben sadece yerine fotoğraf URL gizli sürümüne işaret Her fotoğrafı bağlantı, ancak gerekir onlar gizli albüm URL yoluyla albüm erişilen yalnızca? Benim endişe 'Ben, kullanıcıların yanlışlıkla onlar olmamalıdır insanlarla paylaşmak kalmamak mümkün olduğunca adres çubuğunun dışına gizli anahtarlar / URL'leri tutmak istiyorum ... ama orada öyle değil eğer büyük bir endişe değil olmasıdır Daha iyi çözümler t.

Düşünceler?


Bir saniye bekle, ben bile URL karma gerekiyor? Müşterileri oturum değişkenlerini değiştirmek için hiçbir yolu orada mi?

3 Cevap

Ben bu izinleri kontrol nasıl biraz bağlıdır sanırım - Ben bütün albüm için bir anahtar, ve bireysel fotoğrafları için bir tuşa sahip öneririm.

Yazının ilk bölümünde yönlendirme şey aslında sadece 2 geçerli seçenekler karşı oturumda verilen anahtarını kontrol etmek olurdu, benim için o kadar da kötü gelmiyor - tek fotoğraf için bir tane, ve albüm için bir o o fotoğrafı içerir. Ya bir doğrular varsa, (bunun yerine 'yıkmak' ve) fotoğrafını gösteriyor.

Bu yardımcı olur umarım!

Muhtemelen yapmak istersiniz yukarıdaki kişi gibi iki anahtar söyledi. Sen yerine kısa URL karma dahil muktedir olmalıdır mysite.com / hashhere gibi bir URL geçiyor erişimini kısıtlamak istemeyebilirsiniz, bu yüzden ne olursa olsun onlar ne gitmek linki sağ karma varsa, onlar bunu görebilirsiniz .

Hatta daha güvenli hale getirmek için, galerinin sahibine onlar kullanıcılar ile paylaştı ve birisi kamu URL veya tekrar aşağı kilitlemek şey nakleder gibi de öylesine karma anahtarını yenilemek için seçeneği sunar.

Tamam, ben ne yapıyorum:

$result = mysql_safe_query('SELECT * FROM short_urls WHERE short=%s', $_GET['p']);
if(mysql_num_rows($result)> 0) {
	$url = mysql_fetch_assoc($result);
    $_SESSION['permissions'][$url['long']] = true;
    redirect($url['long']);
}

Bu bir oturum değişkeni izni kaydeder ve uygun sayfaya kullanıcıyı yönlendirir. Ardından fotoğraf sayfasında bunu:

if(array_key_exists('/photo/'.$photo_id, $_SESSION['permissions'])
    || array_key_exists('/album/'.$photo['album_id'], $_SESSION['permissions'])) {
    $can_see = true;
}

Ama hala bu konuda hissediyorum nasıl emin değilim. Ne benim kısa URL işaret etmek istediğiniz yolda bir noktada eğer /photo/5/some_other_param? Bu doğru kullanıcıyı yönlendirmek, ancak izinleri dizide yanlış değişkeni saklamak olacaktır. Ben ne yapmalıyım eh, bu izinler diziye koymak gerektiğini tam olarak ne belirten benim short_urls tabloya başka bir sütun eklemek sanırım?


Aslında sanırım daha iyi zaten bu çözüm gibi. Bu şekilde her kısa URL bile izinlerini ayarlamak zorunda değil. Yeni kodu:

if(isset($url['perm_key'])) $_SESSION['permissions'][$url['perm_key']] = true;