URL'ler üzerinden değişken bilgisi geçen Alternatif

2 Cevap php

Ben birkaç farklı tablo kullanan bir PHP / MySQL app yazıyorum.

Tablo 1 mağaza kullanıcı bilgileri (isim e-posta vb), Tablo 2 mağaza, kullanıcıların widget'lar ve Tablo 3 mağaza bu bireysel widget'ların yapılandırma.

Im Bunu yapmanın yolu artık, Tablo 1 i bu özel kullanıcı idenfity için kullanabileceğiniz bir otomatik artış anahtarı sahiptir. Onlar tablo 2 eriştiğinizde, bu tablolar kullanıcı kendi widget'lar ayarlarını ayarlamak istiyor Tablo 1. Gelen, belirli bir kullanıcının anahtar kimliği, hem de anahtar kimliği bir "uid", sahibi bu içeren bir satır oluşturur Tablo 3, i tablodan 2 benzersiz widget kimliği bir "cxid", ya da yapılandırma xid, dediğimiz saklar.

Bunun amacı widget ne kullanıcıları tarafından görülür ne sınırlamak ve yapılandırma açıkçası yapılandırma amaçlı kullanılır.

Sorun im bir birey widget'lar çağrılırken, bu URL uid geçer olmasıdır. Bunu değiştirmek ve diğer insanların widget görebilirsiniz gibi bu tabii bir güvenlik sorunudur. Ama bile kimse bu yapılıyor bilmek istemiyorum. Komut URL kullanarak değil, aynı zamanda formları kullanarak değil arasındaki değişkenleri geçen herhangi bir yolu var mı?

2 Cevap

Evet, kullanabilirsiniz sessions.

Temel olarak, $_SESSION için kullanıcı hakkında gerekli tüm bilgileri saklamak ve her sayfa yük bilmemekteyiz.

Örneğin, ilk sayfa yük:

session_start();
$_SESSION['uid'] = 123;

Varsayılan olarak, kullanıcı oturumunu belirleyici bir çerez aldığınızda, ama başka hiçbir bilgi içeren olacaktır.

İkinci sayfa yük üzerinde, diyebiliriz:

session_start();
$x = $_SESSION['uid'];
//$x is now 123
//run a query here!

session_start(), kullanıcının çerez okuyacak (geçici dosya konumunda depolanan varsayılan) oturum bilgilerini bulmak ve bunları son gördüğümde saklanan bilgilerle $_SESSION doldurun.

Bu oturumları kullanarak PHP sayfaları arasında etrafında bilgi aktarmak mümkün, ama bir form post veya URL, sen yolu ile olan kullanıcı (onlar görmek istediğiniz widget / cxid yani) den bilgi almak için tek yol şimdi bunu yapıyor.

Eğer gerçekten kullanıcı için istedi widget'ı görüntülemeden önce uygun denetimi yapmak gerekir.

Birincisi, zombat zaten yazmış gibi bir oturumda kullanıcı kimliği saklayın.

Sonra gibi bir şey yapabilirsiniz:

$result = mysql_query("SELECT cxid, uid FROM table2 WHERE cxid = '42'");
$row = mysql_fetch_row($result);    
if ($_SESSION['uid'] == $row['uid'])
{
    // display widget info
}
else
{
    echo 'Sorry you can only view your own widgets!';
}