Problem:
Ben içerik verilen id göre gösterilmektedir PHP dinamik sayfaları var. Id her zaman bir GET parametresi aracılığıyla teslim edilir:? Page.php id = X Bu bir soruna neden olur: Site ziyaretçileri kimlikleri numaralandırmak ve sadece tüm farklı içerik sayfaları üzerinden yürüyebilir. Bu, tabii ki, mümkün olmamalıdır.
How could this be solved?
Benim yaklaşım daha sonra bir GET parametre olarak kullanılan bağlantıları ve formlarda tüm kimlikleri kodlamak için olduğunu. Her sayfanın başında verilen id veritabanında kullanılan "gerçek" kimliği içine çözülür. Bu iyi bir yaklaşım mı? Eğer başka bir yol seçmek istiyorsunuz?
Possible solution of my approach:
Ben bir baz 38 tamsayı tamsayı id dönüştürmek ve belirli bir liste karakterleriyle basamak yerini alacak. Ben kodlanmış dize kimliği için bu karakterleri kullanırsınız:
a-z 0-9 - _
Siz de diğer karakterler kullanabilir misiniz? Bu karakterler için benim senaryom bu olurdu:
function id2secure($old_number) {
$alphabet_en = array(0=>'1', 1=>'3', 2=>'5', 3=>'7', 4=>'9', 5=>'0', 6=>'2', 7=>'4', 8=>'6', 9=>'8', 10=>'a', 11=>'c', 12=>'e', 13=>'g', 14=>'i', 15=>'k', 16=>'m', 17=>'o', 18=>'q', 19=>'s', 20=>'u', 21=>'w', 22=>'y', 23=>'b', 24=>'d', 25=>'f', 26=>'h', 27=>'j', 28=>'l', 29=>'n', 30=>'p', 31=>'r', 32=>'t', 33=>'v', 34=>'x', 35=>'z', 36=>'-', 37=>'_');
$new_number = '';
while ($old_number > 0) {
$rest = $old_number%38;
if (!isset($alphabet_en[$rest])) { return FALSE; }
$new_number .= $alphabet_en[$rest];
$old_number = floor($old_number/38);
}
$new_number = strrev($new_number);
return $new_number;
}
Additional question:
Ne benim fonksiyon için ters fonksiyonu olacaktır?
Bana yardımcı olur umarım. Teşekkür ederiz!