Ben şu konuda çalıştırıyorum:
Bizim üyelerinin doğrudan http://www.example.com/membername
şeklinde bizim birincil etki kişiselleştirilmiş siteler için bir arzu var. Ben iki şekilde belki çözümler arıyorum ama ne (aşağıda izah edilecektir) idealdir.
Method 1 - ?Member=
Bu yöntemde, ben sadece özel bir URL oluşturmak ve üyenin veritabanı profilinde bilgileri saklamak. Örneğin: benim "özel" bir URL jm4 olmak istiyorsanız, benim sitesini ziyaret etmek için bir tüketici için, onlar yazmanız gerekir http://www.example.com?Member=jm4
.
Site, tabii ki, bir $_GET['Member']
üye bilgi arama yapar indeks sayfasından Oturumunda birincil veri depolayan, sonra bir ana yönlendirir. Tüketici artık URL Üyeliğini görüyor ama onlar sadece (her üyenin sayfası ancak özel bilgi var) başlatmak için üst etki alanını ziyaret sanki yerine www.example.com için tüm sayfa adlarını görür.
Bu yöntem çalışır iken aşağıdaki sorunları sunar:
- The URL is not nearly as easy as
/jm4
and any errors typing out the wildcard?Members=
will result in page error. Also, This method keeps that particular member's information in session (which is necessary browing from page to page on that particular member domain) and prevents somebody from simply typinghttp://www.example.com?Member=name2
to visit another site without clearing their session or closing the browser.
Method 2 - /membername
Tercih edilen yöntem, şu anda biz nasıl oluşturulacağını bilmek tek yolu elle bir alt klasörde bir dizin dosyası oluşturmak için ise, tüketici üyenin kişisel sitesini görüntülemek için izin daha sonra birincil dizin yönlendirmek.
I-www.example.com/jm4
ziyaret Örneğin, I içeren /jm4
klasör isabet am index.php. Bu dosya içinde sadece içerir:
<?php
session_start();
ob_start();
$_SESSION['AgentNumber'] = "779562";
header("Location: ../index.php");
exit;
?>
Birincil dizin ile bu tanır:
<?php
session_start();
ob_start();
if ($_SESSION['MemberNumber'] == NULL) {
header("Location:ac/");
exit;
}
$conn = mysql_connect("localhost", "USER", "PW");
mysql_select_db("DB",$conn);
$sql = "SELECT * FROM table WHERE MemberNumber = $_SESSION[MemberNumber]";
$result = mysql_query($sql, $conn) or die(mysql_error());
while ($newArray = mysql_fetch_array($result)) {
$_SESSION['MemberName'] = $newArray['MemberName'];
$_SESSION['MemberPhone'] = $newArray['MemberPhone'];
$_SESSION['MemberMobile'] = $newArray['MemberMobile'];
$_SESSION['MemberFax'] = $newArray['MemberFax'];
$_SESSION['MemberEmail'] = $newArray['MemberEmail'];
$_SESSION['MemberAddress'] = $newArray['MemberAddress'];
$_SESSION['MemberCity'] = $newArray['MemberCity'];
$_SESSION['MemberState'] = $newArray['MemberState'];
$_SESSION['MemberZip'] = $newArray['MemberZip'];
$_SESSION['MemberAltName'] = $newArray['MemberAltName'];
}
mysql_close($conn);
header("Location: home/");
exit;
?>
Biz kesinlikle üyesi için 'kolaylığı' bakımından ikinci yöntemi kullanın ama şu sorunları çalıştırıyorum tutmayı tercih ediyorum:
- We are forced to manually create a sub-folder and unique index.php file for each new member we onboard
- While the above probably could be automated (when new member creates profile, automatically generate php file and folder) but this is more complicated and we don't want to have 3000 subfolders on the primary domain.
Herkes benzer sorunları çalıştırmak mı? Eğer öyleyse, bunu çözme konusunda nasıl gitti? Yukarıdaki benim detaylara dayalı ne önerirsiniz? Herhangi bir tavsiye takdir edilmektedir.
Ayrıca - Mevcut SSL Wildcard için izin vermez çünkü alt etki alanı olarak kullanan (membername.example.com
) tercih edilmez.
EDIT 1 - EXISTING .HTACCESS FILE My existing .htaccess file on the site looks like this for reference:
ErrorDocument 404 /404.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteRule ^(.*)$ /?Member=$1 [L]